HTML to Markdown Converter

Paste HTML — or copy rich text straight from a web page, Google Doc or email — and get tidy Markdown you can drop into a README, wiki or static site.

Runs in your browser
0 characters
Markdown
0 characters

Your data never leaves your computer. All processing happens 100% locally in your browser.

How to use the HTML to Markdown

  1. Paste HTML source into the left pane — or copy formatted text from a web page or document and paste it; with “Paste rich text as HTML” on, the formatting is kept.
  2. Choose your preferred Markdown flavour: heading style, bullet marker, code block style and inline or reference links.
  3. Keep GFM on to convert <table>, <del> and checkbox lists into GitHub-flavoured Markdown.
  4. Copy the result or download it as a .md file.

What is an HTML to Markdown converter?

An HTML to Markdown converter reads HTML elements and rewrites them in Markdown's plain-text syntax: <h2> becomes ## , <strong> becomes **…**, <a href> becomes [text](url). It's the quickest way to move content from a CMS, an old blog or a web page into a Git repository, a static site generator (Hugo, Jekyll, Astro, Docusaurus), a wiki or a note-taking app such as Obsidian. This tool uses the open-source Turndown library with its GFM plugin, and runs entirely in your browser.

Copying from web pages, Google Docs and Word

When you copy text from a browser or an office app, the clipboard holds an HTML version alongside the plain text. With Paste rich text as HTML enabled, pasting into the left pane inserts that HTML, so headings, bold text, links and lists survive. Turn it off if you want to paste raw HTML source code exactly as copied from a code editor.

Example

<h2>Install</h2>
<p>Run <code>npm i</code>, then
read the <a href="/docs">docs</a>.</p>
<ul>
  <li>Fast</li>
  <li><em>Small</em></li>
</ul>

becomes

## Install

Run `npm i`, then read the [docs](/docs).

-   Fast
-   _Small_

Turndown pads list markers to a four-character indent so nested lists and multi-paragraph items line up correctly in every Markdown parser.

Options explained

OptionChoicesWhen to use
Headings# ATX or Setext (===/--- underline)ATX is the common default; Setext only exists for h1 and h2.
Bullet marker-, *, +Match your project's linter (markdownlint rule MD004).
Code blocks``` fences, ~~~ fences, 4-space indentFences keep the language (from class="language-js"); indented blocks cannot.
LinksInline or reference-styleReference links keep long URLs out of paragraphs and list them at the end.

What doesn't convert

Markdown has no syntax for colours, fonts, column layouts, forms or merged table cells. Styling is dropped, <script> and <style> blocks are removed, and tables without a header row are kept as HTML, since GFM tables need a header and only support simple single-line cells — merged cells (colspan/rowspan) can't be represented. Clean messy markup first with the HTML Formatter, and check the result with the Markdown to HTML converter.

Tools that pair well with the HTML to Markdown

  • HTML Entity Encoder — Escape < > & " so text is safe to show in HTML, convert accents and symbols to named or numeric entities, or decode entity-filled HTML back to plain text.
  • Diff Checker — Paste an original and a changed version to see added, removed and modified lines side by side — with the exact words that changed highlighted inside each line.
  • Word Counter — Paste or type your text to count words and characters live — plus reading and speaking time, keyword density and length checks for SEO titles, meta descriptions and social posts.
  • CSS Formatter — Turn a minified stylesheet into readable CSS with one property per line and properly nested @media blocks.

Frequently asked questions

Is my HTML sent to a server?
No. Turndown runs in your browser and parses the HTML with the browser’s inert DOMParser, so scripts in the pasted HTML are never executed and nothing is uploaded.
How do I convert a whole web page to Markdown?
Select the article text on the page, copy it, and paste it here with “Paste rich text as HTML” on. Alternatively view the page source, copy the relevant HTML and paste that. Navigation menus and footers are best left out of the selection.
Why is my table still HTML?
GitHub-flavoured Markdown tables must start with a header row. Tables without one (no <th> or <thead>) are kept as HTML, which most Markdown renderers accept. Merged cells, nested tables and lists inside cells cannot be expressed in GFM at all.
Which bullet marker should I choose?
All three are equivalent in CommonMark. - is the most common choice and the default of Prettier; pick whatever your project’s style guide or markdownlint configuration expects.
Are images converted?
Yes. <img src="a.png" alt="Logo"> becomes ![Logo](a.png), including the title attribute if present. Image files themselves are not downloaded.

Related tools