Docling, explained — tested and measured on real documents.
Docling is the open-source toolkit from IBM Research that turns PDFs, Office files, scans and audio into clean Markdown, JSON and RAG-ready chunks. This site shows you exactly how to install it, configure it and make it fast — with every command run on 2.143.1 and every number measured by us.
Sources: PyPI release history and pypistats.org (27 Sep – 26 Oct 2026), read on 27 Oct 2026. Format counts from Docling's own InputFormat and OutputFormat enums.
One converter for messy documents, built for AI pipelines.
Docling reads a document the way a person does — titles, paragraphs, tables, figures, reading order — and writes it out as structured data. That structure is what makes it useful for search, RAG and agents.
What it does
Docling parses each page, runs a layout model to label every region, rebuilds table structure cell by cell, optionally runs OCR on scans, and assembles a lossless DoclingDocument. From that one object you export Markdown, HTML, JSON, DocTags, WebVTT or token-limited chunks.
Who is behind it
Docling was started by the AI for Knowledge team at IBM Research Zurich, published as an open-source package in July 2024 and is now hosted by the LF AI & Data Foundation. The code is MIT-licensed at github.com/docling-project. docling.org is an independent guide — not the project itself.
| Latest version | 2.143.1 (docling-core 2.105.0, docling-parse 7.23.1, docling-ibm-models 4.0.4) |
|---|---|
| First release | 0.1.0 on 15 July 2024 · 2.0.0 on 16 October 2024 |
| Python | 3.10–3.14 · macOS, Linux, Windows · x86_64 and arm64 |
| Licence | MIT (code). Optional models carry their own licences. |
| Runs | Locally, CPU or GPU (CUDA, Apple MPS, Intel XPU). Remote services are opt-in. |
| Interfaces | Python API, docling CLI, docling-serve REST API, MCP server, LangChain / LlamaIndex / Haystack / CrewAI integrations |
Five stages from pixels to structure.
The standard PDF pipeline chains specialised models. Knowing which stage costs what is the key to making Docling fast — the timings below are from our own run of a 9-page paper.
Parse
docling-parse reads characters, fonts and bitmaps with their coordinates.
OCR
Only where there is no text layer — or everywhere with full-page mode.
Layout
The Heron layout model labels titles, text, tables, figures, lists…
Tables
TableFormer predicts rows, columns and spanning cells.
Assemble
Reading order, hierarchy and provenance become a DoclingDocument.
Your first conversion in three commands.
Tested on a clean Python 3.13 virtual environment with Docling 2.143.1. The first run downloads about 500 MB of models into the Hugging Face cache.
python3 -m venv .venv && source .venv/bin/activate
pip install doclingdocling convert https://arxiv.org/pdf/2408.09869 --to md --no-ocr
# writes 2408.09869.md to the current folderfrom docling.document_converter import DocumentConverter
converter = DocumentConverter()
result = converter.convert("https://arxiv.org/pdf/2408.09869")
doc = result.document
print(doc.export_to_markdown()[:500])
doc.save_as_json("report.json") # lossless, re-loadableMost of Docling's time goes to OCR you may not need.
We converted the Docling technical report (9 pages) with four configurations on a plain 4-vCPU machine. With default settings, OCR on embedded images took 61 of 77 seconds. Turning it off made Docling 3.7× faster.
Measured by docling.org with Docling 2.143.1. Lower is better.
Show data table
| s/page | |
|---|---|
| Default (OCR auto + tables) | 8.51 s |
| OCR off | 2.31 s |
| OCR off + fast tables | 2.05 s |
| OCR off + no table model | 1.59 s |
Docling profiling timings (settings.debug.profile_pipeline_timings), measured by docling.org.
Show data table
| Layout | OCR | Tables | Parse + assemble | Total | |
|---|---|---|---|---|---|
| Default (OCR auto + tables) | 15.5 | 61.0 | 11.6 | 0.7 | 88.7 |
| OCR off | 13.2 | 0.0 | 12.8 | 0.9 | 26.8 |
| OCR off + fast tables | 12.7 | 0.0 | 8.3 | 0.8 | 21.8 |
| OCR off + no table model | 13.5 | 0.0 | 0.0 | 0.8 | 14.4 |
Read the performance guide → · Docling vs Marker, PyMuPDF4LLM and MarkItDown →
Pick the job you need done.
Install Docling
pip or uv, CPU-only PyTorch, CUDA, Apple Silicon, extras and offline model downloads.
Install guide →CLI reference
All 73 docling convert options read straight from the tool, with recipes for common jobs.
Python API
DocumentConverter, pipeline options, batch conversion and the DoclingDocument model.
Python guide →OCR
Seven engines, language codes that actually work, and when to switch OCR off.
OCR guide →RAG & chunking
HybridChunker vs HierarchicalChunker on a real document, token limits and loaders.
Chunking guide →VLM & Granite-Docling
The vision-language pipeline, all 22 presets and when a VLM beats the standard pipeline.
VLM guide →Skip the trial and error.
Each tool runs in your browser, is built from data read out of Docling 2.143.1 itself, and produces commands you can paste straight into a terminal.
Config builder
Tick what you need; get the matching CLI command, Python script and docling-serve request side by side.
Open → ToolInstall command picker
OS + hardware + features in, a tested install sequence out — including the CPU-only PyTorch trick.
Open → ToolError finder
Paste a traceback. Get the cause and the fix, matched against real Docling error messages.
Open → ToolChunk visualizer
Browse real chunks from a 9-page paper at 256 and 512 tokens and see where they break.
Open → ToolOCR engine picker
Language, platform and GPU in; the engine, language code and command that work.
Open → ToolFormat checker
Type any file name to see whether Docling reads it, which backend it uses and what to install.
Open →A release every few days — so versions matter.
Docling ships fast. Flags get added, defaults change and old syntax is deprecated, which is why every page here says which version it was checked against.
Source: PyPI JSON API, docling (fetched 27 Oct 2026)
Show data table
| Month | Releases |
|---|---|
| Nov ’24 | 11 |
| Dec | 8 |
| Jan ’25 | 4 |
| Feb | 9 |
| Mar | 9 |
| Apr | 3 |
| May | 5 |
| Jun | 7 |
| Jul | 6 |
| Aug | 6 |
| Sep | 7 |
| Oct | 7 |
| Nov | 6 |
| Dec | 4 |
| Jan ’26 | 6 |
| Feb | 5 |
| Mar | 8 |
| Apr | 9 |
| May | 4 |
| Jun | 14 |
| Jul | 10 |
| Aug | 11 |
| Sep | 7 |
| Oct | 14 |
Source: pypistats.org, downloads without mirrors, Monday–Sunday weeks
Show data table
| Week starting | docling | docling-slim |
|---|---|---|
| 2026-04-13 | 1,333,907 | |
| 2026-04-20 | 1,390,442 | |
| 2026-04-27 | 1,337,045 | |
| 2026-05-04 | 1,679,379 | 271,107 |
| 2026-05-11 | 1,957,311 | 383,377 |
| 2026-05-18 | 2,196,697 | 500,468 |
| 2026-05-25 | 1,815,117 | 475,482 |
| 2026-06-01 | 2,438,722 | 556,566 |
| 2026-06-08 | 3,489,469 | 819,817 |
| 2026-06-15 | 4,113,690 | 993,200 |
| 2026-06-22 | 4,562,301 | 1,139,852 |
| 2026-06-29 | 5,212,888 | 1,313,959 |
| 2026-07-06 | 4,841,471 | 1,380,407 |
| 2026-07-13 | 4,525,869 | 1,406,045 |
| 2026-07-20 | 3,110,568 | 1,149,128 |
| 2026-07-27 | 2,092,458 | 995,596 |
| 2026-08-03 | 2,126,349 | 976,520 |
| 2026-08-10 | 2,046,004 | 998,169 |
| 2026-08-17 | 2,720,763 | 1,190,997 |
| 2026-08-24 | 893,561 | 608,657 |
| 2026-08-31 | 648,958 | 583,158 |
| 2026-09-07 | 673,535 | 620,068 |
| 2026-09-14 | 595,150 | 592,255 |
| 2026-09-21 | 658,231 | 631,358 |
| 2026-09-28 | 787,540 | 754,234 |
| 2026-10-05 | 829,818 | 753,426 |
| 2026-10-12 | 856,709 | 828,168 |
| 2026-10-19 | 901,232 | 965,393 |
Every command is run. Every number has a source.
We install the current Docling release in a clean environment, read option names straight from the CLI, run the snippets we publish, and benchmark on hardware we describe. Facts that come from elsewhere — licences, model scores, image sizes — link to where we read them.
Our methodology →Not IBM. Not the Docling project. Just users who test.
docling.org is run independently and is not endorsed by IBM or the LF AI & Data Foundation. If something here is wrong or out of date, tell us at hello@docling.org — corrections usually go live within a day.
Official Docling repository ↗Common questions about Docling
What is Docling?
Docling is an open-source Python toolkit that converts documents — PDF, Word, PowerPoint, Excel, HTML, images, audio and 30 more input formats — into a structured DoclingDocument that you can export as Markdown, JSON, HTML, plain text or chunks for retrieval-augmented generation (RAG). It runs locally, uses specialised AI models for page layout and table structure, and is MIT-licensed.
Who makes Docling? Is it an IBM product?
Docling was started by the AI for Knowledge team at IBM Research Zurich and is now hosted as an open-source project by the LF AI & Data Foundation. Its code lives at github.com/docling-project/docling. IBM researchers remain major contributors.
Is Docling free?
Yes. The Docling code is MIT-licensed, so you can use it commercially at no cost. The models it downloads carry their own licences: the default Heron layout model is Apache-2.0 and the TableFormer weights are CDLA-Permissive-2.0 / Apache-2.0. Check the model card of any optional model you enable.
Is docling.org the official Docling website?
No. docling.org is an independent guide run by Docling users. It is not affiliated with IBM, the LF AI & Data Foundation or the Docling project. The official resources are GitHub, docling.ai and the official documentation. We test what we publish and list our sources on every page.
Does Docling need a GPU?
No. Docling runs on CPU. In our test on a 4-vCPU machine, a born-digital PDF converted at 2.3 seconds per page with OCR off. A GPU (CUDA) or Apple Silicon (MPS) speeds up the layout, table and OCR models, and is close to required for the vision-language (VLM) pipeline. See the performance guide.
Which Python versions does Docling support?
Docling 2.143.1 requires Python 3.10 or newer and declares support for 3.10, 3.11, 3.12, 3.13 and 3.14 on macOS, Linux and Windows.
Does Docling send my documents anywhere?
Not by default. Conversion runs on your machine; models are downloaded once from Hugging Face and cached. Features that call external APIs (for example remote picture-description models) only run if you pass --enable-remote-services or set enable_remote_services=True.
How is Docling different from PyPDF or PyMuPDF?
Text extractors such as pypdf read the characters stored in a PDF. Docling also runs a layout model to label titles, paragraphs, tables, figures and lists, rebuilds table structure, restores reading order, and can OCR scanned pages — so its output keeps the document's structure. The trade-off is speed: in our benchmark Docling was slower per page than PyMuPDF4LLM and MarkItDown on the same file.