PDF to Markdown
Structured Markdown, ready to paste into a model or an index.
Drop a PDF here
or browse your device
Your files are processed on your device. Nothing is uploaded.
Next step
All tools
How it works
A PDF does not contain paragraphs. It contains glyphs at coordinates, and everything a reader sees as a heading, a list or a column is something the eye infers from size, weight and position. Copying text out of a PDF throws that inference away, which is why pasted PDF text arrives as a wall of broken lines with the page numbers still in it.
This tool rebuilds the structure instead. It measures the body text size of the whole document, then reads anything consistently larger as a heading and ranks the sizes it finds into levels, so a title becomes an h1 and its sections become h2s. Bulleted and numbered lists keep their markers, and a numbered list that starts at seven still starts at seven.
Reading order is the part most converters get wrong. On a two column page, sorting text by vertical position interleaves the columns line by line and produces sentences that never existed. We look for the gutter first and read each column to its end, so an academic paper comes out in the order it was written rather than the order it was drawn.
Wrapped lines are joined back into paragraphs, words the typesetter split across a line break are closed up, and running headers, footers and page numbers are detected by their repetition and removed. Those are page furniture, and in a chunk fed to an embedding model they are noise sitting in the middle of a sentence.
Everything happens on your device. The file is never uploaded, which matters more than usual here: the documents people most want to put in front of a model are contracts, reports and papers they are not free to send to someone else's server.
One limit worth stating plainly. This reads text, so a scanned page has nothing for it to read. If your PDF is images of paper, you need OCR first, and the tool will tell you rather than hand back an empty file. Tables come out as plain lines for now rather than Markdown tables.