Markdown to HTML Converter — Live Preview & Safe HTML Export

Convert Markdown to clean, semantic HTML with a live scroll-synced preview, GitHub Flavored Markdown, footnotes, alert callouts and YAML front-matter handling. Every document is sanitised with a visible safety report, styled by your choice of export theme, and converted entirely in your browser — nothing is uploaded, ever.

100% Client-Side PrivacyZero Installation
YAML front matter detected (2 fields)
Markdown
217 words · 1,254 chars · 47 lines

How to Use

  1. 1Type or paste Markdown in the editor, or drop a .md file onto it.
  2. 2Pick the dialect (GFM, line breaks), the raw-HTML safety mode and an export theme.
  3. 3Check the live preview and the safety report above it — what was removed, counted.
  4. 4Copy the clean HTML, copy formatted text for Word, download a standalone .html page, or print to PDF.

Key Features

  • ✓

    A safety report, not a safety promise

    Most converters either execute whatever HTML is hiding in your Markdown or silently strip it and say nothing. This one sanitises the output against an allowlist and then tells you exactly what it removed — scripts, event handlers, unsafe links, dodgy attributes — in a strip above the preview. Converting a README from a repo you don't control stops being a leap of faith.

  • ✓

    The preview is the export

    Pick one of four themes — GitHub Light, GitHub Dark, Serif for print, or Minimal — and it styles the live preview, the printed page and the downloaded .html file identically. No more converting blind and discovering in production that your tables are unstyled: what you check on screen is byte-for-byte the document you ship.

  • ✓

    The GFM the others skip: footnotes, alerts, front matter

    Pipe tables and task lists are table stakes. This converter also handles GitHub footnotes with backlinks, [!NOTE] / [!TIP] / [!WARNING] alert callouts rendered as styled boxes, and YAML front matter — strip it, keep it, or render it as a table — because real-world Markdown (blog drafts, docs, READMEs) is full of all three.

  • ✓

    An outline that navigates both panes

    Long documents get a clickable outline built from your headings. Click a heading and the preview scrolls to it and the editor scrolls to the same section, so a 400-line release note stays navigable. Exported pages can carry the same table of contents, with stable anchor ids on every heading, built in.

  • ✓

    Syntax highlighting that never pollutes your HTML

    Code blocks in the preview get a language badge, a copy button and highlighting for JavaScript, TypeScript, Python, Bash, JSON, HTML and CSS. The HTML you copy or download stays clean, semantic and span-free — paste it into a CMS and it takes the site's own styles, exactly as exported markup should.

  • ✓

    Private by architecture, not by policy

    The parser is bundled with the page and runs in your browser; there is no upload endpoint to trust and nothing to delete afterwards. Your draft autosaves to this device only, and the tool installs as its own app so it keeps working offline. Server-side converters ask you to believe a promise; this one removes the need.

Got Questions?

Frequently Asked Questions

Is this Markdown to HTML converter free?
Yes — completely free, with no account, no watermark and no document limit. The converter runs in your browser, so there is no server cost to paywall.
Does it support GitHub Flavored Markdown (GFM)?
Yes. Tables with alignment, task lists, strikethrough and autolinks are all supported, and GFM can be switched off if you need strict CommonMark behaviour instead.
Are footnotes and GitHub alert callouts supported?
Yes. Footnotes render at the foot of the document with backlinks, and blockquotes starting with [!NOTE], [!TIP], [!IMPORTANT], [!WARNING] or [!CAUTION] become styled alert boxes — in the preview and in the export.
Is the converted HTML safe to use?
In the default Sanitise mode the output is rebuilt against an allowlist: scripts, event handlers, iframes and unsafe links (including javascript: URLs, even encoded ones) are removed — and the strip above the preview counts exactly what was taken out. You can also choose to escape raw HTML entirely, or allow it for documents you fully trust.
What happens to YAML front matter?
You choose: strip it (the default, right for blog drafts), keep it as Markdown text, or render it as a tidy table at the top of the document. A block only counts as front matter when it really parses as key/value YAML, so a document starting with a horizontal rule is never mangled.
Can I control how the exported page looks?
Yes. Four themes — GitHub Light, GitHub Dark, Serif for print and Minimal — style the preview, the printed page and the downloaded .html file identically. Headings get stable anchor ids, and you can add a table of contents to the export with one checkbox.
Does syntax highlighting end up in my exported HTML?
No. Highlighting, code-block copy buttons and the language badge exist only in the on-screen preview (and the visual download). The HTML you copy stays clean and semantic, with language classes on code blocks so your own site's highlighter can take over.
Is my Markdown uploaded or stored anywhere?
No. Parsing and sanitising run locally in your browser. Your draft autosaves to this device only (local storage), so you can close the tab and pick up where you left off — it is never sent to a server.

