HTML to Markdown Converter

Last updated: October 1, 2026

✅ Free Forever 🔒 Files Stay on Your Device ⚡ No Signup Required 🌐 Works in Any Browser

Drop your file here

or click to browse

Accepted: .html,.htm,text/html

What is HTML to Markdown Converter?

Convert an HTML file to Markdown — headings, lists, links, code blocks, images and tables — with real control over which Markdown conventions come out. It runs in your browser, so nothing is uploaded.

Tables, which is where this conversion usually breaks

Search for an HTML-to-Markdown converter and you will notice how many of the results are specifically table converters. That is not a coincidence.

The library almost everyone builds on does not convert tables at all by default — it passes the raw HTML straight through, so your clean Markdown document ends up with a block of <table> markup sitting in the middle of it. People hit that, go looking for a table-specific tool, and end up converting their document in two passes.

This handles tables in the same pass as everything else, producing standard pipe tables that render on GitHub, GitLab and any Markdown processor with GFM support. Pipe characters inside your cell content are escaped, so a cell containing a vertical bar does not break the row.

Two things to know about how tables come across. Formatting inside a cell is flattened — a bold word or a link inside a table cell becomes plain text, because only the cell's text is carried over. And the first row is treated as the header, which Markdown tables require. If your table has no header row, its first row of data will be promoted into one, so add a header row before converting or fix it afterwards.

The four options, and which to pick

These are real choices, not decoration, and the defaults are the right answer most of the time.

Headings: ATX or Setext. ATX is ## Heading and is what you want — it works at every level, every processor handles it, and it is what Markdown looks like to most people. Setext underlines the heading with === or --- and only supports two levels. Pick it only to match an existing document that uses it.

Code blocks: fenced or indented. Fenced means triple backticks, which is the modern default and the only form that can carry a language hint for syntax highlighting. Indented uses four spaces, which some older or stricter processors need. Fenced unless something forces otherwise.

Links: inline or reference. Inline puts the URL next to the text. Reference puts a short marker in the text and collects the URLs at the bottom of the file. For a long document with many links, reference style is noticeably easier to read and edit while writing — the prose stays prose instead of being interrupted by URLs — and it renders identically.

Images: keep or remove. Keep preserves the image references. Remove strips them, which is right when you want the text of a page without its screenshots and decoration — and it is the quiet time-saver, because a converted web page otherwise brings every icon and tracking pixel with it as a broken image reference.

Feed it the content, not the whole page

A saved web page contains far more than its article: navigation, a sidebar, a footer, cookie notices, social buttons. All of that is content as far as a converter is concerned, so it all comes through as Markdown and you spend your time deleting menus.

The fix is to narrow the input first. Save or copy just the article portion — in browser developer tools, copying the outer HTML of the article element gives you exactly that — and convert it. The result then needs almost no cleanup.

Round trips are not lossless

Worth flagging because both directions exist on this site and the pair does not perfectly reverse.

The Markdown to HTML tool here is configured so a single newline becomes a line break, which is how most people intuitively expect Markdown to behave but is not what standard Markdown does. So converting HTML to Markdown and back can give you extra <br> tags where your Markdown source had soft line wrapping.

Not a problem for the normal direction of travel — you convert once and then work in Markdown. It matters if you were planning to bounce a document back and forth between the two formats, which is worth avoiding for that reason.

Why this is worth doing at all

Markdown is what documentation, repositories, wikis and static sites actually run on, and it is the format that survives. It is plain text, so it diffs cleanly in version control, does not carry invisible styling from wherever it came from, and will still be readable in twenty years. Converting HTML into it is usually the first step in moving content somewhere it can be maintained rather than merely stored.

Nothing is uploaded, which matters when the HTML is an export from an internal wiki or a client's site.

Related tools

Markdown to HTML Converter goes the other way, with the line-break behaviour noted above. PDF to TXT Converter is the route when the source is a PDF rather than HTML, and Word Counter measures the result.

How to Use HTML to Markdown Converter

  1. Upload HTML

    Upload your .html or .htm file.

  2. Set Options

    Choose heading style (ATX vs Setext), code block style, link style, and image handling.

  3. Copy or Download

    View the Markdown output, copy to clipboard, or download as a .md file.

Features

Clean Output

Produces clean, readable Markdown without unnecessary HTML tags.

Table Support

HTML tables converted to GFM pipe-table format.

Link Styles

Choose between inline links or reference-style links.

Frequently Asked Questions

Does it convert HTML tables?

Yes, in the same pass as everything else, producing standard pipe tables that render on GitHub and any processor with GFM support. That is worth highlighting because the library most converters use does not handle tables at all by default, which is why so many competing tools are table-only.

Why did the bold text in my table cell disappear?

Because only the cell's text is carried over, so formatting inside a cell is flattened — a bold word or a link in a cell becomes plain text. Re-add it afterwards if you need it.

My table's first row of data became the header. Why?

Markdown tables require a header row, and the first row is used as one. If your table has no header, add one before converting or fix it in the output.

Should I use inline or reference links?

Inline for short documents. Reference style — a marker in the text with the URLs collected at the bottom — is noticeably easier to read and edit in a long document, because the prose is not interrupted by URLs. Both render identically.

Why is my output full of navigation and footer text?

Because a saved web page contains all of that, and a converter treats it as content. Narrow the input first — in browser developer tools, copy the outer HTML of just the article element — and the result needs almost no cleanup. Setting images to Remove also helps.

Can I convert back and forth between HTML and Markdown?

Not losslessly. The Markdown to HTML tool here treats a single newline as a line break, which is how most people expect Markdown to behave but is not standard, so a round trip can add extra line-break tags. Convert once and then work in Markdown.