A PDF editor and a PDF SDK on one Rust engine.
The engine is written in Rust with no C or C++ dependencies. The editor is free for everyone, including commercial use, and the SDK is AGPL-3.0 or commercially licensed.
| Extraction for AI PDF to Markdown with reading order, tables and headings kept. Scanned pages get read. |
One engine, every language Rust, Python, Node.js, .NET, Java, C and WebAssembly from the same code. |
Private by design Everything runs on your machine. The editor needs no account and works offline. |
| Forms, PDF/A, signatures AcroForm fill, PDF/A-1b/2b/3b, PAdES signatures, redaction that removes the content. |
Public benchmarks The harness, scorers and per-run results are open: pdfluent-bench. |
For agents too An MCP server that reads, searches and fills local PDFs. |
PDFluent 1.3.0 ranks above every engine on the published opendataloader-bench leaderboard (as of 3 November 2026)*.
*Overall score 0.9168 (quality="auto", keep_furniture=True, Linux) against the engines listed in the benchmark README on 3 November 2026; submitted as pull request #37. Other engines have submissions open that are not yet on the leaderboard.
→ Full tables, all four measures and how to reproduce
The editor is free for everyone, including commercial use, with no account and no subscription. Documents are processed entirely on your device, and the only automatic network request is an update check you can switch off in Settings.
Download for macOS and Windows · Microsoft Store · Source · Licence
| Platform | Build |
|---|---|
| macOS | Universal binary (Apple Silicon and Intel), notarized |
| Windows | Installer, or the Microsoft Store |
The SDK is licensed under AGPL-3.0, or a commercial licence for anyone who cannot accept the AGPL's obligations. The commercial licence buys the right not to publish your source and unlocks no features; there is no licence key and every feature is in every build.
cargo add pdfluent # Rust
pip install pdfluent # Python
npm install @pdfluent/node # Node.js
npm install @pdfluent/sdk-wasm # Browser (WebAssembly)
dotnet add package PDFluent # .NETJava is com.pdfluent:pdfluent on Maven Central; C and C++ link against the C API.
use pdfluent::prelude::*;
let doc = PdfDocument::open("in.pdf")?;
for page in doc.pages() {
println!("{}", page.text()?);
}from pdfluent import Document
doc = Document("in.pdf")
for page in doc:
print(page.extract_text())const { openPdf } = require('@pdfluent/node');
const doc = openPdf('in.pdf');
console.log(doc.extractText(0));| Capability | Status |
|---|---|
| Text extraction with positions | Production |
| Rendering to PNG and JPEG (native bindings, not WebAssembly) | Production |
| AcroForm fill and flatten | Production |
| Digital signatures (PAdES B-B / B-T / B-LT) | Production |
| PDF/A validation and conversion (PDF/A-1b, 2b, 3b) | Production |
| Redaction that removes the content | Production |
| Merge, split, encryption | Production |
| XFA form flattening | Experimental |
→ Documentation · Cookbook · Examples · Source · Changelog · Commercial licence · How we benchmark
Ask questions in GitHub Discussions, in the Q&A category. Report bugs in the issue tracker of the repository the problem is in. Report security problems by email to hello@pdfluent.com, never in a public issue.
| You want to | Go to |
|---|---|
| Ask about the SDK | SDK Discussions → Q&A |
| Ask about the editor | Editor Discussions |
| Show what you built | Discussions → Show and tell |
| Suggest a feature | Discussions → Ideas |
| Report an SDK bug | pdfluent-sdk issues |
| Report an editor bug | pdfluent issues |
| Report a vulnerability | hello@pdfluent.com, see SECURITY.md |
| Buy a commercial licence | hello@pdfluent.com |
| Repository | What is in it |
|---|---|
pdfluent-sdk |
The engine and every language binding. AGPL-3.0 or commercial. |
pdfluent |
The desktop editor: Tauri, React and TypeScript. Source-available. |
pdfluent-mcp |
MCP server for local PDFs: read as Markdown, text, tables or blocks, search, fill forms. |
pdfluent-bench |
Benchmark harness for structured extraction: datasets by manifest, results per run. |
examples |
Runnable SDK examples in Rust and the browser (WebAssembly). |
hayro |
Mirror of Laurenz Stampfl's pure-Rust PDF interpreter, which the rendering path builds on. |
.github |
This page, and the default issue forms, contributing guide and security policy. |
Built by Innovation Trigger B.V. · pdfluent.com