Markdown to HTML
Convert Markdown to HTML with GitHub-flavoured syntax support — tables, task lists, fenced code and strikethrough. A live preview renders in a sandboxed frame so nothing you paste can execute.
- Files never leave your device
- Free, no signup
- No watermarks
- Works offline once loaded
How to markdown to html
- 1
Write or paste Markdown
The HTML and the preview both update as you type.
- 2
Check the preview
Rendered in a sandboxed frame, so pasted content cannot run scripts.
- 3
Copy the HTML
Copy the markup or download it as a .html file.
CommonMark versus GitHub Flavored Markdown
Markdown started as a loosely specified format with no single authoritative grammar, which meant different implementations disagreed on edge cases — how nested lists should behave, whether underscores inside a word count as emphasis — often in ways that produced genuinely different rendered output from the identical source text. CommonMark emerged specifically to fix this by defining a single precise, unambiguous specification that any conforming parser must follow exactly. GitHub Flavored Markdown (GFM) builds on top of that CommonMark foundation and adds several extensions that plain CommonMark does not define at all: tables built from pipe characters and a dashed separator row, task list checkboxes written as `- [ ]` and `- [x]`, strikethrough text wrapped in double tildes, and automatic hyperlinking of bare URLs without needing explicit link syntax. GFM is the dialect this tool implements because it is what GitHub, Reddit, and the overwhelming majority of static site generators and documentation tools have standardised on, making it the most broadly useful target for anything written to be read elsewhere.
What the sandboxed preview protects against, and what it does not
Markdown syntax deliberately allows raw HTML to be embedded directly inside it — this is intentional and is what lets Markdown authors drop in an embed, a specific alignment, or a piece of styling that Markdown's own syntax has no shorthand for. The risk is that a `<script>` tag or an inline event handler like `onerror=` pasted into untrusted Markdown would normally execute in whatever context renders it, which is a real cross-site-scripting vector if the Markdown came from someone other than the person viewing the preview. Rendering the live preview inside a sandboxed iframe with scripting disabled means any such script tag or event handler in the preview simply does not run — the browser refuses to execute code inside a properly sandboxed frame, containing the risk to that isolated preview.
What the sandbox does not do is sanitise the *generated HTML output* this tool produces for you to copy — that text-level output still contains whatever raw HTML was present in the original Markdown, faithfully preserved, exactly as Markdown's specification intends. If that generated HTML is going to be inserted into a live page displaying content from an untrusted author, it needs its own separate server-side sanitisation pass before publishing, which is a distinct step from anything this preview sandbox handles.
Why Markdown allows raw HTML at all
Markdown was deliberately designed as a shorthand for the HTML constructs writers reach for most often — headings, links, emphasis, lists — rather than as a complete replacement for HTML's full capability. Anything Markdown's own syntax has no equivalent for, from a specific inline style to an embedded video, is meant to be written as literal HTML directly inside the Markdown source, and the parser passes it through unchanged rather than rejecting it as invalid. This is a deliberate design decision going back to Markdown's original specification, not a gap or an oversight in any particular implementation.
Frequently asked questions
Which Markdown flavour is supported?
GitHub Flavored Markdown: tables, fenced code blocks, task lists, strikethrough and autolinks, on top of the CommonMark core. That is the dialect used by GitHub, Reddit and most static site generators.
Is it safe to paste Markdown from an untrusted source?
The preview is rendered inside a sandboxed iframe with scripting disabled, so embedded `<script>` tags and event handlers cannot execute. Note that the *generated HTML* still contains whatever raw HTML was in your Markdown — sanitise it server-side before publishing content you did not write.
Does it support raw HTML inside Markdown?
Yes — Markdown allows inline HTML and it is passed through. That is what makes the sanitising note above matter if the source is untrusted.
Why does my table not render?
GFM tables need a separator row of dashes under the header, and a leading blank line if the table follows a paragraph. A single missing pipe on the separator row silently turns the whole thing back into plain text.