Convert PDF Documents to Markdown
.pdf into clean Markdown, directly in your browser using Mozilla's pdf.js. Processing runs in a Web Worker — the interface stays responsive on large files, and nothing is ever uploaded.Processing happens 100% in your browser — nothing is uploaded.
PDF conversion extracts text only
How to convert a PDF to Markdown
- Upload: drop your .pdf file onto the dropzone, or click to browse.
- Process: pdf.js extracts the text layer page by page inside a Web Worker — watch the live progress counter.
- Download: copy the Markdown to your clipboard or save it as a .md file.
Why Convert PDF to Markdown with MD Convert?
Clean, structured text output
Each page is emitted as a Markdown section with reconstructed line breaks. Headings inferred from font size are promoted to ATX-style Markdown headings, giving you a document you can edit immediately.
100% local — your PDF never leaves your device
pdf.js runs entirely inside a browser Web Worker. No file is transmitted to any server, making this safe for confidential contracts, financial reports, and regulated documents.
Handles large PDFs without freezing the browser
Pages are processed one at a time in a streaming loop. Memory is released after each page, so peak usage stays constant whether your PDF is 10 pages or 500.
PDF to Markdown: Before and After
The selectable text layer of a two-page report, reconstructed into Markdown. Each page becomes its own section, and font-size jumps are promoted to headings.
[page 1]
Client-Side Document Conversion (18pt, bold)
A Privacy Analysis (13pt)
Abstract (13pt, bold)
We examine the trade-offs between (10pt)
browser-based parsing and server-side
conversion pipelines.
[page 2]
2. Method (13pt, bold)
Text-layer extraction was performed (10pt)
with pdf.js in a dedicated Worker.## Page 1
# Client-Side Document Conversion
## A Privacy Analysis
## Abstract
We examine the trade-offs between browser-based parsing and server-side
conversion pipelines.
## Page 2
## 2. Method
Text-layer extraction was performed with pdf.js in a dedicated Worker.Understanding the PDF Format: ISO 32000-2
- Format
- Portable Document Format
- Specification
- ISO 32000-2
- Media type
application/pdf- Parser used
- pdf.js (Mozilla)
PDF is a page-description format, not a document format, and that single fact explains almost everything about why PDF-to-Markdown conversion behaves the way it does. Standardised as ISO 32000, a PDF describes where marks go on a fixed-size canvas: this glyph at these coordinates, in this font, at this size. It is a printing instruction set. What it does not natively contain is the information Markdown is made of — that a run of text is a level-two heading, that these rows form a table, that this paragraph continues from the previous page.
Text in a PDF is stored as a sequence of positioned show-text operators inside content streams. There is no guarantee those operators appear in reading order, no guarantee that a visual line of text is a single operator, and no guarantee that adjacent words are even in the same stream. Extracting readable prose therefore means reconstructing structure from geometry: grouping glyphs into words by horizontal advance, words into lines by baseline position, and lines into paragraphs by vertical spacing.
This converter uses pdf.js, the same engine Firefox ships as its built-in PDF viewer, to walk each page's text content and rebuild that structure heuristically. Font size relative to the document's body text is used to promote likely headings to ATX Markdown headings. The result is genuinely editable prose for text-based PDFs — and, for the reasons below, very little for scanned ones.
Why scanned PDFs produce nothing (and what to use instead)
A scanned document is a PDF whose pages contain a single raster image. There is no text layer at all — no show-text operators, no glyphs, no font information. Running text extraction against it returns an empty string, and no amount of parser sophistication changes that, because the information simply is not present in the file.
Recovering text from an image requires optical character recognition: a model that looks at pixels and predicts characters. That is a fundamentally different and much heavier operation, and it is not something this converter performs. If your PDF opens in a viewer but you cannot select or search the text with Ctrl+F, it is a scan, and you need an OCR tool rather than a text extractor.
A useful diagnostic: open the PDF and try to select a single word. If the selection highlights a rectangle covering the whole page rather than the word, the page is an image. Many PDFs are also hybrids — a born-digital cover page followed by scanned appendices — in which case extraction returns the first pages and silently skips the rest, which is why the converter warns when output is suspiciously short relative to page count.
Why tables do not survive PDF extraction
There is no table object in a PDF's content stream. What looks like a table is a set of text runs positioned to line up, sometimes accompanied by unrelated line-drawing operators for the borders. Nothing marks a cell as a cell, associates a value with a column header, or records that two visually adjacent numbers belong to the same row.
Reconstructing a table therefore means inferring a grid from x-coordinate clustering, and that inference is fragile in exactly the cases tables are used: right-aligned numeric columns, cells whose content wraps onto two lines, merged header cells spanning several columns, and columns separated by whitespace rather than rules. A converter that emits confident-looking pipe tables from PDF geometry will produce plausible but subtly wrong data — cells shifted by one column, wrapped values split across rows — which is considerably worse than producing plain text, because the corruption is not visible.
This converter therefore does not attempt table reconstruction. Tabular regions come out as positioned text lines. If your source data originated in a spreadsheet, converting the original file with the Excel or CSV converter will give you a correct Markdown table; going via PDF is a lossy round-trip that discards the structure you need.
Streaming extraction and constant memory use
Large PDFs are processed one page at a time in a sequential loop rather than in parallel. This is a deliberate architectural choice with a measurable consequence: after each page's text is extracted, the page object's cleanup routine runs and the reference is dropped, so the browser can reclaim that memory before the next page loads.
The obvious alternative — mapping every page to a promise and awaiting them all at once — is faster on small documents and fails badly on large ones, because it holds every decoded page resident simultaneously. Peak memory then scales linearly with page count, and a few hundred pages is enough to trigger an out-of-memory crash in a browser tab. Under sequential extraction, peak memory stays at roughly one page regardless of whether the document is five pages or five hundred.
Because extraction runs inside a Web Worker, the main thread stays responsive throughout: the page scrolls, buttons respond, and a determinate progress bar reports "page N of TOTAL" as the loop advances. A long PDF takes longer, but it never freezes the interface and never hits a size ceiling imposed by an upload limit.
Encryption, permissions and password-protected files
PDF supports two distinct kinds of protection, and they behave differently. An owner password restricts permissions — printing, copying, editing — while leaving the content readable; a user password encrypts the document so it cannot be opened at all without the passphrase.
Encrypted PDFs cannot be parsed without the password, so they must be unlocked in a PDF viewer and re-saved before conversion. Permission-restricted files can usually be read, but bear in mind that a copy-protection flag is a statement of intent by the document's author: extracting text from a document you are not licensed to reuse is a legal question, not a technical one, and the converter has no way to make that judgement for you.
Choosing the right method for your PDF
Browser-based extraction is the right tool when the PDF is born-digital, the text layer is intact, and privacy matters — which covers the large majority of contracts, reports, papers and specifications. It is the wrong tool for scans, for documents whose value is in their tables, and for batch pipelines over thousands of files.
The matrix below compares the four realistic approaches on the dimensions that actually drive the decision. For a longer walkthrough of when each one is appropriate, including the cost and accuracy trade-offs of OCR and vision models, see the dedicated guide linked further down this page.
Known limitations of PDF to Markdown conversion
Being explicit about what a converter cannot do saves you a wasted upload. These are the boundaries of what is recoverable from PDF programmatically:
- Scanned and image-only PDFs yield no output. No OCR is performed, because recognising characters from pixels is a fundamentally different operation from reading a text layer.
- Tables are not reconstructed. Tabular regions are emitted as positioned text lines rather than Markdown pipe tables, to avoid producing confidently wrong data.
- Multi-column layouts may interleave. Reading order is inferred from geometry, and a two-column academic paper can produce alternating fragments where the heuristic mis-orders the columns.
- Encrypted PDFs must be unlocked first; the password cannot be supplied to the converter.
- Headers, footers and page numbers are part of the text layer and will appear in the output, since nothing in the file marks them as furniture rather than content.
- Embedded images, vector figures and mathematical notation set as glyph art are not extracted — only text is.
Who Converts PDF to Markdown?
Researchers
Pulling quotations and prose out of published papers and preprints into a literature-review note, without a copy-paste pass that loses every line break.
Developers
Extracting specification or API text from a vendor PDF so it can be grepped, diffed and version-controlled alongside the code that implements it.
Legal & Compliance
Reading contract text into a review workflow where uploading the document to a third-party server is prohibited outright by policy.
Knowledge-base owners
Migrating a back catalogue of PDF manuals and reports into Obsidian, Notion or a documentation site as searchable Markdown.
PDF to Markdown: Comparing the Four Practical Methods
| Method | Privacy | Scanned PDFs | Table fidelity | Setup | Batch / automation | Cost |
|---|---|---|---|---|---|---|
| Browser extraction (this tool, pdf.js) | Highest — file never leaves the device | Not supported (no OCR) | Text only, no reconstruction | None — open the page | One file at a time | Free |
| Server-side OCR (Tesseract, cloud Document AI) | Lowest — the document is uploaded and processed remotely | Yes, this is its purpose | Moderate; layout models help but misread cells | Service account or self-hosted stack | Strong — built for pipelines | Per-page or infrastructure cost |
| Pandoc CLI | High — runs locally | Not supported | Limited; PDF is a weak Pandoc input | Local install plus dependencies | Strong — scriptable | Free |
| LLM vision APIs (GPT-class, Claude-class) | Low — pages are sent to a third-party model | Yes, often the most accurate | Highest for complex tables | API key and code | Good, rate-limited | Per-token, scales with volume |
How You Can Verify the Privacy Claim
Zero server upload
Conversion runs inside your browser tab. Open DevTools, switch to the Network panel, and convert a file: for every format except URL to Markdown you will see no request carrying your document — because there is no endpoint to send it to.
Off the main thread
Heavy parsing is dispatched to a Web Worker, so a 500-page PDF or a large spreadsheet never freezes the interface. Everything is plain JavaScript — no native plugin, no WebAssembly toolchain, nothing to install.
Nothing to sign up for
No login, no quota, no paywall, and no tracking tied to your files. Analytics are cookieless and aggregate only. Read the privacy policy for the full data-flow breakdown, including the one proxied exception.
The parsers doing the work
No proprietary black box: each format is handled by a widely audited open-source library, running client-side at the version pinned in our lockfile.
PDF to Markdown — FAQ
Can it read scanned or image-only PDFs?
No. Scanned PDFs contain raster images, not selectable text, so no OCR is performed and they yield little or no output. You will see a warning when this happens.
What about password-protected PDFs?
Encrypted PDFs cannot be read without the password. Remove the protection first in your PDF viewer, then convert.
Is my PDF uploaded to a server?
Never. All parsing happens locally via pdf.js in a Web Worker. Your document never leaves your device.
Are tables preserved in the Markdown output?
Not reliably. PDF has no semantic table structure — text is positioned on a canvas. The converter extracts raw text, so complex tables may appear as plain lines rather than Markdown pipe tables.
How large a PDF can I convert?
There is no hard size limit. Pages are streamed one at a time, so memory usage stays roughly constant. Very large files simply take longer to process.