What a Markdown to HTML converter has to get right

Converting Markdown to HTML sounds like a solved problem — until the document is real. A real document has a YAML front-matter block from a static site generator, a footnote added by a colleague, a GitHub alert callout, a table with alignment, a code block whose contents include the characters <div>, and — if it came from a public repo or a pasted snippet — possibly a piece of raw HTML you did not write and should not trust. A converter that only handles the happy path turns the front matter into a horizontal rule and a blob of text, drops the footnote silently, and either executes the raw HTML in your browser or mangles it without telling you. This tool was built around the unglamorous parts: a standards-based parser (the marked engine, bundled with the page rather than loaded from a CDN), a real sanitiser with a visible report, and an export pipeline where the preview, the printed page and the downloaded file are the same document wearing the same theme.

The output itself is deliberately boring, which is the point: headings become h1–h6 with stable anchor ids, pipe tables become table with thead and tbody, task lists become real disabled checkboxes, and there are no wrapper divs, inline styles or tracking artefacts to clean up afterwards. Copy the fragment into a CMS, a GitHub Pages site or an email template and it takes on the destination's own styling.

Convert a document in four steps

1. Bring the Markdown in. Type it, paste it, drop a .md file onto the editor (up to 2 MB), or start from the built-in sample that exercises every feature. 2. Set the dialect. GitHub Flavored Markdown on or off, single-line breaks on or off, and how raw HTML and YAML front matter should be treated. 3. Check it like a reader. Split view with scroll-synced panes, the safety strip above the preview, the outline for long documents, and the theme you intend to ship. 4. Take it out the way you need it. Copy the clean HTML fragment, copy formatted text for Word or Google Docs, copy a complete standalone page, download the .html file, or print it to PDF — all from the same conversion, so the formats can never disagree with each other.

The safety model: sanitised means counted, not just claimed

Markdown allows raw HTML, and raw HTML can carry <script> tags, onerror-style event handlers and javascript: links — including disguised ones with encoded characters or tabs inside the scheme, which the checker here decodes before judging. In the default Sanitise mode every document is rebuilt against an allowlist: known-safe elements and attributes survive, everything else is removed and counted, and the strip above the preview shows the count — “removed: 1 script · 2 event handlers · 1 unsafe URL”. Nothing is silently executed and nothing is silently dropped. Two other modes exist for specialists: Escape shows embedded HTML as literal text (the right choice for documentation about HTML), and Allow passes raw HTML through untouched for documents you wrote and fully trust — it is labelled unsafe in the interface, because it is. Your own generated markup is safe by construction in every mode: link schemes are checked even for links written as Markdown.

Supported syntax — and the honest limits

Supported: CommonMark plus GitHub Flavored Markdown — headings with anchors, emphasis, strikethrough, links and images, fenced and indented code, pipe tables with alignment, task lists, nested lists, blockquotes, autolinks — plus footnotes with backlinks, GitHub alert callouts ([!NOTE], [!TIP], [!IMPORTANT], [!WARNING], [!CAUTION]) and YAML front matter. Not rendered: LaTeX mathematics and Mermaid diagrams are not drawn in the preview — they need two heavy rendering libraries to serve two niche syntaxes. Your ```mermaid and ```math blocks stay intact in the exported HTML with their language classes, so a downstream renderer (or GitHub itself) can still draw them; this page simply will not pretend to. It is also a single-document tool: for converting a whole folder of files, a command-line tool like Pandoc or a static site generator is the right instrument, and for keeping documents in sync across devices you want an editor with cloud storage — this page deliberately has no accounts, no uploads and no sync.

Writing in Markdown, publishing everywhere else

The documents people convert are remarkably consistent: README files that need to become documentation pages, blog drafts written in a text editor and pasted into a CMS, release notes, course material, email newsletters and the Markdown that large language models produce when you ask them for structured writing. In every case the workflow is the same — write where it is comfortable, publish where it is required — and the failure modes are the same too: a table that arrives unstyled, a footnote that vanishes, a heading structure that breaks the page it lands in. That is why the theme system matters as much as the parser: choose the exported theme to match the destination and the document arrives already dressed. When the job is the reverse — an HTML page that needs to become Markdown — or when the Markdown is really a counting and editing task, the word counter and the JSON formatter cover the neighbouring ground; this page's one job is the Markdown-to-HTML hop, done carefully.

Related Tools You Might Like

Handy utilities in Developer Tools

View all Developer Tools