PDF to Markdown

Convert a PDF into clean Markdown — headings, lists, tables, links and pictures rebuilt from the text layout — 100% in your browser, no upload

Drop PDFs here or click to browse

🔒 Processed in your browser — never uploaded. Structure is inferred from text position, so the result is a close reflow, not a pixel-perfect copy. Links come from the PDF’s own link annotations; pictures become files beside the Markdown, which is why they arrive as a .zip.

Turn a PDF into clean Markdown

Drop a PDF and this tool reads its text layer and rebuilds the document as Markdown — spotting headings by their larger font size, turning bulleted lines into - list items, keeping numbered lists, rebuilding a page laid out as a grid into a GitHub pipe table, and starting a new paragraph where the line spacing jumps. Links come across as real links: the address is not in the text of a PDF at all, it lives in an annotation lying over the words, and the tool reads those and writes [text](url). Pictures come across too — a Markdown file cannot hold bytes, so each picture is written out beside the Markdown as images/page-1-1.png and referenced from it, which is why an illustrated document downloads as a .zip holding the .md and its pictures. Drop several PDFs at once and each one is converted and listed by its own name, with one button that downloads all of them. You get editable Markdown you can paste straight into a README, a static-site post, a wiki, or a notes app, and download as a .md file.

Runs in your browser — nothing is uploaded

Text extraction and the conversion both happen locally with pdf.js, so your PDF never leaves your device — safe for drafts and internal documents. Because the structure is inferred from where the text sits on the page, the result is a close reflow rather than a pixel-perfect copy: complex columns and exact styling are not recovered, and bold or italic runs come out as plain text. A page laid out as a grid is rebuilt as a GitHub pipe table, while a page of prose set in two columns is deliberately left as prose. A scanned PDF has no selectable text to read, and rather than send you elsewhere the tool offers to read the words on your own device and then converts the result.

Frequently asked questions

How does it decide what is a heading?

It measures the font height of every line and compares it to the body text size of the whole document. Lines that are clearly larger become headings, with bigger sizes mapped to higher levels (#, ##, ###). Bulleted lines become list items, numbered lines stay ordered, and a large gap between lines starts a new paragraph.

Does it work on a scanned PDF?

Not straight away — a scanned PDF is only pictures of pages, with no selectable text to convert. Rather than hand you an empty file, the tool says so and offers to read the words right here on your own device; once it has, the conversion runs on the result. Nothing is uploaded at any point.

What happens to links and pictures?

A link keeps its address. The URL is not in the text of a PDF at all — it lives in an annotation lying over the words — so the tool reads those and writes a real [text](url) link. Pictures cannot live inside a Markdown file, so each one is written out as a separate image file and referenced from the Markdown; when a document has pictures, a Download .zip button appears beside the plain .md one, holding the .md and its images folder together.

Can I convert several PDFs at once?

Yes. Drop or choose as many as you like and each one is converted in turn and listed by its own name. Click a name to see its Markdown and copy or download that one on its own, or take Download all (.zip) to get every one of them in a single archive.

Is my PDF uploaded anywhere?

No. The text is extracted and converted entirely in your browser. Your file never leaves your device and nothing is sent to a server, so it is safe for private documents and keeps working offline.