# Docling vs LlamaParse

Updated: 2026-10-16

## Verdict

**Choose Docling when** documents cannot leave your infrastructure or you want zero per-page cost: it is MIT-licensed, runs locally or air-gapped, reads PDF, Office, HTML, EPUB, images, audio, and video, recovers table structure with its TableFormer model, and ships a docling-serve API and an MCP server. You own the compute, the OCR engine choice, and the upgrades.

**Choose LlamaParse when** you want a managed service with tiered quality (Fast to Agentic Plus), schema extraction with per-field confidence and citations, and no models to run. It costs from 1 credit per page at $1.25 per 1,000 credits.

**Choose Nutrient Data Extraction when** you want a hosted API with a published mode ladder and an Auto mode that picks the mode per page, grounded extraction, and a renewing free plan, or the Nutrient PDF-to-Markdown CLI when you want local Markdown for born-digital PDFs at no cost. Nutrient was founded as PSPDFKit in 2011. 3,000-plus organizations, including 15 percent of the Global 500, rely on it, with over a billion document interactions a year. The same extraction engine runs hosted, self-hosted in the Python and Java SDKs with no external API calls for OCR and ICR, or on a Mac in Extract Studio.

## At a glance

_Docling (IBM Research / LF AI & Data), LlamaParse (LlamaCloud), Nutrient Data Extraction API; facts fetched 2026-10-15 to 2026-10-16_

