HTML → Markdown

HTML to Markdown

Paste markup or load an .html file and get GitHub-flavoured Markdown with tables, lists and fenced code. Copy it or download a .md file.

Parsing happens in this tab. The HTML never leaves your device, and the Markdown output is plain text you can review before using it.

Short answer: paste HTML above and the Markdown output appears as you type. Headings, lists, tables, code blocks and links are converted to GFM syntax; styling, scripts and embedded media are dropped because Markdown has nowhere to put them.

What converts cleanly

What Markdown cannot hold

CSS, layout, colours, web fonts, iframes, video, audio, canvas, SVG and form controls have no Markdown equivalent. They are removed rather than converted into something that only looks similar, and the report under the result says which kinds were dropped.

Why convert HTML to Markdown here

Documentation, emails and CMS exports are often HTML when you need plain text for a README, a wiki or a commit. Doing it in the browser means the source document — which may be an invoice, a draft or an internal page — never leaves your device. The reverse direction is also available: Markdown to HTML.

HTML to Markdown questions

How do I convert an HTML file to Markdown?

Load the .html file or paste the markup. The conversion happens as you type and the Markdown appears in the output box, ready to copy or download as a .md file. The HTML is parsed in the tab and never uploaded.

Is the output GitHub-flavoured Markdown?

Yes. Tables become pipe tables, fenced code blocks keep a language hint when the source declared one, and lists keep their nesting. Choose ATX (## Heading) or setext headings and pick the bullet character you prefer.

What happens to <style>, <script> and other tags?

They are dropped. Markdown has no styling layer and no execution model, so a stylesheet, a script or an embedded player cannot be represented. The tool names embedded media in the report under the result instead of silently deleting it.

How are tables and code blocks handled?

Tables need a header row to become pipe tables; a table without <th> cells is converted row by row. Code blocks become fenced blocks with the language class preserved (for example language-js becomes ```js), and inline code keeps backticks.

Are images and links kept?

Links keep their absolute URL; relative URLs are kept as written, so check them before publishing. Images become ![](src) with their alt text. Nothing is fetched while converting.

What are the limits?

Up to 200,000 characters of HTML per run, processed in this browser tab with no upload endpoint and no account.

Related tools