← Any document → text: all libraries · Reader board

Kreuzberg vs markitdown: which one reads more real-world documents?

Kreuzberg 4.10.4 and markitdown 0.1.9 on the same 477 odd real-world files from Apache Tika test documents (bug reports, fuzzers, broken exporters). Measured, not opinion; re-tested by itself on every new PyPI release. Updated 06 November 2026.

More files readKreuzberg374 vs 253
Faster on this setKreuzberg8.7 s vs 388.2 s total (45× faster)
Both read246only Kreuzberg: 128 · only markitdown: 7

Kreuzberg got text from more files: 374 vs 253 of 477. Kreuzberg broke (error, hang or crash) on 6 files that markitdown read; markitdown broke on 3 files that Kreuzberg read.

LibraryText from🔴 Fails where
the other reads
🟡 Empty where
the other reads
⏱ Hangs or
crashes
Format not
supported
Median
ms/file
Total
seconds
Kreuzberg 4.10.43746104<18.7
markitdown 0.1.9253341149125388.2

By file type: files read with text

TypeKreuzbergmarkitdown
.docx 71 files60/71 7 empty 4 failed57/71 10 empty 4 failed
.pdf 71 files45/71 22 empty 4 failed44/71 21 empty 6 failed
.doc 49 files37/49 5 empty 7 failednot supported
.rtf 44 files41/44 3 emptynot supported
.html 38 files34/38 2 empty 2 failed36/38 2 empty
.xlsx 35 files22/35 9 empty 4 failed20/35 9 empty 6 failed
.txt 30 files30/3030/30
.xls 30 files18/30 8 empty 4 failed20/30 8 empty 2 failed
.pptx 29 files22/29 6 empty 1 failed22/29 6 empty 1 failed
.ppt 22 files16/22 6 emptynot supported
.odt 17 files15/17 2 failednot supported
.msg 14 files14/1414/14
.eml 9 files9/9not supported
.odp 4 filesnot supportednot supported
.ods 4 files3/4 1 emptynot supported
.csv 3 files3/33/3
.epub 3 files3/33/3
.json 2 files0/2 2 failed2/2
.md 2 files2/22/2

Files only Kreuzberg reads (128)

