Skip to content
Word→MDpdf-inspector · PDF to Markdown
pdf-inspector engine · in-browser · private

PDF to Markdown Converter

Drop a text-based PDF and get clean, structured Markdown — headings, pipe tables, lists and links reconstructed from the page layout. Powered by the pdf-inspector Rust engine compiled to WebAssembly, running entirely in your browser.

Click to start converting

Go to the converter — PDF to Markdown output selected (pdf-inspector engine)

Start now

Supported input formats

格式扩展名说明
Text-based PDF.pdfNative digital PDFs — reports, papers, specs, invoices
Mixed PDF.pdfText pages convert; image-only pages are flagged for OCR
Scanned PDF.pdfNo text layer — detected and rejected with a clear message (OCR coming later)
Multi-column PDF.pdfReading order reconstructed across newspaper-style columns

How PDF to Markdown conversion works

PDF is a printing format, not a document format — it stores painted glyphs at coordinates, with no concept of headings, paragraphs or tables. A converter has to reconstruct semantics from geometry: font sizes become heading levels, aligned rectangles become table cells, column positions become reading order.

This page runs the pdf-inspector engine, a Rust parser compiled to WebAssembly. It classifies your PDF first (text-based, scanned, or mixed), decodes embedded fonts through ToUnicode CMaps (CJK included), rebuilds the reading order for multi-column layouts, and recovers table structure from rectangle and line grids — then emits GitHub Flavored Markdown.

Everything runs locally in your browser tab. The PDF never leaves your device — no uploads, no accounts, no server processing.

Getting the best conversion results

The engine works best on native digital PDFs — anything produced by Word, LaTeX, InDesign or a PDF printer. Scanned documents have no text layer and are detected automatically; they need OCR, which is on the roadmap.

Enable the "Optimize for LLMs / AI" option to switch the output to the compact profile: fewer filler tokens, single-line paragraphs, and page markers you can use for citations. This is the recommended setting when feeding documents to ChatGPT, Claude or a RAG pipeline.

Complex tables with merged cells and financial reports with multi-page continuations are recovered by heuristics — always skim the table rows after conversion. For PDF to HTML, RST or LaTeX, the converter produces Markdown first and pipes it through the Pandoc engine automatically.

Who uses PDF to Markdown

AI engineers preparing context for RAG pipelines — Markdown structure gives chunkers natural boundaries, and the compact profile cuts token cost on every request.

Researchers and analysts moving papers, financial reports and invoices into Obsidian, Notion or version-controlled docs-as-code repositories, where Markdown diffs cleanly and renders everywhere.

PDF to Markdown FAQ

+Is my PDF uploaded to a server?

Never. The pdf-inspector engine runs as WebAssembly inside your browser tab. The file stays on your device — the Network panel shows no upload traffic during conversion.

+Does it preserve tables?

Yes. Table structure is recovered from rectangle boundaries, ruling lines and column alignment — including financial tables that continue across pages. Always skim complex tables after conversion.

+Can it convert scanned PDFs?

Not yet. Scanned and image-only PDFs have no text layer and require OCR. The engine detects them automatically and tells you which pages are affected instead of producing garbage output.

+Does it handle multi-column layouts?

Yes. The layout analyzer reconstructs the logical reading order from text coordinates, so two-column academic papers and newsletter-style PDFs come out in the correct sequence.

+What about Chinese and other CJK PDFs?

The engine embeds CJK character maps (ToUnicode CMaps), so Chinese, Japanese and Korean text decodes correctly without system fonts.

+Can I convert PDF to HTML, RST or LaTeX?

Yes. Pick the output format in the converter — the PDF is converted to Markdown first, then piped through the Pandoc engine to your target format, all in your browser.

Convert to other formats