High performance
Rust core with native PDFium, SIMD optimizations, and full parallelism. Process thousands of documents per minute without a GPU.
High performance
Rust core with native PDFium, SIMD optimizations, and full parallelism. Process thousands of documents per minute without a GPU.
97+ file formats
PDF, DOCX, XLSX, PPTX, images, HTML, XML, emails, archives, and academic formats — one API handles them all.
Multi-engine OCR
Tesseract and PaddleOCR work across all language bindings. EasyOCR is available for Python.
12 language bindings
Native bindings for Python, TypeScript, Rust, Go, Java, C#, Ruby, PHP, Elixir, R, C, and WebAssembly.
Code intelligence
Extract functions, classes, imports, symbols, and docstrings from 248 programming languages, with semantic chunking.
Flexible deployment
Use as a library, CLI tool, REST API server, MCP server, or Docker container. Pick what fits your stack.
Precompiled binaries for Linux (x86_64 & aarch64), macOS (Apple Silicon), and Windows (x64).
| Language | Package | Docs |
|---|---|---|
| Python | pip install kreuzberg |
API Reference |
| TypeScript (Native) | npm install @kreuzberg/node |
API Reference |
| TypeScript (WASM) | npm install @kreuzberg/wasm |
API Reference |
| Rust | cargo add kreuzberg |
API Reference |
| Go | go get .../kreuzberg-lts/v4 |
API Reference |
| Java | Maven Central dev.kreuzberg:kreuzberg |
API Reference |
| C# | dotnet add package Kreuzberg |
API Reference |
| Ruby | gem install kreuzberg |
API Reference |
| PHP | composer require kreuzberg/kreuzberg |
API Reference |
| Elixir | {:kreuzberg, "~> 4.0"} |
API Reference |
| R | r-universe kreuzberg |
API Reference |
| C (FFI) | Shared library + header | API Reference |
| CLI | brew install kreuzberg-dev/tap/kreuzberg |
CLI Guide |
| Docker | ghcr.io/kreuzberg-dev/kreuzberg-full |
Docker Guide |
from kreuzberg import extract_file_sync
result = extract_file_sync("document.pdf")print(result.content)import { extractFileSync } from "@kreuzberg/node";
const result = extractFileSync("document.pdf");console.log(result.content);use kreuzberg::{extract_file_sync, ExtractionConfig};
let config = ExtractionConfig::default();let result = extract_file_sync("document.pdf", None, &config)?;println!("{}", result.content);