HTML to Markdown
Structured Web Content

Upload an .html or .htm file and our self-hosted Parsyra service returns a clean Markdown document with headings, links, lists, code and tables preserved where Markdown can represent them. The source is processed in temporary storage and deleted immediately after conversion.

Free accounts handle .html and .htm files up to 20MB, three queued at once; Pro lifts that ceiling to 100MB and thirty.

// html to markdown

Drop a File and Run HTML to Markdown

A saved web page is mostly not prose — it is stylesheets, analytics snippets, embedded players and layout scaffolding. Before the HTML to Markdown pass begins, Parsyra deletes every head, script, style, noscript and iframe node, which is why a full page save yields readable text instead of CSS rules and JavaScript source pasted in as paragraphs.

Secure conversion · uploaded source files are deleted immediately after processing
// how it works

The HTML to Markdown Pipeline, Step by Step

Four stages separate a messy saved page from a tidy .md file. The self-hosted Parsyra service receives the upload, removes non-content noise, extracts the document structure and returns the Markdown result before deleting the temporary source.

01

Hand Over the Page Source

Drag in an .html or .htm file, or click to pick one. The file is uploaded over HTTPS, processed temporarily and deleted immediately after conversion.

02

Prune the Non-Content Nodes

head, script, style, noscript and iframe subtrees are removed outright. Skipping this is what makes naive HTML to Markdown attempts spill minified JavaScript and font declarations into the body text as if they were prose.

03

Turn Structure into Markdown

Parsyra maps the remaining HTML structure to Markdown: headings, paragraphs, links, lists, code and tables become readable plain text while presentation-only layout is simplified.

04

Read It, Then Keep It

The finished HTML to Markdown result appears in a preview pane you can scroll before committing to anything. Save the .md file, or select the text and drop it straight into Obsidian, a pull request description, or a retrieval index.

// why Parsyra

What This HTML to Markdown Converter Actually Does

Specifics, not slogans — here is the behaviour you can count on, plus the one place where HTML to Markdown genuinely cannot help you.

📑

GFM Tables, Task Lists, Strikethrough

The Parsyra engine preserves common HTML structures as Markdown tables, task lists and readable inline formatting where the target syntax supports them. Complex layout and attributes are simplified rather than copied as raw HTML noise.

🔒

Temporary Processing, Immediate Deletion

The HTML file is uploaded only for conversion. Our self-hosted Parsyra service processes it in temporary storage, deletes the source immediately afterward and does not add it to your account.

🤖

Wrappers Collapse, Structure Survives

div, span, custom web components and inline style attributes have no counterpart in the target syntax, so HTML to Markdown reduces them to the text they wrap. Layout evaporates while headings and code fences stay, which is precisely the shape a chunker or a retrieval index wants to be handed.

Scripts, Styles and Iframes Removed

The conversion removes common non-content nodes such as head, script, style, noscript and iframe before writing Markdown. Drop in a browser's own Save Page As output and you get the article rather than a wall of analytics tags and inlined CSS.

🆓

20MB Free, 100MB on Pro

Nothing is metered on the free tier beyond size: one HTML to Markdown job accepts a file up to 20MB, and three can run together. Pro widens that to 100MB per file and thirty in a batch, which matters when you are draining an entire archived site rather than a single article.

📥

Live Pages Fix Relative Paths

Here is the honest caveat: a href of /about or an image src of img/diagram.png may resolve nowhere once the .md file lives in your notes. Prefix the origin with one search-and-replace, or start from a live address instead — the URL to Markdown route fetches the public page through a proxy and converts the returned HTML locally.

HTML to Markdown — Questions People Actually Ask

Engine behaviour, edge cases and limits, answered plainly.

How do I run an HTML to Markdown conversion on this page?

Drop an .html or .htm file into the box above. Parsing starts immediately, the preview fills in, and a download button gives you the .md file. There is nothing to install and no account to create.

Which engine performs the HTML to Markdown conversion?

This page uses our self-hosted service running Parsyra library. It extracts HTML structure and writes the result as Markdown; complex layout and styling are simplified because Markdown cannot represent them fully.

My links and images point nowhere after HTML to Markdown. Why?

Relative URLs pass through untouched. An anchor written as /pricing stays /pricing, and img/diagram.png stays img/diagram.png, both of which only meant something relative to the page's original address. Two fixes work: convert from the live address so paths resolve against the real origin, or run one search-and-replace over the finished text to prepend the base URL.

What happens to div, span and custom elements?

They have no equivalent in the output syntax, so they collapse to whatever text they wrap. The same is true of inline style attributes and of custom web components. Structural markup vanishes; the words inside it survive.

Will CSS and JavaScript end up in my output as text?

No, and this is a common failure mode in other HTML to Markdown tools. head, script, style, noscript and iframe nodes are deleted before conversion begins, so stylesheet rules, tracking snippets and embedded players never reach the text stream. Body-only fragments are unaffected by the same cleanup.

Do tables and task lists come through intact?

Yes, thanks to the GFM plugin: tables become pipe-delimited rows with a dash separator, checkboxes become - [ ] and - [x], and struck text becomes ~~struck text~~. Anything relying on colspan or nested tables will flatten, because the target syntax simply has no notation for it.

Can I convert a live web page rather than a saved file?

Yes, on a sibling page. Browsers cannot fetch cross-origin documents, so a small server proxy retrieves the HTML, hands it back, and the conversion still runs in your browser. It also sidesteps the relative-path problem, since links resolve against the site they came from. See the URL to Markdown converter.

Is there a size cap or a batch limit?

A single HTML to Markdown job can take a file up to 20MB on the free tier and 100MB on Pro. Batches run three files at a time free, or thirty on Pro. Very large saved pages spend most of their weight on embedded images and inline CSS, which the cleanup pass removes before the Markdown is written.

How is my document handled?

The saved HTML file is uploaded over HTTPS to our self-hosted Parsyra service, processed in temporary storage and deleted immediately after conversion. The live-address workflow is different: its proxy fetches the public page on your behalf, then the returned HTML is converted locally.

How does this relate to the Parsyra library?

The online service is operated independently by parsyra.com and uses Microsoft's open-source Python Parsyra library on the server. Microsoft does not operate, endorse or host this service.

Related tools: fetch a live page with URL to Markdown, lift a copied table with Table to Markdown, or unpack a .docx with Word to Markdown — then polish the result in the Markdown online editor.

Turn That Saved Page Into a .md File

One file, one drop, one download. ATX headings, fenced code, GFM tables — and an HTML to Markdown pass that leaves stylesheets and tracking scripts on the floor where they belong.