Source Library has OCR'd 4.1 million pages of historical text and translated almost all of them into English using AI. We logged every API call. This is what it cost — in dollars, in tokens, and in carbon.
What we measured
The library has about 14,977 books with pages in it, of which 13,819 are now readable in English (≥90% of pages translated). Most originals are in languages nobody reads anymore — Latin, early modern German, Hebrew, Tibetan. To get there, every page goes through image recognition, transcription, translation, illustration extraction, indexing.
Over the past five and a half months, that pipeline made 8.0 million API calls, used 30.6 billion tokens, racked up 22.6 million page-credits, and cost $19,588.
The dollar bill is in MongoDB. The carbon bill is harder to read, so we tried six different ways to estimate it.
The receipt
Every Gemini API call writes a row to a MongoDB collection called gemini_usage_daily. These numbers are recorded, not estimated.
| API calls | 8,032,886 |
| Input tokens | 23,644,100,054 |
| Output tokens | 6,921,374,368 |
| Page-credits processed | 22,599,950 |
| Spend (USD) | $19,588.33 |
| Window | Jan 2 – May 25, 2026 |
About a third went to translation, a third to OCR. The biggest surprise was image extraction — detecting illustrations, plates, and diagrams in scanned pages — which alone cost ~$3,300.
The activity wasn't spread evenly. The pipeline ramped up in January, hit a steady working rate in March, and peaked around new collection imports. Quiet days mean we were either fixing things or sleeping.
One book at a time
The pipeline doesn't use one AI model. It uses two: Gemini 3 Flash for hard scripts (Hebrew, Tibetan, Arabic) and BPH manuscripts, Gemini 3.1 Flash-Lite for clean Latin-script European text. Flash-Lite is half the price. The router picks by language.
Pick a model and a serving mode below. The frontier models (Pro, Opus) are counterfactuals — what if we used them instead? The spread is about 240×.
One quarter-pound burger's worth of carbon = roughly 7,000 books processed on Flash-Lite via the batch API.
Or ~30 books on Claude Opus running real-time.
The Flash-Lite + batch path is what some sustainability researchers call distillation gains — a smaller model, compressed from a larger one via supervised training, can produce comparable output on simpler tasks (OCR of clean Latin script) for a small fraction of the energy. Pair it with batch serving, where the GPU works at higher utilization, and per-token energy drops sharply.
Routing matters. Source Library uses Flash-Lite for ~16% of calls and Flash for ~83%; the rest is split among other variants. If we'd used Pro for everything, the carbon bill would be ~30× higher. If we'd used Opus, ~80× higher.
Six ways to estimate the same number
There is no single right way to estimate carbon emissions from AI usage. Anthropic publishes nothing. Google published one paper in August 2025. Mistral published one cradle-to-grave life-cycle assessment in July. Every other "AI carbon footprint" number you've read — including this one — is an extrapolation.
Here are six independent methods, applied to this project. The bottom-up family (rooflines + bridge factors) clusters around 100–700 kg. The top-down family (extrapolating from real production measurements) clusters around 5,000–50,000 kg. The geometric mean is 1805 kg CO₂e — about 7.4 return flights AMS↔London, 301 beef burgers, or 10.0K km of driving.
The 50× gap between the bottom-up family (~100–340 kg, blue) and the top-down family (~5,400–54,000 kg, red) is the most honest finding in this whole exercise. Bottom-up methods assume optimal batching, peak utilization, no real-world overhead. Top-down methods extrapolate from production measurements that include every kind of overhead. Both are valid. Neither is right.
Closing the gap further requires disclosure from Anthropic (none yet — required starting 2026 under California SB 253) and a second-generation paper from Google.
To see how each lever in the bottom-up model affects the answer, push the sliders below. The blue dot is your current estimate; the amber line is the geometric mean of all six methods; the grey dots are the other methods' centrals.
The other half: dev work
The Gemini pipeline is roughly 60% of the project's AI footprint. The other 40% comes from a different AI — Anthropic's Claude Opus — which helped write the code for the site, the pipeline, the ingestion scripts, the search interface, this blog post. Over the same window, that's about 280,000 conversation turns.
The token economics are wildly different. Of the ~45 billion tokens that flowed through Claude during development, 43.5 billion were cache reads — the same context (file contents, prior conversation, tool definitions) re-read on every turn. Cache reads cost about one tenth of fresh input tokens because the KV cache skips the model's MLP forward pass entirely.
Cache reads make up 96% of the token count
but only ~25% of the energy.
If prompt caching didn't exist and every cache read had to be a fresh forward pass, the same dev work would have consumed roughly 30-50× more energy. The cache turns long-context agent loops from prohibitively expensive into merely expensive. It is, structurally, one of the single most important sustainability levers in modern AI serving.

