Markdown to PDF
Render markdown to a print-ready PDF in your browser. Paste, preview, save as PDF via browser print dialog. No upload, no server.
What is this for?
You wrote something in Markdown — a lab report, a syllabus, a one-pager, meeting notes — and now you need a PDF. Most online "Markdown to PDF" tools want you to upload the file, sign up, watermark the output, or download a 5 MB binary. None of that is necessary. Your browser already knows how to make a PDF: it does it every time you hit print and choose "Save as PDF" as the destination. This tool gives Markdown a nicely formatted preview with print-optimised CSS, then hands off to the browser's built-in print dialog. The file never leaves your computer.
How to use it
- Paste your Markdown in the left pane. The live preview on the right updates as you type.
- Pick a theme. Plain is the default — clean sans-serif, comfortable margins. Academic uses Georgia serif and wider margins, the look of a published essay. Modern is a tighter system-font layout for one-pagers.
- Pick a page size. A4 (the worldwide default outside North America) or US Letter.
- Click "Save as PDF" — your browser's print dialog opens. Set Destination to Save as PDF, click Save, choose a filename. Done.
- Or use the keyboard shortcut: Ctrl+P (Cmd+P on Mac), then change destination to PDF.
What's supported
- Headings (
#through######), bold, italic, inlinecode, strikethrough. - Fenced code blocks (
```python) with light syntax highlighting for JS / TS / Python / Go / JSON / shell. - Pipe tables with column alignment (
:---:,:---,---:). - Bullet, numbered, and nested lists.
- Blockquotes (printed with a left rule and light background).
- Images via URL —
. The browser fetches them when you print; if a page break splits one, your browser handles it. - Links — preserved as live links in the PDF when supported by your browser.
Common gotchas
- Margins come from
@pageCSS, not the print dialog. The theme sets them: Plain = 20 mm, Academic = 24/26 mm, Modern = 16/18 mm. Override in the print dialog only if you must. - Headers and footers in the print dialog are the browser's, not ours. Most browsers stamp the URL and date by default. Untick those in the dialog (under "More settings" / "Headers and footers") for a clean PDF.
- Page breaks happen automatically, but tables and code blocks try not to split across pages. If they do split badly, shorten the content above or change page size.
- Images need to be reachable URLs. Drag-and-drop image upload isn't supported — that would require either a server or a Base64-encoded URL, both of which defeat the "no upload" guarantee. If you have a local image, use the image-to-base64 tool and paste the result inline as
. - Backgrounds may not print by default. Most browsers strip background colours when printing. To keep code-block backgrounds, tick "Background graphics" in the print dialog.
- This is not LaTeX. Pandoc, Typst, or a real LaTeX toolchain make better-looking long-form documents. Use this tool when "good enough and instant" beats "perfect but takes 20 minutes to set up."
- Tested in Chrome, Edge, Firefox, Safari. Safari's PDF output can introduce extra page margins; if exact margins matter, prefer Chromium.
What it doesn't do
- No file upload — paste only. Your Markdown stays on your machine.
- No external rendering — no jsPDF, no html2pdf, no server round-trip. Just the browser print engine plus our CSS.
- No tracking, no signup, no watermark.