Skip to main content
ClaudeWave

Full Rust port of Python docling

ToolsOfficial Registry106 stars29 forks● RustMITUpdated today
ClaudeWave Trust Score
97/100
✓ Verified
Passed
  • ✓Open-source license (MIT)
  • ✓Actively maintained (<30d)
  • ✓Healthy fork ratio
  • ✓Clear description
  • ✓Topics declared
  • ✓Documented (README)
Flags
  • !Install pipes a remote script into a shell (curl | sh)
Last scanned: 10/18/2026
Get started
Method: Clone
Terminal
git clone https://github.com/docling-project/docling.rs
1. Clone the repository.
2. Follow the README for installation and usage instructions.
Use cases

Tools overview

# docling.rs

<p align="center">
  <img src="https://raw.githubusercontent.com/docling-project/docling.rs/refs/heads/master/docs/assets/logo.svg" alt="docling.rs — a duck feeding a document into a meat grinder" width="240">
</p>

<p align="center">
  <a href="https://github.com/docling-project/docling.rs/actions/workflows/ci.yml"><img src="https://github.com/docling-project/docling.rs/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
  <a href="https://docling-project.github.io/docling.rs/"><img src="https://img.shields.io/badge/demo-live-brightgreen" alt="Live browser demo"></a>
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/github/license/docling-project/docling.rs" alt="License MIT"></a>
  <a href="https://crates.io/crates/docling"><img src="https://img.shields.io/crates/v/docling?logo=rust" alt="crates.io version"></a>
  <a href="https://pypi.org/project/docling-rs/"><img src="https://img.shields.io/pypi/v/docling-rs?logo=pypi&logoColor=fff" alt="PyPI version"></a>
  <a href="https://www.npmjs.com/package/docling.rs"><img src="https://img.shields.io/npm/v/docling.rs?logo=npm&logoColor=fff" alt="npm version"></a>
  <a href="https://github.com/docling-project/docling.rs/releases"><img src="https://img.shields.io/github/v/release/docling-project/docling.rs?label=release&logo=github" alt="GitHub release"></a>
  <a href="https://crates.io/crates/docling"><img src="https://img.shields.io/crates/d/docling?label=crates.io%20downloads" alt="crates.io downloads"></a>
  <a href="https://pepy.tech/projects/docling-rs"><img src="https://static.pepy.tech/badge/docling-rs/month" alt="PyPI downloads/month"></a>
  <a href="https://www.npmjs.com/package/docling.rs"><img src="https://img.shields.io/npm/dm/docling.rs?label=npm%20downloads" alt="npm downloads/month"></a>
</p>

