Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →In a five-document benchmark, CleanMD did well at preserving RFC code blocks, removing running footers and recognizing much of a book’s heading hierarchy. It also lost on specific measures: pymupdf4llm produced more Think Python code fences, while MarkItDown recognized no NIST CSF prose cells but also emitted no NIST headings. CleanMD’s first RFC run missed 11 of 291 sections; after a fix it recognized all 291. Those results are useful for understanding failure modes, not for declaring a universal winner.
What was tested—and what the results can tell you
Giacomo, the developer of CleanMD, compared three PDF-to-Markdown converters on five public PDFs spanning standards, a research paper, a programming book, a court opinion and a cybersecurity framework. The September 24, 2026 article reports the software versions, a downloadable benchmark kit and the raw CleanMD output. The results below are the author’s measurements, not independently reproduced measurements.
As an Amazon Associate I earn from qualifying purchases.
The article’s central question is a practical one: when a PDF contains headings, code, tables or repeated page furniture, which converter preserves the structures you need? The answer varies by document and structure. Giacomo’s own summary is apt: “It shows failure modes, not a universal ranking.”
Converters and versions in the reported run
| Converter | Version and setup reported |
|---|---|
| MarkItDown | 0.1.7; Microsoft |
| pymupdf4llm | 1.28.2; Artifex |
| CleanMD | 0.93.0; Giacomo’s converter, run in Node |
These are the versions and setup stated in the September 24, 2026 article, not a claim about current releases. Pandoc was excluded because it cannot read PDF; the author reports that it returned code 21 on all five files.
#1 Best Overall
The five PDFs
- RFC 9110, HTTP Semantics (194 pages)
- BERT, arXiv 1810.04805 (16 pages)
- Think Python, 2nd edition (292 pages)
- Loper Bright v. Raimondo (114 pages)
- NIST Cybersecurity Framework 2.0 (32 pages)
The author says the documents were public and were not chosen after seeing the results. All five PDFs had text layers. Four ground truths drew on document structures such as official text or tables of contents. Because the court opinion has no table of contents, its 31 heading markers were initially defined geometrically.
The benchmark checked heading recognition and depth, fenced code blocks, table counts and “prose cells” (sentences placed in table cells), and document-specific details such as whether collected ABNF appeared as one block. Runtime was reported only for RFC 9110 on the same laptop.
Where CleanMD held up
RFC code, grammar and page furniture
On RFC 9110, CleanMD produced 158 fenced blocks, compared with zero for each competitor. It was also the only converter in the reported run to collect the RFC’s ABNF grammar as one block. CleanMD left zero running footer lines, versus 187 for MarkItDown and 194 for pymupdf4llm.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Those are concrete advantages for this standards document: a converter that keeps grammar together and removes repeated footers can make the result easier to read and reuse. They do not establish how the tools handle code or page furniture in every PDF.
Rank #2
Heading structure in Think Python
CleanMD placed 122 of 126 Think Python headings at the correct depth. MarkItDown placed none at the correct depth, and pymupdf4llm also scored zero on that measure: it recognized 113 sections but placed all of them at H4. That distinction matters if Markdown hierarchy is part of the intended output rather than merely a visual convenience.
Where CleanMD lost—or the comparison was mixed
More fences did not necessarily mean more useful code blocks
On Think Python, CleanMD generated 569 fenced blocks, including 52 single-line fences. pymupdf4llm generated 657, including 328 single-line fences; MarkItDown generated zero. The author notes that many of pymupdf4llm’s single-line fences wrapped inline code. A raw fence count therefore does not by itself tell you which output best preserves the book’s intended code examples.
NIST tables and headings point in different directions
For NIST CSF 2.0, MarkItDown had zero counted prose cells, compared with 23 for CleanMD. But MarkItDown also emitted zero headings, while CleanMD and pymupdf4llm each recognized eight sections. A low false-table count is not a complete win if the structure you need disappears elsewhere.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteBERT table counts vary sharply
For BERT, CleanMD recognized 26 headings, as did pymupdf4llm; MarkItDown recognized none. The table counts differed considerably: CleanMD produced 11, MarkItDown 134 and pymupdf4llm 9. The article reports zero prose cells for all three on this document. Table count alone does not establish which output best represents each table, so inspect the converted tables if their contents matter.
Rank #3
- hole punched
- high quality card stock
- 4 pages
- made in USA
- keyboard shortcuts
The court-opinion score needs a ground-truth qualification
For Loper Bright, the benchmark counted 31 part markers as headings. CleanMD identified 28, pymupdf4llm 18 and MarkItDown zero. A reader raised a concern that the original geometric definition resembled CleanMD’s own heuristic. Giacomo accepted that concern: in a comment, he said the majority-opinion markers were checked against Cornell LII HTML, with all 15 of 15 matching, but that the concurrence and dissent had not yet been checked at that point. He explained the distinction this way: “The rule generated the list, but the list can be checked without the rule.” Treat this score as informative but less settled than a ground truth independently verified across all opinion sections.
The first RFC score—and why keeping it matters
CleanMD initially recognized 280 of 291 RFC sections, while pymupdf4llm recognized 290 of 291. Giacomo traced CleanMD’s 11 misses to hyphen glyphs split across font IDs, fixed the issue and reran the benchmark. The rerun recognized 291 of 291 sections.
The article keeps the first CleanMD score in its main table rather than replacing it with the corrected result. Giacomo wrote: “I am keeping the first number in the article and on the page, because a benchmark that only shows the after is marketing.” That choice gives readers both the initial failure and the later result; the two figures should not be conflated.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteRuntime: one document, one laptop
For RFC 9110 on the same laptop, Giacomo reports 1.3 seconds for CleanMD, 5.5 seconds for MarkItDown and 10.9 seconds for pymupdf4llm. This is a timing for one PDF in the author’s setup, not a general speed ranking. Your own files, hardware and tool versions may produce different results.
Rank #4
What this benchmark does not test
The corpus is useful for comparing several text-structure problems, but it does not cover every difficult PDF. All five inputs had text layers, and the article does not measure scanned-document OCR, dense three-column reading order, math or prose quality. It also does not support a blanket claim that CleanMD—or either competitor—is best for PDFs generally.
For a new tool choice, evaluate the kinds of files you actually convert. In particular, test scanned pages, multi-column layouts and equations separately; these were outside the reported measurements.
How to use the results when choosing a converter
- Match the benchmark metric to your output. If you need a standards document’s grammar intact, inspect whether it becomes one usable block. If you need a book’s navigable structure, check heading levels rather than just heading counts.
- Check false structure as well as missing structure. Look for prose mistakenly placed in tables and inline code wrapped as standalone fenced blocks, not just the total number of tables or fences.
- Inspect repeated page text. Running headers and footers can clutter a conversion; the RFC result shows that tools differed substantially on this particular PDF.
- Test representative files yourself. Include the PDFs whose structures matter to you, and check scanned pages, columns and math if they occur in your workflow.
- Measure performance in your own setup. The reported RFC timing is a useful example of what was measured, not a promise about another document or machine.
The author links a kit containing run.sh, ground truth, results and raw CleanMD Markdown. According to the article, the kit downloads the PDFs, installs the two open-source tools in a virtual environment, builds ground truth and scores the outputs. That makes the comparison inspectable in principle; the figures here remain the author’s reported results.
Read Giacomo’s benchmark article and access the linked kit.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

