Email me

Dev · · 6 min read · Matt Busel

By , who built the apps, crates and game he writes about · every number links to its source and every dataset is downloadable (methods) · corrections · featured in Kirino, gamebiz, This Week in Rust, New Mobile Life, By-Press

Filed under Rust AI agents

Rust PDF crates: PaperPilot hit HN, Python pulls 40x the downloads

Rust PDF crates: PaperPilot hit HN, Python pulls 40x the downloads
On this page · 9 sections
  1. Key numbers
  2. PaperPilot is the pitch: PDFs for agents, no cloud, no C++
  3. By the numbers: Python is still 40x bigger
  4. The catch: a third of "Python PDF" is really C and C++
  5. Inside Rust: the new engines are growing 4x to 6x
  6. Who wins, who loses
  7. The pattern says: Python stays the interface, Rust takes the engine
  8. What this means for you
  9. Sources

Short answer: Rust is not winning PDFs yet. Over the last 30 days the 12 Rust PDF crates we tracked pulled 13.2 million downloads, while 7 Python PDF packages pulled 533.4 million, about 40x more. But the Rust side is the one growing fast, and our bet is that it ends up owning the engine underneath everything, including the Python wrappers.

TL;DR: PaperPilot, a pure-Rust PDF toolkit that ships as an MCP server, CLI, WASM page and desktop app, hit the Hacker News front page with 122 points on Oct 26 2026, 28 days after its repo was created. Python still dominates the registries: pypdf alone pulled 157.0 million downloads in 30 days, more than 11x every Rust PDF crate combined. Inside Rust, the newcomer hayro went from 77,000 weekly downloads in early August to 447,000 in the week of Oct 19, a 5.8x jump in eleven weeks.

Key numbers

WhatNumberSource, checked Oct 26 2026
Python PDF downloads, 7 packages, Sep 26 to Oct 25533,355,728ClickHouse public PyPI dataset
Rust PDF downloads, 12 crates, same 30 days13,214,368crates.io API
pypdf, 30 days157,013,001PyPI via ClickHouse
lopdf, 30 days (top Rust crate)5,269,640crates.io
hayro weekly downloads, week of Aug 3 vs week of Oct 1977,263 to 447,459 (5.8x)crates.io
Python downloads that go to C or C++ engines (pymupdf + pypdfium2)181.3 million (34%)PyPI via ClickHouse
PaperPilot GitHub stars, repo age241 stars, created Sep 28 2026GitHub
Animated bars: Python PDF packages 533.4 million downloads vs Rust PDF crates 13.2 million, Sep 26 to Oct 25 2026
Python vs Rust PDF downloads, 30 days to Oct 25 2026. Source: crates.io API and ClickHouse PyPI dataset, pulled Oct 26 2026.

PaperPilot is the pitch: PDFs for agents, no cloud, no C++

PaperPilot by Krushna Vardhan Reddy sells one idea: one Rust engine, five surfaces. It runs as an MCP server for Claude Desktop or Cursor, a CLI, a browser tool compiled to WebAssembly, a Tauri desktop app and a local REST API.

The README's own line is "No Chromium, no C++ runtime, no cloud calls." Version 0.6 merges, splits, compresses, watermarks, scans for personal data and runs OCR through rten, a pure-Rust inference runtime.

That pitch landed: 122 points and 29 comments on Hacker News on Oct 26 2026, and 241 GitHub stars for a repo that is 28 days old. Every "upload your PDF" website just got a free, local competitor. That is the real story here, and it is bad news for the freemium PDF sites that monetize your contracts by holding them on their servers.

By the numbers: Python is still 40x bigger

We pulled 30 days of downloads, Sep 26 to Oct 25 2026, for the 12 Rust PDF crates with real usage and the 7 Python packages most people actually install. Same window on both sides, so the known 30% dip in the public PyPI dataset since September does not skew the ratio.

Result: 533.4 million Python downloads against 13.2 million Rust downloads. pypdf by itself, at 157.0 million, is 11.9x the entire Rust PDF ecosystem.

Stat card: Python PDF packages pulled 40x the downloads of Rust PDF crates, 533.4M vs 13.2M, Sep 26 to Oct 25 2026
The 40x gap, Sep 26 to Oct 25 2026. Source: crates.io and ClickHouse PyPI, Oct 26 2026.

Even the deprecated PyPDF2, which tells you to move to pypdf, still pulled 14.0 million downloads in 30 days. That is more than every Rust PDF crate combined. Legacy pipelines never die; they just keep pulling.

Bar chart of Python PDF package downloads in 30 days: pypdf 157.0M, pymupdf 101.8M, pypdfium2 79.5M, reportlab 72.8M, pdfminer.six 59.5M, pdfplumber 48.7M, PyPDF2 14.0M
Python PDF packages, Sep 26 to Oct 25 2026. Source: ClickHouse public PyPI dataset, pulled Oct 26 2026.

The catch: a third of "Python PDF" is really C and C++

Look at who does the heavy lifting in Python. PyMuPDF wraps MuPDF, a C library. pypdfium2 wraps PDFium, the C++ engine inside Chrome. Together they pulled 181.3 million downloads, 34% of the Python total.

So when people say Python owns PDFs, what they mean is Python owns the steering wheel. The engine is decades-old C and C++, exactly the kind of code where a malformed file turns into a memory-safety bug. PDFs are attacker-controlled input by design: every invoice, resume and "signed contract" an agent opens is a file a stranger made.

That is the opening Rust is driving through. Not "rewrite your script in Rust", but "replace the engine under your script with one that cannot overflow a buffer".

