Markdown → HTML
Paste Markdown, copy the rendered HTML. Output is sanitized and safe to paste into any CMS or blog platform.
Why convert client-side
Many "Markdown to HTML" sites upload your text to their server, run it through a parser there, and send the HTML back. That's a privacy and bandwidth tradeoff for nothing — every modern browser can run marked just fine, and the converter is ~30KB of JavaScript.
This tool does it in your browser. Open DevTools → Network and verify: no requests are sent while you convert.
What's included in the output
GFM features that get rendered:
- Headings (
# H1through###### H6) - Bold (
**bold**) and italic (*italic*) - Strikethrough (
~~text~~) - Lists (ordered, unordered, nested, task lists with checkboxes)
- Tables (with alignment markers)
- Fenced code blocks with language hints
- Inline code (
`code`) - Links and autolinks (
https://example.combecomes a link) - Blockquotes (with nesting)
- Images with alt text
- Horizontal rules (
---) - Line breaks (
\nbecomes<br>)
What gets sanitized
DOMPurify strips:
<script>tags- Event handlers (
onclick,onload, etc.) javascript:URLs- Other XSS-risky patterns per OWASP guidance
Embedded HTML that's safe (e.g. <details>,
<sub>, <kbd>) passes through.
Markdown supports raw HTML by spec; the sanitizer ensures it can't be
weaponized.
Batch conversion (CLI alternatives)
For converting many files at once, use a command-line tool:
# marked (Node)
npm install -g marked
marked input.md > output.html
# pandoc (cross-platform, more features)
pandoc input.md -o output.html
# mdbook (Rust, great for docs)
mdbook build
# In your build pipeline (JavaScript)
import { marked } from "marked";
const html = marked.parse(markdown);
HTML structure
The "Download .html" button packages the output in a minimal, styled HTML document:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Markdown export</title>
<style>/* GitHub-styled defaults */</style>
</head>
<body>
<!-- your rendered markdown -->
</body>
</html> Open the file in any browser, or share it as a self-contained doc. For paste-into-CMS use cases, prefer "Copy HTML" — that gives you just the inner content.
FAQ
What's the difference between this page and the main viewer?
Same engine — but this page defaults to the preview-only mode and frames the UX around 'I have markdown, give me HTML.' Click 'Source' to switch to split view.
What HTML do I get?
Clean GFM-rendered HTML. Standard tags only (<h1>, <p>, <table>, etc.) — no inline styles, no JavaScript, no framework-specific markup. Safe to paste into any CMS.
Is the HTML sanitized?
Yes. Output passes through DOMPurify — <script>, event handlers, and other risky patterns are stripped. The 'Copy HTML' button always gives you safe-to-render output.
What's the difference between 'Copy HTML' and 'Download .html'?
Copy HTML gives you the inner content only — the rendered tags without a wrapping document. Paste into your CMS, blog editor, etc. Download .html wraps it in a complete <html> document with default styling — open the file in any browser to view.
Can I batch-convert multiple files?
Not in the browser tool. For batch conversion, use marked or pandoc from the command line — see the code examples below.