PDF conversion benchmark · July 31, 2026

Best PDF to Markdown Converter

OCR, tables, reading order, and runtime tested across four local converters and 40 source-backed PDFs.

Published by the PDFtoMDConverter research team · Editorial policy

Results

PDF to Markdown results: six measures, kept separate

Read each row for the job you need to do. The study does not combine accuracy, structure, and speed into an overall score.

PDF to Markdown benchmark results by system and metric
MeasurePDFtoMDConverter2026-07-31 build (a840a93)Docling2.117.0Marker2.0.0Microsoft MarkItDown0.1.7
Runs inBrowser tabInstall: NoneLocal PythonInstall: pip, plus OCR and table model downloadsLocal PythonInstall: pip, plus llama.cpp and model weightsLocal PythonInstall: pip
Digital text fidelity0.96733 pages0.88534 pages0.90234 pages0.93734 pages
Scanned text recall23.1%3/13 checks53.8%7/13 checks92.3%12/13 checks0.0%0/13 checks
Reading order25.0%13/52 checks59.3%32/54 checks81.5%44/54 checks33.3%18/54 checks
Heading hierarchy0.0%0/14 checks35.7%5/14 checks35.7%5/14 checks0.0%0/14 checks
Table structure65.0%26/40 checks95.0%38/40 checks77.5%31/40 checks22.5%9/40 checks
Markdown parse success100.0%39/39 checks100.0%40/40 checks100.0%40/40 checks100.0%40/40 checks
Runtime534 msmedian · p95 11.2 s1.49 smedian · p95 14.6 s1.09 smedian · p95 49.9 s42 msmedian · p95 119 ms
  • Text fidelity is token-multiset F1. All percentage rows show the passed and applicable check count.
  • Runtime is post-warm-up wall-clock time on the recorded Apple silicon machine. p95 is shown next to the median because the two diverge sharply: Marker’s median is 1.09 s but its p95 is 49.9 s.
  • Reading order scores PDFtoMDConverter out of 52 checks and every other system out of 54. The smaller denominator is the MC-09 timeout described under limits, which removes that page’s two assertions from our applicable total.

The four assertion-based measures, side by side

Same 0–100% scale in every panel. Digital text fidelity (an F1 score) and runtime (milliseconds) are left out because they do not share this axis — read those two in the table above.

Scanned text recall
PDFtoMDConverter
23.1%3/13
Docling
53.8%7/13
Marker
92.3%12/13
MarkItDown
0.0%0/13
Reading order
PDFtoMDConverter
25.0%13/52
Docling
59.3%32/54
Marker
81.5%44/54
MarkItDown
33.3%18/54
Heading hierarchy
PDFtoMDConverter
0.0%0/14
Docling
35.7%5/14
Marker
35.7%5/14
MarkItDown
0.0%0/14
Table structure
PDFtoMDConverter
65.0%26/40
Docling
95.0%38/40
Marker
77.5%31/40
MarkItDown
22.5%9/40

What this run shows

Digital text

PDFtoMDConverter recorded the highest digital text-layer F1 in this run at 0.967 across 33 applicable completed pages. It also timed out on MC-09, so its run completed 39 of 40 conversions.

OCR and order

Marker retained 12/13 checks on scanned text and 44/54 checks on reading order—the strongest observed results for those two declared checks.

Tables

Docling preserved 38/40 checks on table structure, compared with 31/40 checks for Marker and 26/40 checks for PDFtoMDConverter.

Speed trade-off

MarkItDown had the lowest post-warm-up median at 42 ms and parsed all 40 outputs, but retained 0/13 checks scanned-text checks and 9/40 checks table checks.

Our weakest measure

PDFtoMDConverter passed 0/14 checks on heading hierarchy — the same score MarkItDown recorded, and the lowest result of any measure in this run. Docling and Marker each passed 5/14 checks. The two pipelines that scored zero here are also the two that read the text layer without a dedicated layout model, which the configuration table records. If you need Markdown that carries correct # levels straight out of conversion, this run does not support choosing PDFtoMDConverter for that on its own.

These are per-metric observations, not an overall ranking. The best choice changes with OCR, layout, table, and latency needs.

Choosing

Which PDF to Markdown converter fits which job

There is no overall winner in this data, and the report does not publish one. What the six measures do support is matching a converter to the constraint that matters most in your case.

Scanned pages and OCR

