HTML to Markdown Converter
Paste HTML on the left and get clean, readable Markdown on the right as you type.
Conversion happens entirely in your browser — nothing is uploaded.
How it works
- Paste or type your HTML source into the left pane — a full page or just a fragment both work.
- Review the Markdown that appears live in the right pane; headings, lists, tables and code blocks are converted automatically.
- Click Copy to put the Markdown on your clipboard, or Download .md to save it as a file.
Frequently asked questions
- Which HTML tags does the converter support?
- It converts headings (h1–h6), paragraphs, bold and italic text, links, images, nested ordered and unordered lists, blockquotes, code blocks with language hints, horizontal rules, line breaks and tables. Tags without a Markdown equivalent, such as div or span, are unwrapped so their text content is kept.
- Is my HTML uploaded to a server?
- No. The conversion runs entirely in your browser using the built-in DOMParser API, so nothing you paste ever leaves your device. You can even disconnect from the internet after the page loads and the tool keeps working.
- How are HTML tables converted to Markdown?
- Each table becomes a GitHub-flavored pipe table. The first row (or the thead row if present) is used as the header, a separator row is inserted, and pipe characters inside cells are escaped so the table stays valid. Merged cells are flattened, since Markdown tables do not support colspan or rowspan.
- Can I paste a whole web page copied from view-source?
- Yes. The parser reads the full document and converts only the body content, while script and style elements are ignored. For long pages the output can be large, so it is often cleaner to paste just the article or section you actually need.
- Does it keep code blocks and inline code intact?
- Yes. A pre element becomes a fenced code block, and if its code child has a class like language-js the language is added after the opening fence for syntax highlighting. Inline code elements are wrapped in single backticks, and the code text itself is never reformatted.
About this tool
This tool turns HTML markup into clean Markdown you can use in README files, documentation sites, wikis, static-site generators or note apps. Paste any HTML — an exported blog post, an email template, a snippet copied from a CMS — and the Markdown equivalent appears instantly in the second pane. There is no upload step and no account: the page is the whole product.
Under the hood the converter uses your browser’s native DOMParser to build a real document tree from the pasted markup, then walks that tree node by node. Headings map to # prefixes, strong and em become ** and *, anchors become [text](url) links, images become , and ul and ol elements are rendered as indented list items that preserve nesting. Blockquotes are prefixed with >, pre blocks become fenced code blocks, and tables are rewritten as pipe tables. Because everything runs client-side, private drafts and internal documents never leave your machine.
Typical uses include migrating old blog posts from WordPress or another CMS into a Markdown-based generator such as Hugo, Jekyll or Astro, converting rich-text editor output for storage in Git, cleaning up HTML email content for a changelog, or moving documentation into GitHub wikis and pull-request descriptions. Writers also use it to lift formatted content out of web pages into Obsidian or Notion without dragging inline styles along.
A few practical tips: paste only the fragment you need rather than a full page, since navigation menus and footers convert into noise. If your source uses div elements for layout, the text still comes through because unknown tags are unwrapped rather than dropped. After converting, skim the output for tables with merged cells — Markdown cannot represent colspan, so those rows may need a quick manual edit before you commit the file.