| Fact | Docling (IBM Research / LF AI & Data) | LlamaParse (LlamaCloud) | Nutrient Data Extraction API |
| --- | --- | --- | --- |
| Product type | open source library [1] | hosted API [2] | Hosted Data Extraction API, web Studio, and macOS Extract Studio [3] |
| License | MIT (codebase). Individual model weights carry their own licenses. [1] | Proprietary commercial service (LlamaParse); the LlamaIndex framework is MIT and LiteParse Apache-2.0 [2] | Proprietary hosted service [4] |
| Output formats | Markdown, HTML, JSON (lossless DoclingDocument), DocTags, DocLang XML, plain text, WebVTT, chunks JSONL, LaTeX [5] | Markdown, Plain text, JSON (per-page items), XLSX, HTML tables, Annotated PDF, Structured JSON to custom schema [2] | Spatial JSON, Markdown, Schema-shaped JSON with citations, Ranked labels with independent 0-1 scores, Split page ranges and ZIP files [6] |
| OCR for scans | Yes [1] | Yes [7] | Yes: structure, understand, and agentic; text has no OCR; 100+ languages [8] |
| Handwriting | Not published [1] | Yes [9] | Yes: printed-style in understand; cursive/freeform needs agentic [10] |
| Tables | Yes [11] | Yes [2] | Yes: spans and bounds; complex tables may need agentic mode [10] |
| Layout and bounding boxes | Yes [12] | Yes [13] | Yes: element and optional word bounds; word bounds exclude XLSX [10] |
| Per-field confidence | No [14] | Yes [15] | Yes: 0-1 relative signal, not a probability [16] |
| Source citations and grounding | Yes [12] | Yes [15] | Yes: field boxes, match labels, confidence, and source boxes [16] |
| Schema extraction | Not published [1] | Yes [17] | Yes: closed JSON Schema subset; 128 KB, 2,000 nodes, depth 5 [18] |
| Free tier | Free and open source (MIT) [1] | Includes 10K credits (Free plan, $0/month) [2] | 5,000 credits/month; no card; all parse modes, including Auto [19] |
| Pricing model | free OSS; you pay only for your own compute [1] | Credits per page by tier; 1,000 credits = $1.25 (i.e. $0.00125/credit). Parse v2 tiers: Fast 1, Cost-effective 3, Agentic 10, Agentic Plus 45 credits/page. Add-ons: layout extraction +3, enriched forms +10 per form page, spreadsheet 1/sheet, audio 3/min. [20] | Credits/page by endpoint and mode; Auto routes each page and bills that mode's rate; subscription plus capped overage [21] |
| Deployment | open source, local, on-prem / air-gapped, self-hosted API server (docling-serve), MCP server [1] | SaaS (US and EU regions), VPC / hybrid cloud, single-tenant SaaS, BYOC (Azure, AWS, GCP), self-hosting [22] | Hosted API: Nutrient-managed cloud, Self-hosted: Data Extraction SDK for Python and Java, no network required; OCR and ICR run on your infrastructure with zero external API calls, Local VLM: Ollama, LM Studio, or vLLM on your own hardware, or your own OpenAI or Anthropic key, Desktop: Extract Studio for Apple silicon Macs (macOS Tahoe 26.4+); the engine runs on the Mac and, with a local model, documents never leave it; Nutrient counts pages for credits, .NET data extraction SDK also offered [23] |
| SDKs | Python (pip install docling; PyPI 2.139.0 at fetch, Python >=3.10), CLI, REST via docling-serve [24] | Python (llama-cloud, PyPI 2.18.0 at fetch), TypeScript (@llamaindex/llama-cloud), Go, Java, CLI, REST API, n8n node [25] | REST API, Python SDK, Java SDK, .NET page referenced, curl, JavaScript, and raw HTTP samples [26] |
| MCP or agent tools | docling-mcp server (uvx docling-mcp-server); agent skills page in docs [27] | Hosted LlamaParse Platform MCP at mcp.llamaindex.ai/mcp (Parse, Classify, Extract, Split, Index); docs-search MCP; agent skills/plugins for Claude Code and Codex [28] | Hosted MCP, Data Extraction Studio, and agent skills [29] |
| Maximum file size or pages | Not published [30] | {"Batches": "10,000 files per batch (Pro/Enterprise)", "Classify": "512 MB", "Extract": "100 MB, 500 pages per job", "Parse": "512 MB, no page cap", "Split": "512 MB (PDF/DOCX/PPTX)"} [31] | Direct upload: 150 MB, URL input: 50 MB, URL timeout: 30 seconds, Processing: 5 minutes; HTTP 408 if exceeded, Page limit: not published, Test-key limits: lower, unpublished; Support-enabled [32] |
| Compliance | Not published [1] | SOC 2 Type II, GDPR, HIPAA (BAA for Enterprise) [22] | SOC 2: Type 2, audited annually, BAA: no public statement, Transport: HTTPS/TLS only, No-retention plans: files discarded after processing, Retention plans: runs stored; may train/evaluate models, Payments: Paddle [33] |
| Public benchmarks | Granite-Docling-258M model card, FinTabNet 150dpi TEDS structure 0.97, TEDS with content 0.96 (smoldocling-256m-preview 0.82 / 0.76) (TEDS), IBM (model card; this is the Granite-Docling VLM, not the default Docling PDF pipeline), 2025-09-17 ([source](https://huggingface.co/ibm-granite/granite-docling-258M))<br>Granite-Docling layout (same card) mAP 0.27, F1 0.86, precision 0.92, recall 0.88 (layout), IBM, 2025-09-17 ([source](https://huggingface.co/ibm-granite/granite-docling-258M))<br>Granite-Docling full-page OCR (same card) edit distance 0.45 (lower better), F1 0.84 (OCR), IBM, 2025-09-17 ([source](https://huggingface.co/ibm-granite/granite-docling-258M))<br>olmOCR-bench (Datalab run) docling (GPU) 50.3 overall, 64.0 digital-only, 2.1 pg/s (olmocr-bench macro average), Datalab (competitor-authored), 2026-07-20 ([source](https://github.com/datalab-to/marker))<br>ParseBench Docling semantic formatting 1.0% (formatting dimension), LlamaIndex (competitor-authored), 2026-04-13 ([source](https://www.llamaindex.ai/blog/parsebench)) [34] | ParseBench public leaderboard (15 Oct 2026 snapshot) LlamaParse Agentic Plus 90.2 (#1), LlamaParse Agentic 87.0 (#2), LlamaParse Cost Effective 80.6 (#5) of 149 entries (overall 0 to 100), parsebench.ai (LlamaIndex), 2026-10-15 ([source](https://parsebench.ai/))<br>ParseBench (LlamaIndex, ~2,000 pages, 167K rules) LlamaParse Agentic 84.9% overall at ~1.2 cents/page; Cost Effective <0.4 cents/page; formatting 85.2% (Docling 1.0%) (overall of 5 dimensions), LlamaIndex (vendor-authored; self-benchmark), 2026-04-13 ([source](https://www.llamaindex.ai/blog/parsebench))<br>OmniParseBench LlamaParse headline 90.4 (text 88.2, tables 92.6, layout 90.4) (mean of text/tables/layout family pass rates), Datalab (competitor-authored), 2026-10-08 ([source](https://www.datalab.to/blog/omni-parse-bench))<br>OmniExtractBench llamaextract agentic_plus accuracy 84.93, precision 86.57, recall 93.13, coverage 616/620 (accuracy), Datalab (competitor-authored), 2026-09-16 ([source](https://www.datalab.to/blog/omni-extract-bench)) [36] | ParseBench public row 76.4; paired nightly: 82.8 (overall 0 to 100), LlamaIndex, 2026-10-15 ([source](https://parsebench.ai/))<br>ParseBench nightly 82.8; paired public row: 76.4 (overall 0 to 100), Nutrient, 2026-10-15 ([source](https://www.nutrient.io/api/data-extraction-api/benchmarks/))<br>opendataloader-bench, Nutrient's own run understand 0.933; agentic 0.930; structure 0.892; text 0.889 (overall 0 to 1), Nutrient, 2026-10-16 ([source](https://www.nutrient.io/api/data-extraction-api/benchmarks/))<br>opendataloader.org leaderboard Nutrient row (free CLI) 0.885; opendataloader hybrid 0.907 (overall 0 to 1), opendataloader.org, 2026-09-23 ([source](https://opendataloader.org/docs/benchmark)) [40] |

## Tables and layout

Docling's TableFormer model recovers table structure and its DoclingDocument keeps layout bounding boxes and provenance per item. We found no TEDS or reading-order figure for Docling's default PDF pipeline in its README, docs, or technical report; the TEDS numbers it publishes (0.97 structure on FinTabNet) are for the Granite-Docling model, a different component. In Nutrient's opendataloader-bench run, Docling 2.110.0 (current release 2.139.0) scores 0.93 on TEDS.

LlamaParse lists advanced table extraction on all plans and returns HTML tables; granular bounding boxes add word, line, and cell boxes. Nutrient returns table elements with row and column spans, cell bounds, captions, and footnotes.

## Confidence and grounding

Docling provides document and page-level conversion grades (poor to excellent), not per-field confidence, and item provenance with page and box. LlamaParse's Extract returns per-field confidence and citations. Nutrient's extract returns a bounding box, match label, and relative confidence per field.

## Cost

Docling is free; you pay for compute, and OCR engines such as EasyOCR, Tesseract, or RapidOCR run locally. LlamaParse bills 1 to 45 credits per page at $1.25 per 1,000 credits, with 10,000 free credits. Nutrient bills 1 to 18 credits per parse page, 5,000 free credits a month, and the CLI's standard mode is free without an account.

## Published scores, with who ran them

Nutrient's published benchmark results, as recorded on 16 October 2026: on LlamaIndex's ParseBench the public leaderboard row for Nutrient agentic is 76.4. Nutrient's own nightly run of 15 October 2026 scores 82.8 on the same test and is not on parsebench.ai yet; in that nightly run, understand mode scores 64.0. LlamaParse Agentic Plus leads the public leaderboard at 90.2. Nutrient is not on Datalab's OmniParseBench or OmniExtractBench public leaderboards. In Nutrient's own run on the opendataloader-bench corpus the API scores 0.933 in understand mode and 0.930 in agentic; on the public opendataloader.org leaderboard Nutrient's row (the free CLI) scores 0.885, behind opendataloader hybrid at 0.907. In Nutrient's own run on the same corpus, Docling 2.110.0 (current release 2.139.0) scores 0.93 on table structure. Nutrient's CLI standard mode scores 0.74 there.

LlamaIndex's ParseBench (vendor-run) scores LlamaParse Agentic 87.0 overall on its public leaderboard and Docling 1.0 percent on semantic formatting in its launch post. Datalab's olmOCR-bench run scores Docling 50.3 overall against Marker balanced 76.0. Nutrient's opendataloader-bench run scores Docling 2.110.0 (current release 2.139.0) at 0.93 on table structure and its own API 0.933 overall; on the public opendataloader.org leaderboard Nutrient's free CLI scores 0.885 behind opendataloader hybrid 0.907, and Nutrient's ParseBench results are 76.4 on the public row and 82.8 in its own nightly run. Docling does not appear in Datalab's OmniParseBench. Each number comes from a document-API vendor, several of them in the comparison.

## Where Nutrient differs

The other products on this page are parsers or extraction APIs. Nutrient's Data Extraction API is the same kind of product, built by a company that has shipped document SDKs to enterprises since 2011. The facts below come from Nutrient's own public pages.

- Founded as PSPDFKit in 2011, and the SDKs developers knew as PSPDFKit continue as Nutrient SDKs. Thousands of organizations in 80-plus countries, including Fortune 500s and governments, use them ([about page](https://www.nutrient.io/company/about/)).
- 3,000-plus organizations and 15 percent of Global 500 companies rely on Nutrient, with over a billion document interactions a year ([nutrient.io](https://www.nutrient.io/)).
- One engine, four deployments: hosted API in Nutrient's cloud; the Python and Java Data Extraction SDKs, self-hosted with no network required and no external API calls for OCR and ICR, with a local VLM through Ollama, LM Studio, or vLLM ([Python SDK](https://www.nutrient.io/sdk/python/pdf-data-extraction/)); Extract Studio on Apple silicon, where documents never leave the Mac when the model runs locally ([Extract Studio](https://www.nutrient.io/api/data-extraction-api/macos-desktop-app/)); and the wider platform in the browser with WebAssembly, on your own servers with Document Engine, or air-gapped ([nutrient.io](https://www.nutrient.io/)).
- Extraction is one credit pool with parse, classify, and split, and every extracted field carries a bounding box and a match label, so a reviewer can check the source instead of trusting the model. SOC 2 Type 2 audited.

## What to test before choosing

- Run the same 20 documents through each API: five clean born-digital PDFs, five scans, five with tables that span pages, five with the fields your downstream system needs. Score reading order, table cells, and the fields you will actually consume.
- Count the per-page cost at the mode or tier that passed your sample, not the cheapest tier on the pricing page. Every vendor here prices accuracy upward.
- Check what the API returns when it is unsure: a confidence number, a bounding box, a `not_found` label, or nothing. That decides whether you can build a review queue.
- Confirm retention and deployment in writing for the plan you will buy. Free and pay-as-you-go tiers often exclude BAAs, zero-retention, and private deployment.

## Frequently asked questions

### Is Docling better than LlamaParse?

Depends on the constraint. Docling wins on cost, locality, and control; LlamaParse wins on managed scale, schema extraction, and tiered accuracy. Neither project runs a neutral benchmark. LlamaIndex's ParseBench launch post scores Docling 1.0 percent on semantic formatting. In Nutrient's own opendataloader-bench run, Docling 2.110.0 (current release 2.139.0) scores 0.93 on table structure, ahead of Nutrient's CLI standard mode (0.74).

### Can Docling run fully offline?

Yes. Its README states local execution for sensitive data and air-gapped environments, with docling-serve as a self-hosted API and docling-mcp as an MCP server.

### Does LlamaParse have a self-hosted option?

Self-hosting, BYOC on Azure, AWS, and GCP, and single-tenant SaaS are Enterprise options. The self-serve plans are SaaS in US and EU regions.

### What does Nutrient offer for local parsing?

The Nutrient PDF-to-Markdown CLI converts born-digital PDFs to Markdown locally for free with no account; its `--vision` mode handles scans and complex layouts using a monthly Vision page allowance. The CLI's repository carries a proprietary license, not an open source one. For extraction rather than Markdown, the Python and Java Data Extraction SDKs run self-hosted with OCR and ICR making no external API calls, and Extract Studio runs the same engine on a Mac.

### Which is best for scanned PDFs?

Docling runs the OCR engine you choose locally. LlamaParse runs OCR automatically on pages without text. Nutrient's structure mode adds OCR at 1.5 credits per page and its agentic mode is recommended for degraded scans. Test on your worst scans; only Datalab's olmOCR-bench run has a scan category, and Docling's per-category scores are not in our dossier.

## Sources

1. [https://raw.githubusercontent.com/docling-project/docling/main/README.md](https://raw.githubusercontent.com/docling-project/docling/main/README.md) — fetched 2026-10-15
2. [https://www.llamaindex.ai/pricing](https://www.llamaindex.ai/pricing) — fetched 2026-10-15
3. [https://www.nutrient.io/guides/dws-data-extraction/api-overview/](https://www.nutrient.io/guides/dws-data-extraction/api-overview/) — fetched 2026-10-15
4. [https://www.nutrient.io/legal/](https://www.nutrient.io/legal/) — fetched 2026-10-15
5. [https://docling-project.github.io/docling/usage/supported_formats/](https://docling-project.github.io/docling/usage/supported_formats/) — fetched 2026-10-15
6. [https://www.nutrient.io/guides/dws-data-extraction/parsing/](https://www.nutrient.io/guides/dws-data-extraction/parsing/) — fetched 2026-10-15
7. [https://developers.llamaindex.ai/llamaparse/parse/features/ocr-and-languages/index.md](https://developers.llamaindex.ai/llamaparse/parse/features/ocr-and-languages/index.md) — fetched 2026-10-15
8. [https://www.nutrient.io/guides/dws-data-extraction/parsing/processing-modes/](https://www.nutrient.io/guides/dws-data-extraction/parsing/processing-modes/) — fetched 2026-10-15
9. [https://developers.llamaindex.ai/llamaparse/parse/](https://developers.llamaindex.ai/llamaparse/parse/) — fetched 2026-10-15
10. [https://www.nutrient.io/guides/dws-data-extraction/parsing/extract-document-elements/](https://www.nutrient.io/guides/dws-data-extraction/parsing/extract-document-elements/) — fetched 2026-10-15
11. [https://arxiv.org/abs/2408.09869](https://arxiv.org/abs/2408.09869) — fetched 2026-10-15
12. [https://docling-project.github.io/docling/concepts/docling_document/](https://docling-project.github.io/docling/concepts/docling_document/) — fetched 2026-10-15
13. [https://developers.llamaindex.ai/llamaparse/parse/features/layout-and-bounding-boxes/index.md](https://developers.llamaindex.ai/llamaparse/parse/features/layout-and-bounding-boxes/index.md) — fetched 2026-10-15
14. [https://docling-project.github.io/docling/concepts/confidence_scores/](https://docling-project.github.io/docling/concepts/confidence_scores/) — fetched 2026-10-15
15. [https://developers.llamaindex.ai/llamaparse/extract/guides/response-format/index.md](https://developers.llamaindex.ai/llamaparse/extract/guides/response-format/index.md) — fetched 2026-10-15
16. [https://www.nutrient.io/guides/dws-data-extraction/extract/citations-and-confidence/](https://www.nutrient.io/guides/dws-data-extraction/extract/citations-and-confidence/) — fetched 2026-10-15
17. [https://developers.llamaindex.ai/llamaparse/extract/](https://developers.llamaindex.ai/llamaparse/extract/) — fetched 2026-10-15
18. [https://www.nutrient.io/guides/dws-data-extraction/extract/define-a-schema/](https://www.nutrient.io/guides/dws-data-extraction/extract/define-a-schema/) — fetched 2026-10-15
19. [https://www.nutrient.io/api/pricing/data-extraction-api/](https://www.nutrient.io/api/pricing/data-extraction-api/) — fetched 2026-10-15
20. [https://developers.llamaindex.ai/llamaparse/general/pricing/](https://developers.llamaindex.ai/llamaparse/general/pricing/) — fetched 2026-10-15
21. [https://www.nutrient.io/guides/dws-data-extraction/pricing/](https://www.nutrient.io/guides/dws-data-extraction/pricing/) — fetched 2026-10-15
22. [https://developers.llamaindex.ai/llamaparse/general/enterprise-readiness/](https://developers.llamaindex.ai/llamaparse/general/enterprise-readiness/) — fetched 2026-10-15
23. [https://www.nutrient.io/sdk/python/pdf-data-extraction/](https://www.nutrient.io/sdk/python/pdf-data-extraction/) — fetched 2026-10-16
24. [https://pypi.org/pypi/docling/json](https://pypi.org/pypi/docling/json) — fetched 2026-10-15
25. [https://developers.llamaindex.ai/llamaparse/parse/guides/tiers/index.md](https://developers.llamaindex.ai/llamaparse/parse/guides/tiers/index.md) — fetched 2026-10-15
26. [https://www.nutrient.io/guides/dws-data-extraction/getting-started/](https://www.nutrient.io/guides/dws-data-extraction/getting-started/) — fetched 2026-10-15
27. [https://docling-project.github.io/docling/usage/mcp/](https://docling-project.github.io/docling/usage/mcp/) — fetched 2026-10-15
28. [https://developers.llamaindex.ai/for-agents/index.md](https://developers.llamaindex.ai/for-agents/index.md) — fetched 2026-10-15
29. [https://www.nutrient.io/api/mcp-server-pdf-automation-llm/](https://www.nutrient.io/api/mcp-server-pdf-automation-llm/) — fetched 2026-10-15
30. [https://docling-project.github.io/docling/usage/](https://docling-project.github.io/docling/usage/) — fetched 2026-10-15
31. [https://developers.llamaindex.ai/llamaparse/general/limitations/](https://developers.llamaindex.ai/llamaparse/general/limitations/) — fetched 2026-10-15
32. [https://www.nutrient.io/guides/dws-data-extraction/file-types/](https://www.nutrient.io/guides/dws-data-extraction/file-types/) — fetched 2026-10-15
33. [https://www.nutrient.io/guides/dws-data-extraction/security/](https://www.nutrient.io/guides/dws-data-extraction/security/) — fetched 2026-10-15
34. [https://huggingface.co/ibm-granite/granite-docling-258M](https://huggingface.co/ibm-granite/granite-docling-258M) — fetched 2026-10-15
35. [https://github.com/datalab-to/marker](https://github.com/datalab-to/marker) — fetched 2026-10-15
36. [https://www.llamaindex.ai/blog/parsebench](https://www.llamaindex.ai/blog/parsebench) — fetched 2026-10-15
37. [https://parsebench.ai/](https://parsebench.ai/) — fetched 2026-10-15
38. [https://www.datalab.to/blog/omni-parse-bench](https://www.datalab.to/blog/omni-parse-bench) — fetched 2026-10-15
39. [https://www.datalab.to/blog/omni-extract-bench](https://www.datalab.to/blog/omni-extract-bench) — fetched 2026-10-15
40. [https://www.nutrient.io/api/data-extraction-api/benchmarks/](https://www.nutrient.io/api/data-extraction-api/benchmarks/) — fetched 2026-10-15
41. [https://opendataloader.org/docs/benchmark](https://opendataloader.org/docs/benchmark) — fetched 2026-10-15