Marker

Retained 12/13 checks on scanned text and 44/54 checks on reading order, both the strongest in this run. Its p95 runtime was 49.9 s, so budget for slow pages.

Marker releases

Table-heavy documents

Docling

Preserved 38/40 checks on table structure against 31/40 checks for Marker, and was the only system to complete all 40 pages while scoring above half on every structural measure.

Docling releases

Bulk born-digital text, speed first

MarkItDown

Median 42 ms with a p95 of 119 ms — an order of magnitude faster than anything else here. It recorded 0/13 checks on scanned text, so it is not an OCR tool.

MarkItDown releases

No install, file stays on your machine

PDFtoMDConverter

Highest digital text-layer F1 in this run at 0.967, and the only candidate needing nothing installed. Weakest on heading hierarchy (0/14 checks) and scanned text (3/13 checks), and it timed out on one page.

Convert a PDF

Working with scanned PDFs specifically? Our walkthrough on extracting text from scanned PDFs with OCR covers what the recall numbers above mean in practice. For the Python-side tools, see converting PDF and Markdown in Python.

Corpus

The 40-PDF test corpus

The sample comes from the pinned olmOCR-Bench dataset revision. Every selected file has a SHA-256 digest, dataset link, original source link, and declared layout group.

The dataset index and assertions use the ODC-By 1.0 license. Linked source PDFs retain their original rights, so the public research files contain manifests and measurements rather than copies of the PDFs.

Inspect all 40 source records
Born-digital
10
Multi-column
10
Table-heavy
8
Clear scanned
6
Figures, lists & headings
6

Method

How we tested Docling, Marker, MarkItDown and PDFtoMDConverter

Each system processed the same local files on one machine. One warm-up conversion ran before timing. Full Markdown outputs stayed in the research workspace; hashes and scored rows are published.

Digital text fidelity

Token-multiset F1 against the embedded text layer after Unicode normalization and case folding.

Scanned text recall

Pass rate for 13 source-dataset text assertions across six scanned pages.

Reading order

Pass rate for 54 verified before-and-after snippet pairs on multi-column pages. A system that fails to produce output for a page loses that page’s pairs from its applicable total.

Heading hierarchy

Heading text and relative Markdown levels on six manually reviewed structured pages.

Table structure

Forty verified cell and neighbor checks inside parsed Markdown or HTML table matrices.

Runtime and parsing

Wall-clock time after warm-up, plus markdown-it parse success for every full output.

Failure review

Failure review: where PDF to Markdown conversion broke

These examples are drawn from failed assertions, not hand-picked showcase files. Short excerpts identify the observed output while the manifest links back to each source page.

MC-09 · pdftomdconverter

Source page

Failed: conversion, reading-order.

TimeoutError: locator.waitFor: Timeout 180000ms exceeded. Call log: - waiting for getByLabel('Editable Markdown result') to be visible

MC-03 · docling

Source page

Failed: reading-order.

## KIN 755 Exercise Electrocardiography, Testing, and Prescription (Units: 3) Prerequisite: Restricted to graduate Kinesiology students or permission

MC-03 · marker

Source page

Failed: reading-order.

### **KIN 755 Exercise Electrocardiography, Testing, and Prescription (Units: 3)** Prerequisite: Restricted to graduate Kinesiology students or permission

MC-01 · markitdown

Source page

Failed: reading-order.

MCM 7 and Smad 4 in Esophageal Cancer 353 of Smad4, a TGF-beta signaling molecule, in oral squamous

MC-01 · pdftomdconverter

Source page

Failed: reading-order.

MCM 7 and Smad 4 in Esophageal Cancer 306. 353 forming growth factor beta1 expression in patients with

MC-05 · docling

Source page

Failed: reading-order.

## BXDCD4CTD6CXD1CTD2D8D7 DBCXD8CW D4CTD2B9BWD3D1CPCXD2 CCCTDCD8D9CPD0 D9CTD7D8CXD3D2 BTD2D7DBCTD6CXD2CV CBCPD2CSCP BA CPD6CPCQCPCVCXD9 CPD2CS CPD6CXD9D7 BTBA CPAO D7CRCP CPD2CS CBD8CTDACTD2 -BA

Reproduce this benchmark

Start with the exact corpus paths, package versions, settings, scoring definitions, and 160 row-level measurements.

Questions

PDF to Markdown converter benchmark FAQ

