CleanMD vs MarkItDown: built for different readers.
MarkItDown prepares files for LLM pipelines in Python. CleanMD produces Markdown a human is happy to read — headings, tables, reading order — with nothing to install. Try it below.
Your files are never stored: documents convert in your browser where possible, and anything sent to our AI travels encrypted (HTTPS) and is discarded after processing. Privacy Policy
Microsoft's MarkItDown is a popular open-source Python library that converts files to Markdown for text analysis, and within that mission it's excellent: broad format coverage, a clean API, easy batching. Its own README is refreshingly honest about the trade-off — the output “is meant to be consumed by text analysis tools” and “may not be the best option for high-fidelity document conversions for human consumption”. That's exactly the gap CleanMD lives in. PDFs don't carry semantic headings, so producing readable structure means reconstructing it from font sizes, weights and layout — which is CleanMD's specialty, in the browser, with scanned documents handled out of the box.
CleanMD vs MarkItDown at a glance
| Comparison dimension | CleanMD | MarkItDown |
|---|---|---|
| Designed for | Markdown a human reads: notes, docs, knowledge bases | LLM ingestion — the README says output is meant for text analysis tools |
| PDF heading hierarchy | Rebuilt from typography: size, weight and section order become H1/H2/H3 | Text is extracted, but PDFs carry no semantic headings — structure often flattens |
| Scanned PDFs (OCR) | Built in: automatic detection, EU-based zero-retention OCR, no key needed | Not built in — needs the OCR plugin with an LLM Vision key or Azure Document Intelligence |
| Images → description | Included, free tier too | Requires wiring up your own LLM client and key |
| Audio & YouTube | Listens to the media natively — works without captions; timestamps, summary, chapters (Premium) | Audio transcription and YouTube URLs supported |
| Installation | None — it's a web page | Python 3.10+ and pip |
| Batch, API, pipelines | Not offered — one document at a time | A Python library: batching and pipelines are the point |
| Formats breadth | Documents, images, audio, video, YouTube, web pages | Very broad — including ZIP archives and EPubs |
| Price | Free tier (3/day, no signup) · Premium for A/V and volume | Free and open source, unlimited (LLM calls billed apart) |
Both columns written to be fair — where MarkItDown is the better tool, the table says so.
Use MarkItDown when…
- →You're building a Python pipeline that ingests many documents for an LLM or RAG system.
- →You need to batch-convert whole folders, ZIP archives or EPubs, unlimited and free.
- →You're already in the Azure ecosystem and can lean on Document Intelligence for hard documents.
- →“Good enough for the model” is genuinely good enough — a human won't read the output.
Use CleanMD when…
- →A person will read the Markdown: you want real heading hierarchy, clean tables and correct reading order.
- →The document is scanned — CleanMD handles OCR out of the box, no plugin, no API key.
- →You don't want to install Python or manage LLM credentials for images and OCR.
- →Privacy matters by default: documents convert client-side in the browser, and nothing is stored.
The honest verdict
If you're feeding a model from Python at scale, MarkItDown is a fine choice and we'd tell you so. If a human will read the result — or the document is a scan, or you just want to drop a file on a page and get clean Markdown back — that's the job CleanMD was built for.
Frequently asked questions
Does MarkItDown preserve PDF headings?
It extracts the text, but PDFs don't store semantic headings — a PDF is positioned text fragments. Recovering H1/H2/H3 requires analysing font sizes, weights and layout, and MarkItDown's own README notes its output is aimed at text analysis tools and “may not be the best option for high-fidelity document conversions for human consumption”. CleanMD performs that typographic reconstruction, which is why heading hierarchy is its headline feature.
Do I need an API key to OCR scans with MarkItDown?
The built-in converters don't include OCR: you add the OCR plugin backed by an LLM Vision model (bring your own key) or integrate Azure Document Intelligence. CleanMD detects scanned pages automatically and OCRs them with an EU-based, zero-data-retention engine — included, no key, free tier too.
Which should I use for an LLM or RAG pipeline?
At scale, in Python: MarkItDown — that's what it's designed for, and it's free. That said, structure quality helps retrieval too: correct headings make better chunks. For modest volumes where chunk quality matters more than throughput, converting with CleanMD and feeding the cleaner Markdown downstream works well.
Is CleanMD open source like MarkItDown?
No. CleanMD is a product with a free tier — 3 conversions a day, no account required — and a Premium tier for audio, video, YouTube and higher volumes. What it offers instead is zero setup and privacy by design: documents convert client-side and are never stored, on any tier.