anydoc Benchmark - Seven Converters Head to Head
How fast, how complete, and how clean is anydoc, really? Rather than taking our word for it, here is the official head-to-head data published in the README.
Methodology
- Sample: 100 real documents covering all 14 formats (Word / PowerPoint / Excel / OpenDocument / RTF / EPUB / CSV / PDF)
- Contenders: anydoc, LibreOffice, unstructured, markitdown, pandoc, docling, and mammoth — seven in total
- Dimensions: completeness, structure, format fidelity, and cleanliness, each scored out of 100
- Speed: median conversion time per tool
Results
| Tool | Formats | Median | Score | Completeness | Structure | Fidelity | Cleanliness |
|---|---|---|---|---|---|---|---|
| anydoc | 14/14 | 4.4ms | 81 | 87 | 79 | 78 | 81 |
| libreoffice | 12/14 | 1129.5ms | 40 | 59 | 42 | 40 | 24 |
| unstructured | 8/14 | 572.9ms | 58 | 63 | 76 | 59 | 51 |
| markitdown | 6/14 | 134.8ms | 33 | 65 | 78 | 66 | 60 |
| pandoc | 5/14 | 102.1ms | 34 | 56 | 74 | 57 | 56 |
| docling | 4/14 | 513.6ms | 21 | 57 | 60 | 60 | 57 |
| mammoth | 1/14 | 52.5ms | 8 | 70 | 84 | 71 | 75 |
How to read this table
Format coverage: 14/14 — the only full sweep. Every other tool has blind spots: mammoth only handles docx, pandoc and docling cover fewer than half. If your workflow sees any format at all, only anydoc gets you through on a single code path.
Speed: 4.4ms vs 134.8ms. The next-fastest converter, markitdown, is more than an order of magnitude slower; LibreOffice is 250× slower. In batch pipelines, real-time parsing, and agent calls, this gap is the difference between usable and painful.
Quality: 81 overall, leading every column. The 87 completeness score matters most — it means the least information loss, exactly what you care about when feeding Markdown to an LLM. Structure, fidelity, and cleanliness all beat the runner-up too.
Don't forget the operational cost. LibreOffice requires a system install and carries its own runtime; docling and unstructured drag in heavyweight models and dependency chains. anydoc is a small Rust library — a few MB inside your binary or WASM bundle.
Why anydoc is this fast
Speed is an architectural choice, not magic:
- One model — every format parses into a shared Document model, so there is exactly one rendering path and no format-to-format re-conversion
- Pure Rust — no interpreter overhead, no process boundaries, no model inference
- Parses only what it needs — headers, footers, and page numbers are excluded by design, so no wasted work
Be clear about the limits
- Scanned PDFs are not supported: image-only PDFs need OCR and return
Unsupported. Firecrawl Parse layers OCR onto the same conversion pipeline. - The benchmark is one sample: 100 documents are representative but not the universe — extreme layouts should still be tested against your own files.
- Speed is a median: very large files (hundreds of MB of xlsx) take longer, though the relative advantage over comparable tools holds.
Want to run it yourself?
The official repo ships a full benchmark harness in bench/ — clone it and run it against your own document set for the most honest numbers.
Want the head-to-head with markitdown?
No comparison of the two biggest open-source converters is complete without it — markitdown vs anydoc: which one converts documents better?