Drop a PDF and get its text back as clean Markdown — headings, paragraphs and reading order intact, converted in your browser.
Converted in your browser — the file is never uploaded. 20MB limit.
A PDF is a description of where ink goes on a page, not a document with structure, which is why copying out of one gives you text with the line breaks in the wrong places and no headings at all. This converter reads the text runs pdf.js extracts, measures the font sizes across the whole document, and uses the outliers to work out which lines were headings — so a report comes back as # and ## rather than a wall of paragraphs. Everything happens inside your browser tab: the file is never uploaded, which matters when the PDF is a contract, a medical letter, or an unreleased spec. The most common reason people want pdf to markdown now is feeding a document to an AI model or a docs repo, and both want structure, not a screenshot of a page.
Drop your PDF onto the panel above, or click to browse for it — nothing is uploaded, the file is read in your browser.
Pages are read one at a time, and the Markdown appears on the right as they finish. Headings are inferred from the font sizes the document actually uses.
Copy the Markdown, download it as a .md file, or publish it as a page you can send someone a link to.
A support lead is moving a vendor’s 24-page integration guide into their team’s internal docs, which are Markdown files in a Git repo. Selecting the text in a PDF reader and pasting it gives them one continuous block: every line wrapped where the page column ended, the section titles indistinguishable from body text, and the numbered steps run together. Rebuilding the outline by hand for 24 pages is the kind of job that gets postponed forever. They drop the PDF here instead. The heading levels come back because the guide’s section titles are set several points larger than its body copy, so the converter can tell them apart. The file chip reports 24 pages with a text layer, so they know nothing was quietly skipped. They download document.md, paste it into integration-guide.md, spend ten minutes fixing the two tables that did not survive, and open the pull request the same afternoon.
Because there is nothing to convert. A scan is a stack of photographs — the words are pixels, not text — and no converter can read words that are not in the file. Rather than hand you an empty document that looks like a bug, this tool says so outright. Run the file through OCR first (Acrobat, Preview on macOS, or uploading it to Google Drive and opening it with Google Docs all work), save the result, and convert that copy.
By size. The converter collects the font size of every text run in the document, works out the size used for ordinary body copy, and treats consistently larger runs as headings — the largest becoming #, the next ##, and so on. This works well for reports, papers and manuals, which are typeset with a real hierarchy. It cannot work on a document set entirely at one size, such as a plain-text export or a legal filing; those come back as paragraphs, which is the honest result.
Images are dropped — there is nowhere to put them in a Markdown file without hosting them somewhere. Tables are the weakest part of any PDF conversion: a PDF table is just text positioned in a grid, with no markup saying "this is a table", so simple ones often survive as aligned text while complex ones flatten into lines. Multi-column layouts are read in the order pdf.js reports the text, which is usually column by column. Skim the output before you commit it.
No. The conversion runs in your browser tab using a local copy of pdf.js, and the bytes never leave your machine — you can watch the network tab and see nothing go out. That is also why there is a 20MB limit: your tab does the work, and a very large document would run it out of memory. Publishing is the one action that sends anything anywhere, and only the Markdown you chose to publish is sent.
Yes — that is what the Publish button does. It hosts the converted Markdown as a rendered page at its own URL, which is often more useful than emailing a .md file nobody can open. Free links last seven days; paid plans keep them permanently.
Los enlaces gratuitos duran 7 días con una cuenta gratuita. Con un plan de pago, cada página que publiques se queda online de forma permanente.
Ver precios