Document to Markdown

The most accurate Markdown engine. Also the fastest.

PDFs, Office files, emails and images become clean Markdown for LLMs and RAG, on your own hardware, in 3.7 milliseconds a page.

Start with the CLI, the REST API, .NET or MCP.

#1 on opendataloader-bench 3.7 ms per page Runs on CPU, no GPU needed Nothing leaves your machine

First on opendataloader-bench. On every metric.

The open benchmark for PDF-to-Markdown engines grades reading order, tables and headings against human ground truth. LM-Kit leads all 14 engines, on each one.

0.969 overall, against 0.907 for the next engine
0.967 table fidelity, against 0.928 for the next engine
0.957 heading hierarchy, against 0.824 for the next engine
2× faster than the next fastest engine, at 3.7 ms a page

The mean of reading order, table and heading fidelity against human-made ground truth.

# Engine License Overall s/page
1 LM-Kit, text layer + OCR Commercial 0.969 0.022
2 LM-Kit, text layer Commercial 0.948 0.004
3 opendataloader [hybrid] Apache-2.0 0.907 0.463
4 nutrient Commercial 0.885 0.008
5 docling MIT 0.882 0.762
6 marker GPL-3.0 0.861 53.932
7 unstructured [hi_res] Apache-2.0 0.841 3.008
8 edgeparse Apache-2.0 0.837 0.036
9 opendataloader Apache-2.0 0.831 0.015
9 mineru AGPL-3.0 0.831 5.962
11 pymupdf4llm AGPL-3.0 0.732 0.091
12 unstructured Apache-2.0 0.686 0.077
13 markitdown MIT 0.589 0.114
14 liteparse Apache-2.0 0.576 1.061

The official opendataloader-bench evaluator and its 200-document dataset, unmodified; other engines as published on its leaderboard.

Markdown an LLM can actually use.

RAG, search and agents are only as good as the text they receive. The engine keeps what flat extraction loses, and tells you how far to trust each page.

Order

Text in reading order

Columns, sidebars and footnotes come out in the order a person reads them, never interleaved line by line.

Tables

Tables rebuilt cell for cell

Merged cells kept as HTML spans; simple tables as Markdown pipes when you prefer them.

Headings

The document's real outline

Heading levels follow the document's structure, and false headings, like chart legends, stay body text.

Formats

One call for every file

PDF, DOCX, PPTX, XLSX, EML, MBOX, HTML and images, each routed to a converter built for it.

Trust

A certainty score per page

Every page and document gets a calibrated score from 0 to 1, so review goes only where it is needed.

Pipeline

Ready for chunking

Page separators, optional front matter with provenance, normalized whitespace: drop it straight into RAG.

Speed by default. Vision when a page needs it.

One setting picks the path. The text engine that tops the leaderboard needs no GPU; scans and complex layouts can go to a vision model.

TextExtraction

The benchmark leader

Reads the document's own text layer, with built-in OCR for scans and images. CPU only, milliseconds a page.

Hybrid

Per page, automatically

Clean pages take the text path; scanned or image-heavy pages go to a vision model. The default.

VlmOcr

Every page through vision

Each page is rendered and transcribed by a vision-language model of your choice, for photos and hard layouts.

Need charts read as data, element boxes and JSON? The document parser returns typed, positioned elements.

Know which pages to trust.

Each page carries a certainty from 0 to 1, calibrated on text quality, OCR share, table and heading structure, and how much cleanup the page needed. Route by it.

  • 0.85 and above. Ship as is.
  • 0.70 to 0.85. Spot-check tables and headings.
  • Below 0.70. Re-run with a vision strategy, or send to human review.
  • Per document too. A word-weighted average across pages, for batch triage.

Convert your first document. In any language.

LM-Kit One converts over a command line, REST and MCP. LM-Kit.NET runs the same engine inside your .NET application.

LM-Kit One

The server, for any language and agent

LM-Kit.NET

The SDK, inside your .NET application

LM-Kit One · terminal
# Every document in ./inbox, as Markdown in ./markdown: the benchmarked engine
lmkit run document-to-markdown --in ./inbox --out ./markdown --strategy text-extraction --enable-ocr true

Document to Markdown

The leaderboard's best Markdown. On your hardware.