katlab tools/pdf-to-markdown

PDF to Markdown

Extract the text of a PDF and rebuild it as clean Markdown — headings, lists and paragraphs — all in your browser.

Your PDF is processed locally. Nothing is uploaded to a server.

How to convert a PDF to Markdown (free)

  1. Drop your PDF onto the box above, or click to choose it.
  2. Optionally set a page range like 1-5, 8 and toggle heading detection.
  3. Click Convert to Markdown, then Copy the result or Save it as a .md file.

What this tool does well — and what it doesn't

A PDF does not store headings, lists or paragraphs the way a Word document or web page does. It stores glyphs at fixed positions on a page. This converter reads that text layer and its font sizes, works out which size is your body text, and rebuilds structure from the evidence: larger lines become headings, bulleted and numbered lines become Markdown lists, and lines that flow together become paragraphs. Hyphenated words split across line breaks are rejoined.

Because the structure is inferred, plain prose, articles, reports and documentation convert cleanly, while complex tables and multi-column layouts can come out imperfect — the text is all there, but its arrangement may need a tidy-up. That is a limitation shared by every PDF-to-Markdown tool, AI ones included.

Does it work on scanned documents?

No. Scans and image-only PDFs have no text layer to read, so there is nothing to extract. If you need those, you need optical character recognition (OCR) first. This tool is built for PDFs that already contain real, selectable text.

Is it really private?

Yes. Open your browser's network tab and watch: no request carries your document. Everything runs in JavaScript on your machine, and the tool works offline once the page has loaded.

Where does Markdown help?

Markdown is the plain-text format behind README files, static sites, wikis, note apps like Obsidian and Notion, and most AI chat tools. Converting a PDF to Markdown gives you clean, portable text you can paste anywhere, edit by hand, or feed to a language model without the noise of PDF formatting.