ZeroTool Workbench
HTML to Markdown Converter
Convert HTML to Markdown instantly in your browser. Preserves headings, bold, italic, links, images, code blocks with language, GFM tables, and nested lists. Free, no upload required.
How to Use
- Paste or type your HTML into the HTML Input panel on the left.
- Markdown output appears instantly in the right panel with no button press needed.
- Click Copy to copy the Markdown to your clipboard, or Download .md to save the file.
- Use the Example button to load a sample that demonstrates all major conversions.
Conversion Reference
| HTML | Markdown |
|---|---|
<h1>Title</h1> | # Title |
<strong>text</strong> | text |
<em>text</em> | text |
<a href=“url”>label</a> | label |
<img src=“url” alt=“alt”> | !alt |
<code class=“language-js”> inside <pre> | ```js fence |
<table> | GFM pipe table |
<blockquote> | > quote |
<hr> | --- |
Common Use Cases
- CMS migration: Export WordPress or Drupal content as HTML, then convert it to Markdown for a static site generator like Hugo or Astro.
- README preparation: Scrape a web page and clean it up as Markdown for a GitHub README or documentation site.
- LLM input: Convert a web page to Markdown to reduce token count and noise before feeding it to a language model.
- Note-taking: Convert email HTML or rich-text snippets to clean Markdown for Obsidian, Notion, or similar tools.
FAQ
What HTML elements are supported?
All common HTML elements: h1–h6, p, strong/b, em/i, a, img, code, pre+code (with language class), ul, ol, li, blockquote, hr, table (GFM format), and br. Unknown elements fall back to their text content.
How are code blocks handled?
Inline <code> becomes backtick-delimited code. A <pre><code class="language-javascript"> block becomes a fenced code block with the language tag preserved: ```javascript. If no language class is present, a plain ``` fence is used.
Are GFM tables supported?
Yes. HTML tables with thead and tbody are converted to GitHub Flavored Markdown (GFM) tables with the standard pipe syntax and a separator row.
What happens with invalid or incomplete HTML?
The browser's built-in HTML parser is used for parsing, so it applies the same tolerance as any browser. Malformed HTML is corrected automatically where possible, and conversion proceeds on the resulting DOM.
Can I convert a full HTML page?
Yes, but only the content inside <body> will be meaningfully converted. Metadata like <head>, <style>, and <script> tags are stripped automatically by the converter.
Is my HTML sent to a server?
No. All conversion happens entirely in your browser using the turndown.js library. Nothing is transmitted over the network.