filetity

MD -> PDF · Local tool

Markdown to PDF

Turn a markdown file into a PDF, with headings, tables and code kept.

Last updated

  1. 01 / Your device

    the file stays here

  2. 02 / Browser memory

    the work runs locally

  3. 03 / Back to you

    saved on this device

When you would use this

Situations, not settings.

A README somebody wants as a document
Documentation written in markdown has to be sent to a client, a manager or a regulator who wants one file they can open.
Notes written in a markdown editor
Obsidian, Bear and VS Code all write plain .md, and printing from them gives you their styling rather than a clean page.
A spec or proposal that has to be signed
Turning it into a PDF freezes the layout so the version people mark up is the version you sent.

How it works / no cloud

A conversion engine, not an upload form.

The markdown is parsed in the page, styled for paper, and handed to your browser's own print engine, which is what turns it into a PDF. That is deliberate rather than a shortcut: a print engine already knows how to break pages, keep a heading with the paragraph under it and shape scripts outside the Latin alphabet, and reproducing that with a PDF library means shipping a megabyte of fonts and still doing it worse. Anything executable in the file is stripped before the document is built, because markdown can carry raw HTML and a README is usually a file from a stranger.

  • Offline ready
  • Installable app
  • No file limit queue

Straight answers

No accordion. Nothing hidden.

Is it free?
Yes, with no watermark and no page limit.
Does it need an account?
No. There is no account system.
Is my file processed on my device?
Yes. The file is read by your browser and never uploaded. There is no server to send it to.
What formats are supported?
MD, Markdown and MDX in. A PDF out, saved through your browser's print dialog, with the text still real text. Plain .txt is deliberately not accepted, because markdown joins single line breaks into one paragraph and a text file would quietly lose its layout.
What are the limits?
The last step is the browser's print dialog rather than a download, so you choose Save as PDF there. Remote images are not fetched, because the document is built with a policy that refuses the network; an image referenced by URL comes out blank rather than quietly loading from someone else's server. Raw HTML in the file is rendered, but scripts and event handlers are removed first.
Does it work on mobile?
Yes, on any modern mobile browser. Large files are limited by the memory the phone gives the browser.
Does it work offline?
Yes. Nothing is downloaded to make this work, so it keeps working with no network connection once the page has loaded.
Why does the print dialog open instead of downloading a file?
Because the browser's print engine is what makes the PDF, and it is better at it than anything that would fit in a page. It breaks pages sensibly, keeps a heading with the text under it, and handles scripts the Latin alphabet does not cover. Choose Save as PDF as the destination and you get a file; in Chrome, unticking Headers and footers keeps the date and URL off the pages.
Are tables and code blocks kept?
Yes. GitHub-style tables get borders, code blocks keep a monospace face and wrap rather than running off the edge of the page, and blockquotes keep their rule. A table or code block is not split across a page break where it can be avoided.
Will the images in my README show up?
Only if they are embedded in the file itself. An image referenced by URL is not fetched, because the print document is built with a policy that blocks the network entirely, which is the same rule that makes the privacy claim on this page true. That is a deliberate trade: the alternative is your README quietly telling someone else's server that you opened it.
Is a .md file with HTML in it safe here?
Markdown allows raw HTML and this renders it, so the formatting survives. Script tags and inline event handlers are removed before the document is built, and the document itself is loaded under a policy that cannot run script or reach the network. Two independent things have to hold rather than one.

Keep working locally

7 available · more coming