Markdown to PDF in your browser, no LaTeX
Paste Markdown, check the preview, then print it to PDF from Chrome. Headings, tables, lists, code blocks and quotes are laid out for paper, with a cover page, margins that suit A4 or Letter, and "Page X of Y" footers. Nothing is uploaded: the page turns your text into a document on your device, and the PDF is made by your own browser.
Paste some Markdown or load the example.
Preview (this is what prints)
How to get a good PDF
- Press Print or save as PDF. In the print window choose Save as PDF as the destination.
- Under More settings, turn Headers and footers off (the document prints its own footer) and Background graphics on (the quote bars and code blocks are shaded).
- Check the paper size matches the one you picked above, then save.
What it supports and where it stops
- Supported: headings, paragraphs, bold, italic, strikethrough, code, fenced code blocks, quotes, nested bullet and numbered lists, task lists, tables with alignment, rules, links and autolinks.
- Raw HTML in your Markdown is shown as text, not run. Links must be http, https, mailto or an anchor; anything else (such as
javascript:) is dropped. - Images are not loaded: this page cannot read your files, so each image is replaced by its alt text in brackets. The Foliokit command line tool embeds local images.
- Diagrams (Mermaid and similar) are not drawn. Export them as images first.
- No contents list with page numbers: Chrome cannot generate page numbers inside the text. Add a list of links yourself if you need one.
- The "Page X of Y" footer comes from CSS page margin boxes, which Chrome supports from version 131 (other Chromium browsers share the engine; we did not test them). We tested it on Chromium 141. Other browsers may ignore the footer and the cover-page rule; the text and layout still print.
- Your text is kept in this browser (local storage) so a reload does not lose it. Press Clear to remove it.
Prefer a command? node foliokit.mjs md notes.md notes.pdf in Foliokit does the same from a file (the first # heading becomes the title unless you pass --title), using the Chrome you already have, and it also has invoice, quote, receipt, statement, letter and certificate templates.