**docling.rs** converts documents — PDF, Office, HTML, scans, audio — into
Markdown, docling JSON and the other shapes an LLM or a RAG pipeline can
read. It is a Rust port of IBM's
[docling](https://github.com/docling-project/docling): the same output,
byte-for-byte, from one static binary. No Python, no PyTorch.

Pulling text out of a PDF is easy. Keeping its *structure* — headings in
order, tables as tables, scanned pages read — takes layout analysis, table
recognition and OCR. docling has the models for that, and a Python stack to
match. docling.rs runs the same models from a single binary: PDF 4.3× faster
than Python docling at under half the RAM, Office and HTML 20–60× faster, and
tables that survive — cell recall 0.94 where MarkItDown gets 0.31
([numbers](#conformance-with-microsoft-markitdown),
[method](./docs/PDF_CONFORMANCE.md#performance--review--profiling-notes)).

**Coming from [MarkItDown](https://github.com/microsoft/markitdown)?**
`pip install docling-rs`, swap one import —
`from docling_rs.markitdown import MarkItDown` — and keep its API, every
format it converts included, with real layout analysis, tables and OCR
behind it: [guide](./docs/MARKITDOWN.md),
[measured side by side](#conformance-with-microsoft-markitdown).


## Install

```bash
# CLI + models (Linux x64/arm64 prebuilt; builds from source elsewhere)
curl -fsSL https://raw.githubusercontent.com/docling-project/docling.rs/master/scripts/install/install.sh | bash
docling-rs example.pdf          # Markdown on stdout

# or from crates.io; --cli puts the models where the installed binary looks
cargo install docling-cli
curl -fsSL https://raw.githubusercontent.com/docling-project/docling.rs/master/scripts/install/download_dependencies.sh | sh -s -- --cli

pip install docling-rs          # Python — drop-in for docling's and MarkItDown's APIs
npm install docling.rs          # Node.js / Bun
cargo add docling               # Rust library

# containers, models baked in (-cuda variants for NVIDIA)
docker run --rm -v "$PWD:/data" ghcr.io/docling-project/docling-rs paper.pdf
docker run -p 127.0.0.1:5001:5001 ghcr.io/docling-project/docling-rs-serve
```

Office, HTML, Markdown and e-mail need no models. PDF, images and audio need
the ONNX models (layout, OCR, TableFormer, Whisper; under 1 GB): `install.sh`,
`--cli` and the containers bring them along; with `pip`, run
`python -c "import docling_rs; docling_rs.download_models()"` once; with `npm`
or a checkout, run `download_dependencies.sh` where you convert
([details](#getting-the-ml-models)). Windows: [`docs/WINDOWS.md`](./docs/WINDOWS.md).

**▶ [Try it in your browser](https://docling-project.github.io/docling.rs/)**
first — the converter as wasm, OCR included; nothing leaves your device.

## Use

```bash
docling-rs report.pdf > report.md               # Markdown (streamed page by page)
docling-rs report.pdf --to json                 # docling JSON; also html, text, latex, dclx, chunks, images
docling-rs --input ./docs --output ./out        # a directory tree; --jobs N in parallel
docling-rs https://example.com/paper.pdf        # URLs, data: URIs and stdin (`-`) too
docling-rs https://www.youtube.com/watch?v=ID   # a YouTube video: title, description, caption transcript (--to vtt keeps the timing)
docling-rs --help                               # every flag: OCR, page ranges, images, enrichment, redaction …
```

```python
from docling_rs import DocumentConverter       # was: from docling.document_converter import …
doc = DocumentConverter().convert("report.pdf").document
print(doc.export_to_markdown())
```

```js
import { convertFileAsync } from 'docling.rs'
const { content } = await convertFileAsync('report.pdf', { to: 'markdown' })
```

```rust
use docling::{DocumentConverter, SourceDocument};
let result = DocumentConverter::new().convert(SourceDocument::from_file("report.pdf")?)?;
println!("{}", result.document.export_to_markdown());
```

```bash
curl -F file=@report.pdf 'localhost:5001/v1/convert?to=md'   # the server; OpenAPI at /openapi.yaml
```

Same options, same outputs on every surface — every option in
[`docs/OPTIONS.md`](./docs/OPTIONS.md).

## Highlights

- **From Python docling:** `from docling_rs import DocumentConverter`;
  `result.document` is a genuine `DoclingDocument`
  ([migration notes](./crates/docling-py/README.md#migrating-from-python-docling)).
- **Every docling format, and a few it lacks** — the table under
  [Status](#status), each validated against live docling
  ([Conformance](#conformance-with-python-docling)).
- **Every output docling has:** Markdown (docling's, or a stricter dialect),
  docling JSON, HTML, plain text, DocLang, LaTeX, Pandoc AST (→ DOCX, EPUB,
  Typst… through pandoc), WebVTT subtitles, RAG chunks and page images
  ([output formats](./crates/docling/README.md#output-formats)).
- **From any language:** Rust, Python, Node.js / Bun, the browser (wasm,
  fully client-side), C, C++, C#, Go, Java and Swift through one C header,
  any HTTP client, the shell
  ([Integration](#integration--using-doclingrs-from-your-language)).
- **A drop-in server for docling-serve:** Open WebUI uses it as its Docling
  content-extraction engine — point *Docling Server URL* at
  `http://<host>:5001` — and n8n, Dify and LangChain clients work unchanged
  ([`docling-rs serve`](#http-conversion-api--docling-rs-serve),
  [Open WebUI setup](./crates/docling-serve/README.md#open-webui)).
- **AI agents (MCP):** `docling-rs mcp` gives Claude Desktop, Claude Code,
  Cursor or VS Code MarkItDown's `convert_to_markdown` tool, plus `convert`
  for JSON, chunks and the rest — `uvx docling-rs-mcp`, or
  `claude mcp add docling -- docling-rs mcp` ([MCP server](#mcp-server--docling-rs-mcp)).
- **LangChain:** `pip install "docling-rs[langchain]"` — langchain-docling's
  `DoclingLoader` on the Rust engine, one import to swap
  ([details](./crates/docling-py/README.md#langchain)).
- **AutoGen:** `pip install "docling-rs[autogen]"` — `DoclingIndexer` fills
  any AutoGen memory with chunks that carry their pages, `DoclingConvertTool`
  lets an agent read documents ([details](./crates/docling-py/README.md#autogen)).
- **Your own formats:** register a backend for a format docling.rs does not
  read — or to read one of its formats your way — from Rust, Python
  (`@docling_rs.register_backend(extensions=["rtf2"])`, and MarkItDown's
  `register_converter` and plugins) or Node.js, ahead of the built-in formats
  ([pluggable backends](./crates/docling/README.md#pluggable-backends)).
- **RAG:** `docling-rag` — chunk, embed and search with a REST API and a web
  UI ([RAG subsystem](#rag-subsystem)).
- **Runs where you are:** Linux x64 / arm64 / s390x and Windows prebuilt (CLI,
  wheels, npm), macOS from source, containers for amd64 and arm64; NVIDIA
  CUDA and TensorRT, DirectML, CoreML and WebGPU in the browser as opt-in
  accelerators ([GPU](./docs/MODELS.md#gpu-execution-providers-optional-off-by-default),
  [IBM Z](./docs/IBMZ.md)).

Developed with **Claude Code** and _[TENET](https://github.com/artiz/tenet/tree/master)_ (minimalistic AI-driven development framework).

## Status

Every format in docling's pipeline converts — plus a few docling lacks. A
file with no or an unknown extension, stdin, an upload or a `data:` URL is
typed by its content (`InputFormat::detect`, `docling_rs.detect_format`,
`detectFormat`: the packages, the OLE files, PDF, images, audio and video,
iWork, XML, JSON, notebooks, messages, …), and a file that fails under its
extension is checked by content and converted as what it really is, with a
warning.

| Category | Formats |
|---|---|
| Text & markup | Markdown, AsciiDoc, HTML, MHTML, LaTeX (multi-file arXiv projects, math, tables); plain text and source code (`.py`, `.yaml`, `.log`, … — any text file, as a code block or paragraphs), generic JSON / JSON Lines and XML (kept as code blocks); RSS / Atom / RDF feeds (`.rss`, `.atom`, `.rdf` or a bare `.xml`: the feed's title, each item's heading, date and body); Jupyter notebooks (`.ipynb`: markdown cells, code cells in the kernel's language, outputs on request) |
| Word processing | DOCX, Word 97–2004 `.doc` (and Word 6/95, 1.x/2.0), OD
autogendoclinglangchainlanggraphmarkdownpdfpdf-parserpdf-processingrag

What people ask about docling.rs

What is docling-project/docling.rs?

+

docling-project/docling.rs is tools for the Claude AI ecosystem. Full Rust port of Python docling It has 106 GitHub stars and its last recorded update is dated 2026-10-17.

How do I install docling.rs?

+

You can install docling.rs by cloning the repository (https://github.com/docling-project/docling.rs) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.

Is docling-project/docling.rs safe to use?

+

Our security agent has analyzed docling-project/docling.rs and assigned a Trust Score of 97/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.

Who maintains docling-project/docling.rs?

+

docling-project/docling.rs is maintained by docling-project. The last recorded GitHub activity is dated 2026-10-17, with 2 open issues.

Are there alternatives to docling.rs?

+

Yes. On ClaudeWave you can browse similar tools at /categories/tools, sorted by popularity or recent activity.

Deploy docling.rs to your cloud

Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.

Maintain this repo? Add a badge to your README

Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.

Featured on ClaudeWave: docling-project/docling.rs
[![Featured on ClaudeWave](https://claudewave.com/api/badge/docling-project-docling-rs)](https://claudewave.com/repo/docling-project-docling-rs)
<a href="https://claudewave.com/repo/docling-project-docling-rs"><img src="https://claudewave.com/api/badge/docling-project-docling-rs" alt="Featured on ClaudeWave: docling-project/docling.rs" width="320" height="64" /></a>

More Tools

docling.rs alternatives
multica-ai
andrej-karpathy-skills
6mo ago

A single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy's observations on LLM coding pitfalls.

220.7k22.2k
ToolsInstall
nextlevelbuilder
ui-ux-pro-max-skill
3d ago

An AI skill that provides design intelligence for building professional UI/UX across multiple platforms.

136.9k14.5kPython
Toolsai-skillsantigravityInstall
JuliusBrussee
caveman
today

🪨 why use many token when few token do trick. Viral skill + proxy for coding agents that cuts 65% of tokens by talking like a caveman.

113.3k6.6kGo
ToolsaianthropicInstall
BerriAI
litellm
today

The fastest, litest AI Gateway. Rust core with Python SDK. Call 100+ LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]

61.5k12.4kPython
Toolsai-gatewayanthropicInstall
Alishahryar1
free-claude-code
today

Use Claude Code, Codex, VSCode, Pi, and OpenCode (and 6 other harnesses) for free (1.3B+ free tokens) from your terminal, app, IDE, or phone, and now from the browser with native browser sessions (multi-harness + multi-model) like OpenClaw (voice supported + ToS friendly)

61.3k9.6kPython
ToolsInstall
router-for-me
CLIProxyAPI
today

Wrap Antigravity, ChatGPT Codex, Claude Code, Grok Build, Muse Code, Devin as an OpenAI/Gemini/Claude/Codex compatible API service, allowing you to enjoy the free Gemini Series, GPT Series, Grok Series, Claude model through API

55.5k8.5kGo
Toolsantigravityclaude-codeInstall