markitdown-rs

Microsoft's markitdown as one Rust binary: convert PDF, Word, PowerPoint, Excel, HTML, EPUB, Outlook and web pages to Markdown for LLMs and RAG pipelines. Same output, byte for byte. No Python. 23–112× faster.

Download a binary GitHub Comparison
$ cargo install markitdown-rs
$ markitdown order.pdf
Purchase order summary
| Item     | Qty | Unit price | Total |
| -------- | --- | ---------- | ----- |
| Widget 1 | 1   | 1.50       | 1.50  |
| Widget 2 | 2   | 3.00       | 6.00  |
$ markitdown https://en.wikipedia.org/wiki/Markdown | head -3
# Markdown

Plain text markup language

Why markitdown-rs

Drop-in

Same command, same flags, same Markdown. Every test file is checked byte for byte against Python markitdown 0.1.9.

One small binary

A 4.5 MB binary instead of a 328 MB Python environment with pdfminer, pandas, mammoth, magika and onnxruntime.

Fast

23–112× faster end to end; a 100-page PDF in 0.18 s instead of 5.9 s.

Every local format

PDF, DOCX, PPTX, XLSX, XLS, HTML, EPUB, Outlook MSG, CSV, ZIP, RSS, Jupyter, text, images and audio metadata, plus http(s) URLs, Wikipedia and YouTube pages.

Benchmarks

FilePython markitdownmarkitdown-rsSpeedup
markitdown test.docx572.9 ms5.1 ms112×
large.docx (1000 sections)11,588.9 ms374.2 ms31×
markitdown test.pptx599.6 ms5.7 ms105×
deck.pptx (300 slides)1,573.5 ms69.9 ms23×
markitdown test.pdf649.4 ms7.0 ms93×
report.pdf (100 pages)5,864.0 ms180.3 ms33×

CLI wall time, median of repeated runs on an Apple M2 Max. Method and raw numbers: README.

Compared with

markitdown-rsmicrosoft/markitdownmarkitdown (crates.io)xberg (kreuzberg)
Output identical to markitdownyes, testedreferencenono (own format)
Installone binarypip + Pythoncargopip / cargo / bindings
Python needednoyesnono
URL inputyesyesnoyes (feature flag)

Full table: docs/comparison.md.