Free · Runs in your browser · No sign-up
HTML to Markdown Converter
Paste an HTML fragment or a whole page's source and get GitHub-flavoured Markdown back — headings, links, lists, code blocks and tables intact, page chrome left behind.
Just the article only matters when you paste a whole page’s source. It keeps the first <article> or <main> element and throws away the navigation, sidebar, cookie banner and footer around it. Untick it to convert the entire <body>. Either way, scripts, styles and SVG icons are dropped.
HTML
Markdown
Paste HTML on the left and the Markdown appears here.
Where does the Markdown go next?
Bulguritto keeps your notes as plain Markdown files on iPhone, iPad and Mac, synced and searchable — the same format this converter just handed you. Free.
What the converter actually does
HTML and Markdown describe the same small set of ideas — a heading is a heading, a list is a list — so most of a document translates without any loss. The converter above walks the parsed HTML tree and emits the Markdown equivalent of each node, using Turndown with the GitHub Flavored Markdown plugin. That plugin is the part that matters in practice: without it you get no tables, no strikethrough and no task lists, which is most of what people paste.
So <h2> becomes ##, <strong> becomes **bold**, <ul> becomes a bullet list, <blockquote> becomes >, <pre><code> becomes a fenced block, and <table> becomes a pipe table. Here is a fragment and what comes out of it:
<h2>Release notes</h2>
<p>Fixed the <a href="/bugs/41">sync bug</a> and <del>removed</del> the banner.</p>
<ul><li>Faster search</li><li>Dark mode</li></ul>## Release notes
Fixed the [sync bug](/bugs/41) and ~~removed~~ the banner.
- Faster search
- Dark modeEverything runs in your browser. The HTML is parsed by the same engine that renders this page, so malformed markup is repaired the way a browser would repair it — an unclosed <p> or a stray <b> will not break the conversion.
What converts cleanly, and what cannot
The rule is simple: semantics survive, presentation does not. Markdown has no vocabulary for how something looks, only for what it is. Tags that say what a thing is map one to one:
h1–h6,p,br,hrul,ol,li, including nested listsa,img,blockquote,code,prestrong,em,del, andtablevia GFM
Tags that only carry styling have nowhere to go. A <span style="color:#c00"> loses its colour and keeps its words. Nested <div> soup — the output of most page builders and email templates — collapses into bare paragraphs, which is usually what you wanted anyway. Class names, IDs, data attributes, inline CSS and custom elements are dropped. Iframes, embedded videos, forms and script-driven widgets vanish entirely, because there is no plain text left once the script is gone.
Two cases deserve a manual check. Layout tables — tables used for positioning rather than data, still common in newsletters — become real Markdown tables full of nonsense; delete them. And merged cells (colspan, rowspan) have no Markdown equivalent at all, so the grid is flattened and the alignment of the remaining cells is a guess.
Getting a page’s HTML
There are two ways, and they give you different things. View Source (Ctrl+U on Windows and Linux, Cmd+Option+U in Safari, or prefix the address with view-source:) shows the exact bytes the server sent. Inspect — right-click, Inspect, then right-click the element in the tree and choose Copy → Copy outer HTML — gives you the live DOM, after JavaScript has finished rewriting it.
On a React, Vue or Angular site, View Source is often an empty <div id="root"> and a bundle of scripts: there is no article in it to convert. Inspect is what you want there. On a server-rendered blog or documentation page the two are nearly identical, and View Source is quicker. Copying the outer HTML of the single element that holds the article is the cleanest input of all — you have done the trimming before the converter ever sees it.
Why scraped pages need “Just the article”
A modern page is maybe fifteen per cent article and eighty-five per cent furniture: a nav bar, a cookie notice, a newsletter box, a share rail, a related-posts grid, a fat footer of links. Convert all of it and you get two hundred lines of link soup wrapped around the paragraphs you actually wanted. The Just the article option keeps the first <article> or <main> element and drops the rest, which handles the large majority of sites, because those two tags are what content management systems emit. If a site uses neither, fall back to Inspect and copy the element yourself.
What to do with the Markdown next
Usually one of four things: commit it to a repository as documentation, paste it into a wiki or an issue, feed it to a language model as clean context, or file it in your notes. The third is increasingly the point — Markdown is dramatically cheaper in tokens than raw HTML, and models read it more reliably.
If the source is not a web page after all, the neighbouring converters take a different input and produce the same output: a PDF, a Word document, a CSV file or an Excel workbook. Going the other direction, Markdown to Word turns the result back into a .docx when somebody insists on one.
And if the answer is “my notes”, it is worth not needing a converter next time. Bulguritto stores every note as a plain .md file — not exported to Markdown on request, stored that way — synced across iPhone, iPad and Mac, free. Paste the output above into a note and it is already in the app’s native format: tables stay tables, code blocks stay code blocks, and the file remains readable by anything else you ever open it with.
Frequently asked questions
- How do I convert HTML to Markdown?
- Paste the HTML into the left-hand box. The Markdown appears on the right as you type — copy it, or download it as a .md file. It works with a fragment, a snippet copied out of a CMS, or an entire page's source.
- Does it convert HTML tables to Markdown tables?
- Yes. The converter runs GitHub Flavored Markdown rules, so <table> becomes a pipe table, <del> becomes strikethrough, and checkbox list items become task lists. A table with merged cells (colspan or rowspan) has no Markdown equivalent, so it is flattened — check those by hand.
- Where do I get the HTML of a web page?
- Either View Source (Ctrl+U, or Cmd+Option+U in Safari) to get the file the server sent, or right-click an element, choose Inspect, then Copy → Copy outer HTML to get that element after JavaScript has run. Use Inspect for anything rendered client-side; use View Source when the page is server-rendered and you want the whole document.
- What does the 'Just the article' option do?
- When you paste a full page, it keeps the first <article> or <main> element and discards everything around it — navigation, sidebars, cookie banners, related-posts rails and the footer. Untick it to convert the whole <body>. It has no effect on a fragment, because a fragment has no chrome to drop.
- What gets lost in the conversion?
- Anything Markdown cannot express: inline CSS, class names, colours, fonts, custom elements, <div> and <span> wrappers, layout tables, iframes and embedded widgets. Their text content survives; their presentation does not. Semantic tags — headings, paragraphs, lists, links, emphasis, blockquotes, code, images, tables — all map cleanly.
- Is the HTML sent to a server?
- No. The whole converter is on this page and runs in your browser, so nothing is uploaded, logged or stored. You can disconnect from the internet after the page loads and it keeps working — which also means you can paste HTML from an internal system safely.
More Markdown converters
All free, all running in your browser, none of them asking for an account.
PDF → Markdown
PDF to Markdown
Pull the text out of a PDF and get clean Markdown back — headings, lists and paragraphs kept, page furniture dropped.
Word → Markdown
Word to Markdown
Convert a .docx into Markdown in the browser — headings, bold, lists, links and tables survive the trip.
Excel → Markdown
Excel to Markdown
Drop in an .xlsx or .csv and get a Markdown table per sheet, with alignment and escaping handled.
JSON → Markdown
JSON to Markdown
Turn a JSON array into a Markdown table, or a nested object into a readable Markdown outline.
CSV → Markdown
CSV to Markdown
Paste CSV or TSV — or drop the file — and get a GitHub-flavoured Markdown table you can paste anywhere.
Markdown → Word
Markdown to Word
Turn a Markdown document into a real .docx with styled headings, lists, tables and code blocks.
Notes that are already Markdown.
No export step, no lock-in, no conversion tool needed next time. Free on iPhone, iPad and Mac.