Docz.me just launched — 14 days free on any paid plan. See pricing

Markdown to HTML

Self-contained HTML in one click. Theme-driven inline styles, GFM-compatible output, no CSS dependencies.

Docz Team · EngineeringPublished
255 / 512,000 bytes

Markdown → HTML

How to convert

Three steps. No signup, no email, no cloud locker.

  1. 1

    Paste or upload

    Drop your Markdown or MDX file into the editor, paste source directly, or click Upload to load a file from disk.

  2. 2

    Choose format and theme

    Pick PDF, DOCX (Word), or HTML as the output format. Optionally switch to Academic for a cover page or README/Blog for GitHub-style typography.

  3. 3

    Convert and download

    Click Convert & Download. The file streams back as a real binary — no signup, no email, no cloud locker. Your source is never stored.

Why this converter

Built for the docz.me invoicing app — released as a free standalone because the underlying pipeline turned out to be useful on its own.

  • Server-side rendering, real binaries

    Output is a real PDF, real DOCX, or self-contained HTML — not a screenshot or rebadged HTML. Selectable text, embedded fonts, proper page breaks.

  • GFM and MDX in the same pipeline

    Tables, task lists, footnotes, autolinks parse like GitHub. Switch to MDX input for Callout / CodeBlock / Tabs / Steps components — all rendered statically.

  • Three themes, one source

    Default for clean modern docs, Academic with cover page and numbered headings, README/Blog for GitHub typography. Switch and re-render — keep your source.

  • Privacy first

    Stateless serverless function. Source text is never logged or persisted. 500 KB cap enforced before parse so the worst case is a friendly error.

  • MDX without the JS-execution risk

    Parse-only path. JSX expressions, ESM imports, and unknown components are rejected by design. No code from your source ever runs server-side.

  • No signup, no email gate

    Free, anonymous, ungated. Built by docz.me — the invoicing app for freelancers — but the converter stands alone with no account requirement.

Most Markdown-to-HTML tools produce a fragment that depends on whatever stylesheet the host page happens to load. That works inside a CMS; it falls apart the moment you save the file to disk and email it. This converter outputs a complete HTML document — `<!doctype>`, `<head>`, inline `<style>` block, body — so the file renders identically whether you open it offline, attach it to an email, or ship it to a static host.

Conversion runs through `remark-rehype` after MDAST transformation, so semantic elements come out right: real `<h1>` through `<h3>`, `<ol>` and `<ul>` for lists, `<pre><code>` for fenced blocks, real `<table>` markup with `<th>` headers. Inline styles inherit from the chosen theme — pick Academic for serif typography and justified body, README/Blog for GitHub-style code contrast, Default for the clean baseline.

Why no client-side JavaScript? Because every byte of JS in a downloaded file is a maintenance liability. The output is pure HTML + CSS, opens in any browser made in the last decade, and prints sanely. Need interactive callouts or syntax highlighting? Switch the input to MDX and use the Callout / CodeBlock components — those still render statically but ship in a richer wrapper.

Frequently asked

Is the HTML self-contained?

Yes. All styling lives in an inline `<style>` block in the `<head>`. No external CSS, no JavaScript, no font requests. Open the file offline and it renders identically.

Will the output validate as HTML5?

Yes. The pipeline produces valid HTML5 with a proper doctype, charset declaration, and viewport meta. Validation against the W3C validator is part of our smoke checks.

Can I copy the styles into my own CSS file?

The inline style block is plain CSS — copy it out, paste into a stylesheet, and convert the document body without the `<style>` tag wrapper. We don't auto-extract today; an opt-out flag is on the v1.1 list.

Are headings anchor-linkable?

Not in v1. Auto-generated id slugs and a TOC component are slated for phase 5 polish. For now, headings are plain `<h1>`/`<h2>`/`<h3>` without ids.

Can I use this for static-site source material?

Yes — convert your README to HTML, paste the body section into your site template. Or export to PDF + DOCX simultaneously to attach to a release announcement.

More converters

Searching for the archived DoczJS library? Compare modern alternatives →