Inside Rust: the new engines are growing 4x to 6x

The Rust numbers are small, but the slope is the story. Weekly downloads, comparing the week of Aug 3 with the week of Oct 19 2026:

  • hayro (PDF rendering, first published Jul 22 2025): 77,263 to 447,459, up 5.8x.
  • pdf-writer (low-level PDF writing): 143,539 to 555,189, up 3.9x.
  • pdf-extract (text extraction): 219,629 to 427,654, up 1.9x.
  • lopdf (the 2016 workhorse): 731,192 to 1,332,216, up 1.8x.
Weekly downloads Aug 3 to Oct 19 2026: lopdf 731k to 1,332k, pdf-writer 144k to 555k, hayro 77k to 447k, pdf-extract 220k to 428k
Weekly downloads of the top Rust PDF crates, weeks of Aug 3 to Oct 19 2026. Source: crates.io API, pulled Oct 26 2026.

hayro and krilla both come from the same developer, LaurenzV, and together pulled 2.45 million downloads in 30 days. One person's crates now pull almost half of what lopdf, a nine-year-old project, does. That is what "open source moves faster than incumbents" looks like in a spreadsheet.

Caveat in the open: crates.io counts include CI runs, so a few big projects rebuilding constantly can inflate a crate. PyPI counts have the same problem. Neither side gets a pass, which is why we compare them in the same window.

Bar chart of Rust PDF crate downloads in 30 days: lopdf 5.27M, pdf-writer 1.89M, pdf-extract 1.55M, hayro 1.53M, krilla 0.92M, pdfium-render 0.87M, printpdf 0.66M, pdf_oxide 0.33M
Rust PDF crates, Sep 26 to Oct 25 2026. Source: crates.io API, pulled Oct 26 2026.

Who wins, who loses

Wins: anyone shipping AI agents. An agent that reads PDFs needs a parser it can run on untrusted files without a sandbox the size of a container. A pure-Rust engine compiled to one binary or a WASM module is that parser. PaperPilot's MCP server is the template.

Wins: privacy. A WASM PDF tool processes the file in your browser memory. No upload, no "we may use your documents to improve our services".

Loses: the cloud PDF sites. Their whole model is getting your file onto their server. A free local tool that does merge, compress, OCR and redact in a tab is a direct hit on that funnel.

Loses, slowly: the C engines. They will not vanish, because 181 million monthly Python installs depend on them. But every new agent stack that picks a Rust engine is one fewer dependency on code nobody wants to audit.

The pattern says: Python stays the interface, Rust takes the engine

We have seen this movie. Python data tooling kept its API while the guts moved to Rust: pydantic-core, Polars, ruff, uv. Nobody has proven PDFs go the same way yet, but the setup is identical: a hot, hostile input format, a C core nobody loves, and a fast-growing set of Rust crates with clean APIs.

Our bet: within two years the most-downloaded new Python PDF package is a thin wrapper over a Rust engine. Watch hayro and krilla for the first PyO3 binding with real downloads; that is the starting gun.

More of our registry data: the crates tracker, the Rust hub, every Rust piece, our PyPI context-engineering numbers and why Rust alone did not fix container escapes.

What this means for you

If you are building an agent or app that reads user PDFs today: keep pypdf or PyMuPDF where they already work, but put new untrusted-file paths through a Rust engine (lopdf for structure, hayro for rendering, pdf-writer or krilla for output) or a local tool like PaperPilot. Do not send customer documents to a free PDF website.

If your Rust PDF build is the thing that is broken (linker errors, a WASM target that will not compile, a PyO3 wrapper that segfaults on import), we fix it: Fix my Rust build, $99, fixed within 24 hours or a full refund.

Not financial advice; download counts are a usage signal, not a forecast.

Sources

First published here on tensorust.com on Oct 26, 2026. Related: .

Up next

More on RustAI sandbox escapes: OpenAI wrote 8 of the 17,204 commits in the wallsOpenAI's agents broke out of Kata, gVisor and Docker. We counted a year of commits to 10 sandbox projects: 17,204. OpenAI wrote 8. One man wrote half of Docker.Read it next →

Cite this

Free to cite and reuse under CC BY 4.0 with a link back. How it was collected: methods. Spotted an error? Corrections.

Did this answer your question?

Get the next one by email.

What my AI agents tried this week, with the real numbers: what worked, what flopped, what made money. One email when there is something worth reading.

No spam, never sold. Every email has a one-click unsubscribe.

What are people saying about this? Read and post on The Floor →

More: the author, related reading, share this, a free game

Try it yourself · Rust dev?

Check a crate before you depend on it

Release health, reverse deps, real downloads and the alternatives for 1000 crates.

In The Manual: on this topic

Explainers answer one question, short answer first. Guides walk you through it step by step.

Open The Manual →

Read next

All articles →

1M+ X impressions in 4 days, run by AI agents · 8,000+ crates.io downloads across our 70 Rust crates, all time · 529 GitHub stars · 8 iPhone apps live on the App Store · O'BLOCK out now, free on Steam

Built by Matthew Busel · code on github.com/Mattbusel · numbers as of Oct 25, 2026, click any to check

Popular in the shop

All 124 tools →

Browse: Bundles and kitsHome, family and schoolMoney and businessAI toolsSports and fitnessMaking and hobbiesFood and drinkIndie dev and launchTrading and quant

Free: Landing page teardown iPhone app cost calculator LLM API cost calculator Paid online: $49 Launch Check App builds Articles FAQ