Skip to site navigation
PDF

Markdown to PDF

Renders your Markdown, then hands it to the browser's own print engine. The PDF is written on your machine.

1Source

The sample quotes Marcus Aurelius (blockquote), Meditations, Book 10 (blockquote only).

In
# Notes on a Slow Correspondence
Out
Notes on a Slow Correspondence
2Print it

Opens your browser's print dialog. Choose Save as PDF as the destination. The file is written on your machine.

Batch

Have several .md files instead?

Drop them in and print each one as a PDF, one after another.


Mechanism

How this works

The Markdown is parsed and rendered into a styled document in the page, then the browser's print pipeline is invoked against it. Every modern browser ships a PDF writer for exactly this, and using it means the document never needs a server. Page size and margins are decided in the print dialog, as is whether backgrounds print, and we override none of it.

Limits

What it cannot do

  • Page breaks land where the print engine puts them. There is no control for forcing a break at a particular heading.
  • Fonts come from what your machine has available, so the same Markdown printed on another computer can paginate differently.
  • Some mobile browsers offer no Save as PDF destination at all, which puts this out of reach on those devices.
Specimen

A short document about writing things down to last, built from the same elements this sample exercises: heading, list, blockquote, inline code.

The default line is Marcus Aurelius (blockquote); the rest is original, Meditations, Book 10 (blockquote only). Public domain, like every sample on this site.

Questions

Questions people actually ask

Why does this open a print dialog?
Because the browser already contains a good PDF writer, and using it means your document never leaves the machine. Choose Save as PDF as the destination rather than a printer.
Can I control page size and margins?
Yes, through the print dialog, which is where your browser exposes them. We do not override those settings, so what you pick is what you get.
Why do my code blocks lose their background colour?
Print dialogs default to leaving backgrounds out to save ink. Turn on the background graphics option, usually filed under more settings, and the shading comes back.