100% Local · Free · No Sign-up

Convert PDF Documents to Markdown

Extract the selectable text layer from any .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.
Drop your PDF file here to convert to MarkdownDrag & drop files here, or click anywhere to browse · .pdf

Processing happens 100% in your browser — nothing is uploaded.

PDF conversion extracts text only

Scanned or image-only PDFs contain no text layer and yield little or nothing, because no OCR is performed.
100% Local Processing — Your files never leave your device

How to convert a PDF to Markdown

  1. Upload: drop your .pdf file onto the dropzone, or click to browse.
  2. Process: pdf.js extracts the text layer page by page inside a Web Worker — watch the live progress counter.
  3. 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.

Input · PDF text layer
[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.
Output · Markdown
## 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)

This converter uses pdf.js, the same engine Firefox ships as its built-in PDF viewer, to read each page's selectable text layer inside a Web Worker. Font size relative to the body text is used to promote likely headings to ATX Markdown headings. The result is editable prose for text-based PDFs; scanned pages yield no text, as described below.

Streaming extraction and constant memory use

Large PDFs are processed one page at a time in a sequential loop rather than in parallel. 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.

Mapping every page to a promise and awaiting them all at once is faster on small documents but holds every decoded page resident simultaneously. Peak memory then scales with page count, and a few hundred pages can crash a browser tab. Under sequential extraction, peak memory stays at roughly one page regardless of document length.

Because extraction runs inside a Web Worker, the main thread stays responsive throughout, and a progress counter reports "page N of TOTAL" as the loop advances.

Technical Specifications & Extraction Boundaries

Each boundary below follows from how PDF stores text, not from a missing feature in this converter.

  • Scanned and image-only PDFs: each page is a raster image with no text layer, so there are no glyphs to read. Recovering text requires OCR, which this converter does not perform. Test a file by selecting a single word: if the selection covers the whole page, the page is an image and needs an OCR tool.
  • Tables: a PDF has no table object. Cells are text runs positioned to line up, and borders are separate drawing operators. Reconstructing a grid from x-coordinates is fragile for right-aligned numbers, wrapped cells and merged headers, and a wrong grid looks plausible. Tables therefore come out as positioned text lines. If the data originated in a spreadsheet, convert the original file with the Excel or CSV converter instead.
  • Multi-column layouts: reading order is inferred from geometry, so a two-column academic paper can interleave fragments from both columns.
  • Hybrid files: a born-digital cover followed by scanned appendices yields text for the first pages and little or nothing for the rest.
  • Encryption: a user password prevents parsing entirely, so unlock and re-save the file in a PDF viewer first. Owner-password files restrict printing and copying but usually remain readable.
  • Headers, footers and page numbers are part of the text layer and appear in the output.
  • Embedded images, vector figures and math set as glyph art are not extracted. Only text is.

Developer Alternative: Local CLI & Python Extraction

For scripted or batch extraction on your own machine, these two options produce plain text from the same text layer. They output .txt, not Markdown, so add your own heading rules if you need them.

Python (pypdf)
# Python alternative using pypdf
from pypdf import PdfReader

reader = PdfReader("document.pdf")
text = "\n\n".join([page.extract_text() for page in reader.pages if page.extract_text()])
Bash (poppler-utils)
# Fast CLI extraction using poppler-utils
pdftotext -layout input.pdf output.txt

PDF to Markdown: Comparing the Four Practical Methods

MethodPrivacyScanned PDFsTable fidelitySetupBatch / automationCost
Browser extraction (this tool, pdf.js)Highest — file never leaves the deviceNot supported (no OCR)Text only, no reconstructionNone — open the pageOne file at a timeFree
Server-side OCR (Tesseract, cloud Document AI)Lowest — the document is uploaded and processed remotelyYes, this is its purposeModerate; layout models help but misread cellsService account or self-hosted stackStrong — built for pipelinesPer-page or infrastructure cost
Pandoc CLIHigh — runs locallyNot supportedLimited; PDF is a weak Pandoc inputLocal install plus dependenciesStrong — scriptableFree
LLM vision APIs (GPT-class, Claude-class)Low — pages are sent to a third-party modelYes, often the most accurateHighest for complex tablesAPI key and codeGood, rate-limitedPer-token, scales with volume

How You Can Verify the Privacy Claim

Browser-only

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.

Web Worker

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.

No account

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.

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.

In-Depth PDF Guides