How to use the HTML to Markdown
- 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.
- Choose your preferred Markdown flavour: heading style, bullet marker, code block style and inline or reference links.
- Keep GFM on to convert
<table>,<del>and checkbox lists into GitHub-flavoured Markdown. - Copy the result or download it as a
.mdfile.
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
| Option | Choices | When 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 indent | Fences keep the language (from class="language-js"); indented blocks cannot. |
| Links | Inline or reference-style | Reference 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?
How do I convert a whole web page to Markdown?
Why is my table still HTML?
<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?
- is the most common choice and the default of Prettier; pick whatever your project’s style guide or markdownlint configuration expects.Are images converted?
<img src="a.png" alt="Logo"> becomes , including the title attribute if present. Image files themselves are not downloaded.