HTML to Markdown Converter

Drop an .html file, get clean Markdown back. Free, in-browser, no sign-up. Tags are stripped, structure is preserved, and the result is ready for an LLM, a wiki, or a static site.

Markdown preview

Why convert HTML to Markdown?

HTML carries a lot of style and structure that's irrelevant once you want to read, search or feed the content to a model. Markdown keeps the structure (headings, lists, links, emphasis) and drops the noise (classes, inline styles, tracking pixels).

How conversion works for HTML

t0md parses the HTML and emits Markdown with headings (H1–H6), bullet and numbered lists, links, inline emphasis, and code blocks. Inline styles and class attributes are dropped; semantic structure is kept.

Convert HTML to Markdown via MCP — from Claude Code, Cursor or any AI agent

t0md exposes a remote MCP (Model Context Protocol) server. Add it once and any MCP-compatible agent can convert HTML to Markdown without leaving the conversation.

claude mcp add --transport http t0md https://t0md.com/mcp

Then ask the agent: "convert /path/to/page.html to markdown". The MCP server returns the converted Markdown plus a 10-minute download link. Full setup details on the MCP page.

Frequently asked questions

How do I convert HTML to Markdown?

Drop your .html (or .htm) file on this page. t0md strips tags, keeps semantic structure, and gives you Markdown to copy or download.

Can I convert a live URL to Markdown?

Not yet from this page — drop the saved .html file instead. URL-to-Markdown is on the roadmap. The MCP server already accepts file uploads.

Are links preserved in the output?

Yes. Anchor tags become Markdown links of the form [text](url). Image tags become Markdown image references; the image binary is not embedded.

Can Claude Code convert HTML to Markdown via MCP?

Yes. Add the t0md MCP server with `claude mcp add --transport http t0md https://t0md.com/mcp` and your agent can call convert_to_markdown on any .html file in a single tool call.

What about scripts and styles?

<script> and <style> blocks are dropped — they aren't content. Inline styles and classes are also stripped. Only the human-readable, semantically structured content survives the conversion.