HTML to Markdown
Convert HTML to clean Markdown live — correctly numbered & nested lists, GFM tables, strikethrough, numeric entities, and code fences.
About this ToolHow it works, benefits & use casesTap to collapse
Turn a chunk of HTML into clean, readable Markdown without copying tags by hand. This HTML to Markdown converter walks your markup and rewrites it: headings become #-prefixed lines, <strong>/<b> and <em>/<i> become **bold** and *italic*, <del>/<s>/<strike> become ~~strikethrough~~, anchors become [text](href) links, and images become Markdown image syntax. It correctly numbers ordered lists and handles nested lists by indenting children, converts <table> markup into GitHub-flavored Markdown tables, turns code blocks into fenced ``` blocks (keeping the language hint when present), and decodes both named and numeric HTML entities such as &, é, and ↗. The Markdown regenerates live as you edit, with a stats line counting lines, headings, and links. Load the built-in example to see tables, nested lists, strikethrough, and entities handled at once. It runs entirely in your browser — no upload, no sign-up.
How to Use
- 1Paste your HTML into the input box, or click Load example to load a sample with a heading, table, nested list, and entities.
- 2The Markdown regenerates live as you type — the stats line shows line, heading, and link counts.
- 3Press Convert to Markdown to confirm the result and surface any conversion error.
- 4Review the output: ordered lists are renumbered, nested lists indented, tables converted to GFM pipe syntax, and entities decoded.
- 5Copy the Markdown, download it as output.md, or share the URL to hand the input to a teammate.
Key Benefits
- Correctly numbers ordered lists and indents nested list items
- Converts HTML <table> markup into GitHub-flavored Markdown tables
- Handles strikethrough (<del>/<s>/<strike>) into ~~text~~, plus bold and italic
- Decodes named and numeric HTML entities, including hex (&#x...) and decimal (&#...)
- Preserves code fences and keeps the language hint from class="language-..."
- Live conversion updates the Markdown as you edit, with line/heading/link stats
- Runs entirely in-browser — your HTML is never uploaded
Common Use Cases
- Migrating HTML articles or CMS content into a Markdown-based blog or wiki
- Cleaning up rich-text editor output into plain Markdown for version control
- Extracting readable Markdown from a scraped or exported HTML page
- Converting HTML email or documentation snippets to Markdown for a README
- Round-tripping content between an HTML source and a Markdown workflow
0 characters · live
Paste HTML above to see the Markdown live.
Was this tool helpful?
Share Your Experience
Help others discover this tool!
Related tools
- Markdown TOC GeneratorGenerate table of contents for Markdown
- Code Block FormatterFormat code blocks for Markdown
- Color ConverterConvert between HEX, RGB, HSL, and HSV
- cURL to Code ConverterConvert cURL commands to code in various languages
- Markdown Link CheckerCheck for broken links in Markdown files
- npm to Yarn ConverterConvert npm commands and package-lock.json to Yarn equivalents
Yes. Ordered (<ol>) lists are renumbered sequentially as 1., 2., 3., and so on — a common bug in naive HTML-to-Markdown converters that emit the same number for every item. Nested lists are converted innermost-first and their items are indented two spaces under the parent.
Yes. <table> markup is parsed before generic tag stripping and rewritten as a GitHub-flavored Markdown table, using the first row as the header followed by a --- separator row and the remaining data rows. Cell contents have any inner tags removed and are trimmed.

