ToolJutsu
All tools
Developer Tools

HTML to Markdown

Convert HTML into clean Markdown.

Heading style
Bullet marker
0 chars
Tip: press Ctrl/ + Enter
Processed on your device. We never see your files.

How to use HTML to Markdown

What this tool does

This tool converts HTML into Markdown. You paste an HTML snippet or a whole document, choose a couple of formatting options, and get back clean, readable Markdown that you can drop into a README, a wiki, a static-site post, or any editor that understands Markdown. Headings, paragraphs, links, images, lists, blockquotes, inline code, and fenced code blocks are all translated to their Markdown equivalents. The conversion happens entirely inside your browser, so the HTML you paste is never uploaded anywhere.

Why you might need it

HTML is everywhere — it is what email clients, CMS exports, scraped pages, and rich-text editors produce. Markdown, by contrast, is what most modern documentation systems, static-site generators, and developer tools actually want. Converting by hand is tedious and error-prone: you end up hunting for every <a> tag and rewriting it as a [text](url) link. This tool does that mechanical work in one step. Common situations include migrating old content into a Markdown-based docs site, turning a copied web article into a clean note, or extracting the body of an HTML email into something you can edit comfortably.

How to use it

  1. Paste your HTML into the input box — a snippet or a full document both work.
  2. Pick a heading style: ATX uses # marks, Setext underlines headings.
  3. Pick a bullet marker for unordered lists: -, *, or +.
  4. Click Convert to Markdown, or press Ctrl/Cmd + Enter.
  5. Review the Markdown, copy it with one click, or download it as a .md file.

The character counters under each box give you a quick sense of how much the markup shrank — Markdown is almost always far more compact than the HTML it came from.

Common pitfalls

The biggest surprise is that Markdown simply cannot express everything HTML can. There is no Markdown for a <div> with a class, an inline style attribute, or a <figure> with a caption. When the converter meets something with no Markdown equivalent, it leaves the original HTML in place rather than dropping it — that is intentional and valid, because Markdown renderers pass raw HTML straight through. If your output looks like it still contains tags, that is usually why. A second pitfall is malformed HTML: unclosed tags or stray brackets can confuse any parser. If the result looks wrong, beautify or fix the HTML first. Finally, remember that whitespace inside <pre> blocks is significant and is preserved exactly, while whitespace elsewhere is collapsed, just as a browser would do.

Tips and advanced use

When you are migrating a batch of pages, convert one representative page first and skim the output for any raw HTML left behind — that tells you which constructs you may want to clean up before a bulk migration. Choose the bullet marker that matches the rest of your project so diffs stay small; many teams standardise on -. If you are pasting content copied from a web page, the HTML often carries tracking attributes and wrapper <span> tags — these convert cleanly because the converter cares about structure, not styling. And because every conversion runs locally, this is a safe way to turn internal HTML emails, private dashboards, or unreleased documentation into Markdown without sending a single byte to a third party.

Frequently asked questions

Is my HTML sent to a server?
No. The conversion runs entirely in your browser using JavaScript. The HTML you paste never leaves your device, so you can safely convert internal or confidential pages. You can confirm this in your browser's Network tab.
What happens to tags Markdown cannot represent?
Markdown has no syntax for things like custom attributes, inline styles, or many HTML5 elements. Where there is no Markdown equivalent the converter keeps the raw HTML inline, which is valid in most Markdown renderers, so no content is silently lost.
What is the difference between ATX and Setext headings?
ATX headings use leading hash marks, such as # Title or ## Section, and work for all six levels. Setext headings underline the text with equals signs or dashes and only support two levels. ATX is the more common and portable choice.
Does it handle a full HTML document or just a snippet?
Both. You can paste a complete document including the doctype, head, and body, or just a fragment such as a single div. The converter focuses on the body content and ignores head metadata like title and meta tags.
Why did my conversion produce empty output?
That usually means the input contained only empty tags, comments, or elements with no text, such as a bare div or script block. Add some real content, or check that the HTML you pasted is complete.

Related tools