Skip to content
100% in your browser. Nothing you paste is uploaded — all processing runs locally. Read more →

HTML → Markdown

Paste HTML on the left, get clean Markdown on the right. Works with pasted Word docs, Google Docs, web pages, anywhere HTML lives.

🔒 100% client-side · paste anything · nothing uploaded

What this is for

The most common use cases:

What gets converted

Turndown handles every common HTML tag with sensible Markdown equivalents:

HTMLMarkdown
<h1>…<h6># … through ###### …
<strong> / <b>**bold**
<em> / <i>*italic*
<del> / <s>~~struck~~
<a href>[text](url)
<img src alt>![alt](src)
<ul> / <ol>- item / 1. item
<blockquote>> text
<pre><code>```\n...\n```
<code> (inline)`code`
<table>GFM table
<input type="checkbox">- [x] task
<hr>---

What doesn't convert cleanly

Microsoft Word and Google Docs specifically

When you copy from Word or Google Docs and paste into a text area, the clipboard contains HTML alongside plain text. The browser puts the plain text in the textarea by default, so you'll see Word's text without formatting.

To paste the HTML version: in most browsers, Edit → Paste Special → HTML, or paste into a contenteditable field on this site (we don't have one yet — coming in a future update). Or copy from Word and paste into a free online "extract HTML from clipboard" tool first.

Word's exported HTML is famously cluttered — Microsoft adds mso-* styles, <o:p> tags, and Office namespaces. Turndown handles the structural tags fine; the cosmetic markup gets dropped.

Programmatic alternative

// JavaScript / Node
import TurndownService from "turndown";
import { gfm } from "turndown-plugin-gfm";

const td = new TurndownService();
td.use(gfm);
const md = td.turndown(htmlString);

// Python
# pip install markdownify
from markdownify import markdownify
md = markdownify(html_string, heading_style="ATX")

// CLI (pandoc, supports many input formats)
pandoc input.html -o output.md

FAQ

Can I paste from Microsoft Word or Google Docs?

Yes — both copy as HTML when you paste into the text area. Word's HTML is messy (lots of inline styles and mso- classes), but Turndown extracts the structural tags and produces clean Markdown.

Does it handle tables?

Yes. The 'Tables' option (on by default) uses turndown-plugin-gfm to convert <table> to GFM table syntax (pipes and dashes). Complex tables with rowspans / colspans get flattened — Markdown tables don't support spans.

Will it convert the entire web page if I paste a URL?

No — paste actual HTML, not a URL. To convert a live page, View Source (Ctrl-U / Cmd-Opt-U), copy the body HTML, and paste here. For a richer 'fetch and convert' workflow, use pandoc or turndown in a CLI.

What's the difference between heading style options?

ATX uses # prefixes — universally supported, what most modern Markdown looks like. Setext underlines headings with === or --- — older style, only supports H1 and H2. ATX is recommended.

Why does pasted Word content have extra blank lines?

Word inserts <p>&nbsp;</p> between paragraphs. Turndown converts those to blank lines. After pasting, scan the output and remove unintended blanks. Or paste the Word content into a plain text editor first to strip formatting.