Markdown ⇄ HTML Converter
Convert Markdown to clean HTML, or HTML back into readable Markdown (files up to 200MB supported).
Or convert a file directly — supports files up to 200MB
Drag & drop a file here, or click to browse
Processed in the background, so the page stays responsive even for huge files
How to use this tool
Choose Markdown → HTML or HTML → Markdown, then type, paste or upload a file. The output pane follows every keystroke, and Download saves it under your upload's name with an .html or .md extension. A Markdown file over 5 MB skips the editor and is converted in the background (up to 200 MB) so the page doesn't freeze; HTML files are always loaded into the editor.
Things GitHub shows that this output won't
A README that looks right on GitHub can come out differently here, because GitHub adds its own features on top of GitHub-flavoured Markdown. Tested with this converter:
- Heading anchors.
## Install stepsbecomes a plain<h2>with noid, so a link to#install-stepsgoes nowhere. Where you need one, write the heading as raw HTML,<h2 id="install-steps">, which passes through. - Footnotes.
Claim[^1]with a[^1]: Source.line turns into a link labelled ^1 whose address is "Source.", because the definition is read as a link reference. Use a numbered notes list instead. - Alerts.
> [!NOTE]is an ordinary blockquote that shows the text [!NOTE]. - Shortcuts.
:tada:,@ashaand#42stay as typed; GitHub alone turns them into an emoji, a profile link and an issue link. - Front matter. The
---block at the top of a Jekyll or Hugo post comes out as an<hr>followed by an<h2>holding the fields (title: …), because a line of dashes under text is heading syntax. Delete the block before converting.
Frequently Asked Questions
Is the HTML output safe to put straight onto a web page?
Only if you trust the Markdown. Markdown allows raw HTML, and the converter passes it through untouched, so a <script> tag or an onclick attribute in the source appears in the output. That is what you want for your own documents. For Markdown written by other people, such as comments or profiles, run the HTML through a sanitizer like DOMPurify before displaying it.
Does the HTML include a <head>, styles or a full page?
No. You get only the body content: headings, paragraphs, lists and so on, with no <html>, <head> or CSS, and the downloaded .html file is the same fragment. That is what a CMS or template expects. To open it as a page of its own, wrap it in a basic HTML document with <meta charset="utf-8"> in the head, so the browser doesn't have to guess how to read characters like ₹ or é.
Why does my Markdown look different after converting to HTML and back?
The return trip writes Markdown in one fixed style. *italic* comes back as _italic_, a "- item" bullet comes back as "* item", and numbered items get two spaces after the number. Both spellings render identically, so nothing is lost; only the source text changes. If a diff tool or a code review cares about the exact characters, keep your original file.
Related Tools
Related Blog Posts
How to Convert Markdown to HTML and Back
What Markdown turns into as HTML (and what it doesn't), what HTML loses when it becomes Markdown, and when stripping to plain text is the right move, with real before-and-after output.
Read moreHow to Convert JSON to Excel, CSV, XML and YAML (and Back)
What actually happens to your data when JSON becomes a spreadsheet, XML, or YAML: missing keys, nested values, leading zeros, and the XML array problem, with real converter output.
Read moreConverting CSV and XML to Excel Without Losing Data
Why double-clicking a CSV mangles PIN codes, long IDs and ₹ signs, what a careful CSV-to-Excel conversion does instead, and how XML records map to spreadsheet columns.
Read more