Which is the best PDF to Markdown converter?
This run does not produce a single best converter, and the report deliberately publishes no overall ranking. Across the six separate measures, Marker led on scanned text (12/13 checks) and reading order (44/54), Docling led on table structure (38/40), MarkItDown was fastest at a 42 ms median, and PDFtoMDConverter recorded the highest digital text-layer F1 at 0.967. The right choice depends on whether OCR, tables, structure or speed is your binding constraint.
Which PDF to Markdown converter handles scanned pages best?
Marker, in this run. It retained 12/13 scanned-text assertions across the six scanned pages, against 7/13 for Docling, 3/13 for PDFtoMDConverter and 0/13 for MarkItDown. The trade-off is latency: Marker's p95 runtime was 49.86 s compared with a 1.09 s median.
Which converter preserves PDF tables in Markdown most reliably?
Docling preserved 38/40 verified cell and neighbour checks, ahead of Marker at 31/40, PDFtoMDConverter at 26/40 and MarkItDown at 9/40. Docling was configured with TableFormer in accurate mode, which the run settings table records.
Is PDFtoMDConverter the best converter in its own benchmark?
Not across the board, and the data shows where it loses. PDFtoMDConverter recorded the highest digital text-layer F1 (0.967) and the fastest median of the three structure-aware systems, but it passed 0/14 heading-hierarchy checks — its weakest measure and the lowest score in that row — plus 3/13 on scanned text, and it timed out on document MC-09 after 180 seconds. It is the only candidate that needs nothing installed and keeps the file in your browser, which is a different kind of advantage from OCR accuracy.
Do these four converters need the same setup?
PDFtoMDConverter runs in a browser tab with nothing to install. Docling, Marker and MarkItDown are local Python packages: Docling additionally downloads OCR and table models, Marker needs llama.cpp and model weights, and MarkItDown is a plain pip install. That difference explains part of the spread on OCR and structural measures and is recorded in the run settings table.
Can I reproduce this PDF to Markdown benchmark?
Yes. The corpus manifest lists all 40 documents with SHA-256 digests, dataset paths and original source links; the versions file records package versions and settings; and the row-level results for all 160 document/system pairs are published as JSON and CSV. Full generated Markdown stays in the local research workspace to avoid republishing source-document text.

System record

Converter versions and run settings

Converter versions and local run settings
SystemVersionDeclared configuration
PDFtoMDConverter2026-07-31 build (a840a93)pipeline: browser text layer with local OCR fallback · browser: Chromium 150.0.7871.187 · execution: local · non-read network requests: 0
Docling2.117.0pipeline: standard · OCR: RapidOCR PyTorch English · tables: TableFormer accurate · threads: 4 · accelerator: MPS where supported; RapidOCR CPU · execution: local
Marker2.0.0mode: fast · output format: markdown · image extraction disabled · progress display disabled · external LLM service: none · inference backend: llamacpp · llama.cpp: b10199 · accelerator: MPS · execution: local
Microsoft MarkItDown0.1.7plugins: false · hosted document service: false · execution: local

Scope

Limits, disclosure, and corrections

  • The corpus contains 40 English, single-page PDFs. It does not measure long-document consistency or non-English extraction.
  • Digital text fidelity uses the embedded text layer as a reference. A flawed text layer can lower the usefulness of that reference.
  • Runtime reflects this Apple silicon machine and the declared local configurations. It is not a cross-hardware speed guarantee.
  • Heading checks cover six manually annotated pages. Table and reading-order checks reuse the source dataset assertions.
  • PDFtoMDConverter timed out on MC-09 after 180 seconds. That terminal conversion failure remains in the row data and reduces its applicable metric denominators to 39 completed pages.
  • Full generated Markdown stays in the local research workspace to avoid republishing source-document text.

Disclosure

PDFtoMDConverter publishes this benchmark and is one of the systems tested. Results use the same selected corpus and declared metric code for every system.

Corrections

Send a document ID, result row, and the reason for the correction to jaden@pdftomdconverter.app. Material changes are recorded in the version history.

Version history

· Initial 40-document local benchmark run, including the recorded PDFtoMDConverter timeout on MC-09.

Convert your own PDF to Markdown

Run PDFtoMDConverter in your browser, then compare the Markdown with your source.

Best PDF to Markdown Converter: Benchmarking OCR, Tables and Reading Order