markitdown vs markitdown-rs

markitdown-rs is a markitdown alternative that keeps markitdown's output: Microsoft's markitdown rewritten in Rust as one binary, plus a Python package with the same API. Here is how it compares with markitdown itself and with the other tools people use to turn documents into Markdown for LLMs. Repository numbers were read from the GitHub and crates.io APIs on 2026-10-22; behaviour was checked by running each tool where possible, otherwise taken from its README (marked README).

At a glance

markitdown-rsmicrosoft/markitdownmarkitdown on crates.io (uhobnil)xberg (formerly kreuzberg)MDFlux
What it ismarkitdown's CLI and converters in one Rust binary, and its Python API on themthe reference: Python library and CLIRust library and CLI inspired by markitdowndocument-intelligence platform with a Rust coredesktop app around Python markitdown
GitHub stars (2026-10-22)new191,550769,437568
Latest releasev0.2.0v0.1.9 (2026-10-21)0.1.11 (2026-04-22)v1.3.10 (2026-10-13)v0.3.0 (2026-08-23)
LicenseMITMITMITMITMIT
Installone binary (Homebrew, cargo install markitdown-rs, release archives); Python package: pip install "markitdown-rs[mcp]" from PyPIpip install 'markitdown[all]' and Python 3.10+cargo install markitdown (needs --locked: unlocked, its calamine dependency no longer compiles)pip, npm, cargo, Go, Java and more; DockerWindows/Linux zip; sets up its own Python on first run
Runtime dependenciesnonePython and 46 packages for the docx/pptx/xlsx/xls/pdf/outlook extras, incl. magika and onnxruntime (328 MB virtualenv)nonenative library per binding; ONNX models for layout and OCRbundled Python and markitdown
Output identical to markitdown401 of 406 test files (5 documented differences)reference35 of 405 (164 files fail to convert)not a goal (own Markdown)same engine as markitdown, plus optional cleanup
Speed vs markitdown (CLI)median 408× faster (15–1,660× on 231 files outside the test set)1×not measurednot measuredsame engine

The "identical" row runs every fixture in the markitdown-rs repository through each tool's CLI and compares with Python markitdown 0.1.9's output byte for byte (406 files with a Python result; the crates.io crate was measured on 405, before one fixture was added). The crates.io crate is markitdown 0.1.11, installed with cargo install --locked.

Formats and features

markitdown-rsmicrosoft/markitdownmarkitdown (crates.io)xbergMDFlux
PDF (text layer)yes, pdfminer-identicalyes (pdfminer and pdfplumber)yes (plain text)yes, with layout modelsyes (markitdown)
PDF tables without bordersyes, markitdown's detectionyesnoyes (table models)yes (markitdown)
Scanned PDFs and images (OCR)Python package, with the markitdown-ocr plugin (needs an LLM)plugin (markitdown-ocr, needs an LLM)noyes (Tesseract, PaddleOCR, ...)yes, built in
Word .docxyes; custom style_map in the Python packageyesyesyesyes
PowerPoint .pptxyesyesyesyesyes
Excel .xlsx / .xlsyes / yes (Excel 3/4 too)yes / yesyes / no READMEyesyes
HTML, Wikipedia, Bing pagesyesyesHTML onlyyesHTML
EPUByesyesno READMEyesyes
Outlook .msgyesyesno READMEyes (email)no README
CSV, JSON, XML, RSS/Atom, JupyteryesyesCSV, XML, RSS READMEyesCSV, JSON, XML
ZIP (converts contents)yes, with size and nesting limitsyesyesyes, plus tar/7zno README
Images, audiometadata (exiftool); audio transcription in the Python packagemetadata; audio transcriptionimages READMEOCR; transcription (feature)images, audio
http(s) URLsyesyesnoyes (feature)no README
YouTube pagesmetadata, description, transcriptmetadata, description, transcript (extra)nonot statedno
LLM image captionsPython package (llm_client)yes (llm_client)yes (llm_client) READMEyes (VLM backends)AI cleanup pass
Azure Document Intelligence, Content UnderstandingPython package (markitdown's own converters; tested with mocked clients)yesnonot statedno
PluginsPython package (markitdown-ocr tested)yesnoyes (OCR backends)no
Python APIyes: from markitdown import MarkItDown, same API incl. custom convertersyesnoyesno
Command lineRust binary (fast); the Python package's markitdown with all of 0.1.9's flagsyesyesyesno
Rust libraryyes (markitdown-core)noyesyesno
MCP serveryes: markitdown mcp, stdio and HTTP/SSE, same tool as markitdown-mcpyes (markitdown-mcp, stdio and HTTP)noyesno
GUInonononoyes

When to use which

Method