Markdown to HTML Converter
Convert Markdown into HTML with a live preview beside the output. Input is escaped before rendering, so pasted markup cannot inject anything into the page. Supports headings, lists, tables, fenced code, block quotes, links, images and emphasis.
Rendered preview
How it works
Which Markdown this supports
Markdown has no single specification — the original 2004 implementation left many cases undefined, which is why CommonMark exists and why GitHub, Reddit and Slack all render the same text differently.
This converter handles the CommonMark subset people actually paste: ATX headings, ordered and unordered lists, fenced code blocks with a language hint, block quotes, horizontal rules, pipe tables with alignment, links, images, bold, italic, strikethrough and inline code.
It does not handle footnotes, reference-style links, nested block quotes, definition lists or raw HTML passthrough. For those, use a full parser.
Why the output is escaped
Markdown's original design allows raw HTML to pass straight through, which makes any Markdown renderer that accepts untrusted input an XSS vector: <img src=x onerror=alert(1)> in a comment becomes live markup.
This tool escapes <, > and & before rendering, so pasted HTML appears as visible text rather than executing. That is the safe default for a tool you paste arbitrary content into. If you are building a renderer that must allow some HTML, sanitise the output with a library such as DOMPurify — do not write your own filter.
Tables and alignment
Pipe tables are not in original Markdown; they come from GitHub Flavored Markdown and are now near-universal. The separator row sets alignment: :--- left, :---: centre, ---: right. Cell contents may use inline formatting but not block elements, so you cannot put a list or a code block inside a table cell.
What people use it for
- Turning a README into HTML for a site or a docs page.
- Checking how Markdown will render before committing or posting it.
- Getting HTML for a CMS field that doesn't accept Markdown.
- Converting AI-generated Markdown into markup you can paste into a page.
- Debugging a table or list that isn't rendering the way you expected.
Nothing is uploaded. This tool runs entirely in JavaScript in your browser. Your input is never sent to a server, never logged and never stored, and no account is required. Once the page has loaded you can go offline and it still works — open your browser's network tab and watch if you'd like to confirm it.
Frequently asked questions
Which Markdown flavour is this?
The CommonMark subset most people use, plus GitHub-style pipe tables and strikethrough. Footnotes, reference-style links, nested block quotes, definition lists and raw HTML passthrough are not supported.
Why is my HTML showing as text instead of rendering?
Deliberately. Input is escaped before rendering, so pasted HTML appears as visible text rather than executing. A Markdown renderer that passes raw HTML through is an XSS vector when the input is untrusted.
How do I set table column alignment?
In the separator row: :--- for left, :---: for centre, ---: for right. Cells can contain inline formatting but not block elements like lists or code blocks.
Does it support footnotes or reference links?
No. Those need a full parser. This tool covers the common subset; for the full specification use a library such as markdown-it or a CommonMark reference implementation.
Is my Markdown uploaded?
No. Conversion and preview both run in your browser.
Tools that run where your code is
This page does its work in your browser because sending your data to a server to process it is a bad default. Catalase applies the same idea to AI coding: a free, open-source code editor that runs language models on your own machine through Ollama, with no account and no telemetry. Cloud models are there when you choose one, not by default.
Related tools
- Markdown table generator — Build an aligned table from CSV.
- Markdown cheat sheet — Every syntax element in one reference.
- Markdown cheat sheet — Full Markdown syntax reference.