tika-parser-mail-module/testEmailWithPNGAtt.emlmarkitdown: format not supported
tika-parser-mail-module/testGroupWiseEml.emlmarkitdown: format not supported
tika-parser-mail-module/testRFC822_dkim.emlmarkitdown: format not supported
tika-parser-mail-module/testRFC822_multipart_attachments.emlmarkitdown: format not supported
tika-parser-mail-module/testRFC822_x-.emlmarkitdown: format not supported
tika-parser-microsoft-module/Doc1_ole.docmarkitdown: format not supported
tika-parser-microsoft-module/test.docmarkitdown: format not supported
tika-parser-microsoft-module/testComment.docmarkitdown: format not supported
tika-parser-microsoft-module/testComment.pptmarkitdown: format not supported
tika-parser-microsoft-module/testComment.rtfmarkitdown: format not supported
tika-parser-microsoft-module/testControlCharacters.docmarkitdown: format not supported
tika-parser-microsoft-module/testDocumentLink.docmarkitdown: format not supported
tika-parser-microsoft-module/testEML_embedded_xhtml_and_img.emlmarkitdown: format not supported
tika-parser-microsoft-module/testEXCEL.strict.xlsxmarkitdown: FileConversionException: File conversion failed after 1 attempts: - XlsxConverter threw ValueError with message: Sheet name is an empty list
tika-parser-microsoft-module/testException1.docmarkitdown: format not supported
tika-parser-microsoft-module/testException2.docmarkitdown: format not supported
tika-parser-microsoft-module/testFontAfterBufferedText.rtfmarkitdown: format not supported
tika-parser-microsoft-module/testMSChart-govdocs-428996.pptmarkitdown: format not supported
tika-parser-microsoft-module/testMSEquation-govdocs-863534.docmarkitdown: format not supported
tika-parser-microsoft-module/testPPT.pptmarkitdown: format not supported
tika-parser-microsoft-module/testPPT_2imgs.pptmarkitdown: format not supported
tika-parser-microsoft-module/testPPT_autodate.pptmarkitdown: format not supported
tika-parser-microsoft-module/testPPT_comment.pptmarkitdown: format not supported
tika-parser-microsoft-module/testPPT_custom_props.pptmarkitdown: format not supported
tika-parser-microsoft-module/testPPT_diagramData.pptxmarkitdown: no text
tika-parser-microsoft-module/testPPT_embedded2.pptmarkitdown: format not supported
tika-parser-microsoft-module/testPPT_embeded.pptmarkitdown: format not supported
tika-parser-microsoft-module/testPPT_groups.pptmarkitdown: format not supported
tika-parser-microsoft-module/testPPT_macros.pptmarkitdown: format not supported
tika-parser-microsoft-module/testPPT_masterFooter.pptmarkitdown: format not supported
tika-parser-microsoft-module/testPPT_oleWorkbook.pptmarkitdown: format not supported
tika-parser-microsoft-module/testPPT_skipBadCompressedObject.pptmarkitdown: format not supported
tika-parser-microsoft-module/testPPT_various.pptmarkitdown: format not supported
tika-parser-microsoft-module/testRTF-ms932.rtfmarkitdown: format not supported
tika-parser-microsoft-module/testRTF.rtfmarkitdown: format not supported
tika-parser-microsoft-module/testRTFBoldItalic.rtfmarkitdown: format not supported
tika-parser-microsoft-module/testRTFBoldPlain.rtfmarkitdown: format not supported
tika-parser-microsoft-module/testRTFControls.rtfmarkitdown: format not supported
tika-parser-microsoft-module/testRTFCorruptListOverride.rtfmarkitdown: format not supported
tika-parser-microsoft-module/testRTFEmbeddedFiles.rtfmarkitdown: format not supported

…and 88 more: see each library's page.

Files only markitdown reads (7)

tika-encoding-detector-icu4j/test_ignore_IBM420.htmlKreuzberg: ParsingError: ParsingError: HTML conversion failed: Invalid input: binary data detected (excess NUL bytes)
tika-parser-microsoft-module/jxl.xlsKreuzberg: ParsingError: ParsingError: Failed to parse Excel file: Xls error: Cfb error: Codepage 5212 not found
tika-parser-microsoft-module/testEXCEL_4.xlsKreuzberg: ParsingError: ParsingError: Failed to parse Excel file: Xls error: Cfb error: Invalid OLE (signature \x09\x04\x06\x00\x00\x00\x10\x00 invalid, not an office doc
tika-parser-microsoft-module/testPPT_charts.pptxKreuzberg: no text
tika-parser-text-module/test_ignore_IBM420.htmlKreuzberg: ParsingError: ParsingError: HTML conversion failed: Invalid input: binary data detected (excess NUL bytes)
tika-pipes-json/test-with-unpack.jsonKreuzberg: ParsingError: ParsingError: Failed to parse JSON: trailing characters at line 16 column 1
tika-pipes-json/test.jsonKreuzberg: ParsingError: ParsingError: Failed to parse JSON: trailing characters at line 9 column 1

Don't want to run it yourself? I also run PDF & Document to Markdown as a pay-per-use API on Apify (it uses pdfplumber and pypdfium2 for PDFs, markitdown for Office files). Disclosure: that tool is mine; the rankings above come only from the measurements.

What this does not tell you

This compares not breaking: whether each library gets any text out of each file. It does not rank text quality (reading order, tables, headings), and speed is one GitHub-hosted runner, default settings, no OCR switched on. If you need structure for RAG, also look at the output on your own files.

How this is measured