Convert PDF text and tables to Markdown format.
Click to select files or drag and drop
One or more PDF files
Your files never leave your device.
Processing...
Click or drag and drop your file to begin
Click the process button to start
Save your processed file instantly
Headings, paragraphs, lists, and basic bold and italic formatting are converted, and each page is separated by a horizontal rule (---) in the output. Heading levels are inferred from font sizes, so a document with inconsistent styling may come out with some headings at the wrong level.
When it's checked, pictures from the PDF are embedded directly in the Markdown as base64 data, so the single .md file is self-contained but can get large. Leave it off for text-heavy documents to keep the output small and readable in a plain editor.
The converter reads the PDF's text layer, so a scanned document that's only images has nothing to convert. Run it through OCR PDF first to add a text layer, then convert the result.
Complex layouts are the weak spot: multi-column text can be interleaved, and sidebars or footnotes may land in the wrong place. Expect to review and tidy the output for magazine-style pages, while single-column documents need little cleanup.
Upload multiple PDFs and click Convert once. One file downloads as filename.md; several come back as markdown-files.zip with one .md per PDF, and duplicate names get a numbered suffix.
No. PDF to Text gives you raw text with no structure, which is better for feeding into scripts. PDF to Markdown keeps headings, lists, and emphasis so the result is ready to paste into Obsidian, a wiki, or a static site generator.
If the file needs a password to open, you're prompted for it before conversion starts and the text is extracted as usual. The password isn't stored anywhere, and the Markdown output has no protection of its own.
No. Conversion runs on a PyMuPDF engine loaded into your browser as WebAssembly, and the .md file or ZIP is generated on your machine. Research papers, contracts, and internal docs stay private.