HTML to Markdown Converter

Paste HTML on the left (copied from a CMS, email, Word, or any web page) and get clean CommonMark on the right. Headings, lists, tables, code, blockquotes, links, images, and embeds handled. Live, in your browser, no upload.

Headings
Emphasis
Bullet
Fence
Links
Markdown output
Paste HTML to see Markdown.

Tip: paste from any source — Word, Google Docs, Outlook, a CMS, or your browser's "view source". Embeds (<iframe>, <video>, <picture>) pass through unchanged so you can re-embed them downstream.

Bulk mode one HTML snippet per blank-line gap · split outputs into TSV columns
0 snippets
How the converter works
  • The page parses your HTML with DOMParser and walks the resulting tree in document order. We deliberately avoid regex scraping — only a tree walk survives nested lists, deeply nested formatting, and inline spans.
  • Headings render as ATX (# H1) by default; h1 and h2 can switch to setext (H1\n=====) via the Headings option. h3–h6 always fall back to ATX because setext has only two levels.
  • Inline emphasis uses _italic_ and **bold** by default (the same convention as GitHub-flavoured Markdown). Switch to asterisks via the Emphasis option.
  • Code fences auto-size to avoid collisions with the content: if your code contains ``` blocks, the fence grows to ```` or wider.
  • Tables become GFM pipe tables with per-column alignment read from the align attribute or style="text-align:…". Cell pipes are escaped (\|).
  • Embeds (<iframe>, <video>, <audio>, <picture>, <embed>, <object>) pass through as raw HTML so you can re-embed them. Toggle off with Keep embeds to render them as plain text.
  • References: switch Links to References to emit [text][ref1] with the URL list at the bottom. Duplicates are deduplicated.
  • HTML comments are dropped by default. Toggle Keep comments to round-trip them as <!-- … --> blocks.
  • Nothing is uploaded. The whole conversion runs in this tab. Bulk mode copies the result via the clipboard, no server touched.