What 1805 kg looks like
The geometric mean of the six methods is 1805 kg CO₂e. The plausible range is roughly 100 kg to 50,000 kg. Here is what that looks like in things you can picture:
For comparison, an average person in the Netherlands emits roughly 8,400 kg of CO₂ per year. Source Library's five-and-a-half-month AI footprint is about one-fifth of one person's annual emissions — and produced 13,819 books readable in English (≥90% of pages translated).
Why the gap is so wide
The reason no third party can estimate AI carbon emissions accurately is that the people who can measure them — the providers — mostly don't publish. Google has published one paper. Mistral has published one cradle-to-grave LCA. Anthropic, OpenAI, xAI, and Meta have published essentially nothing comparable.
| Provider | Per-query energy | Per-token energy | Training emissions | Scope 1/2/3 corporate emissions | Full lifecycle LCA | Grid intensity by region | Score |
|---|---|---|---|---|---|---|---|
Google / DeepMind Gemini | 3●2◐1○ | ||||||
Mistral AI Mistral Large 2, Le Chat | 3●2◐1○ | ||||||
Anthropic Claude Opus, Sonnet, Haiku | 0●0◐6○ | ||||||
OpenAI GPT-5.x, ChatGPT, etc. | 0●1◐5○ | ||||||
Meta Llama 3/4 | 1●3◐2○ | ||||||
xAI Grok | 0●0◐6○ |
California's Climate Corporate Data Accountability Act (SB 253) requires US companies with over $1 billion in annual revenue doing business in California to report Scope 1 and 2 emissions starting in 2026, with Scope 3 from 2027. All five of the empty rows above clear that threshold. So within a year, the gap on this chart should narrow considerably — or someone gets sued.

The trade
At the central estimate, this library's AI work for the past five and a half months emitted roughly as much CO₂ as seven economy round-trip flights from Amsterdam to London. The honest range is wider: two to eighty round-trips, depending on which estimation method you trust. For that, ~4 million pages of text that were previously inaccessible — 17th-century printer's Latin, fraktur German, unvocalized Hebrew, dead languages, dead handwriting — are now searchable in English.
The counterfactual matters. The alternative to AI digitization isn't no digitization — it's manual digitization. Hiring transcribers. Renting facilities. Flying scholars in. We haven't modeled that footprint, but a single transatlantic flight per scholar per year would dwarf the AI number within months.
The other counterfactual: routing every workload through the biggest available model. Using Claude Opus instead of Gemini Flash for OCR would push the carbon footprint roughly 80× higher. The pipeline saves carbon by picking the smallest model that's good enough — exactly the same logic that makes prompt caching, batching, and distillation the most effective sustainability levers in modern AI serving.
Almost none of this should be taken as a defense of AI's broader carbon trajectory. Datacenter electricity demand in the US is on track to roughly double between 2025 and 2030, driven largely by AI buildout. Most of that growth is being met with natural gas, not renewables. The path of a single cultural-heritage project is not the path of the industry.
But for this particular project, on these particular measurements, the trade looks defensible: a few flights' worth of carbon, in exchange for a library that people in São Paulo and Jakarta can read.
A few transatlantic flights of carbon for a library you can read from anywhere on Earth.
What would close the gap
The 50× spread on our estimate is not because we're careless. It's because the data needed to narrow it doesn't exist publicly.
- Per-token energy disclosure from Anthropic — comparable to Google's Aug 2025 paper. With this, the Claude Code portion of the estimate moves from a ~10× range to ~2×.
- Active parameter counts for Gemini Pro and Claude Opus. The roofline model can't pin down per-token energy without knowing how big the model is per forward pass.
- Production batch-size distributions. A model running at batch=128 is 4-8× more energy-efficient per token than at batch=8. We don't know what mix providers run.
- A second Google paper. Or a Meta one. Or an OpenAI one. One paper from one provider, however careful, is not enough to calibrate the field.
California's SB 253 helps. Starting in 2026 it requires every US company over $1B revenue doing business in California to disclose Scope 1 and 2 emissions. Anthropic, OpenAI, xAI, and Meta all qualify. By late 2026, the empty rows on the scoreboard above should fill in — or someone gets sued by the California Attorney General.
Notes on this exercise
- Things this number does include: Gemini API calls for OCR + translation + image extraction + indexing + summary; Claude Code conversations for software development; data-center cooling + idle compute + PUE; a share of training amortization; a share of hardware manufacturing emissions.
- Things this number does not include: the MacBook running the dev environment (~30 kg CO₂ over the window); the Hetzner GPU running CLIP image embeddings; the Vercel + MongoDB Atlas + Cloudflare runtime serving the public site; you reading this page (~0.5 g CO₂ for the page load).
- Honesty: every number is sourced. Every method has assumptions. We may be off by 5× either way. When new data arrives, this page will update — see the change log on /methodology.
Full data, all six estimation methods, every primary source, and every assumption are documented at /blog/carbon-ledger/methodology.
