centrailYancy Collective LLC
Sign inStart free
Reading the numbers / Environmental methodology

Environmental methodology

How we estimate energy, water, and CO₂ today — and where it's headed.

These are transparent estimates, not certified measurements. The labs don't publish exact per-model energy, water, or carbon — so we estimate from public research and cite every number. Where we estimate rather than measure, we say so. If you have real numbers, tell us and we'll use them.

Centrail counts the exact tokens your AI agents use, then turns them into an environmental footprint. This page is the whole method, in the open — read it before you sign up, then sign in and run your own numbers →.

The model

Energy is the primitive; water and CO₂ are derived from it — the same approach used by the UNU-INWEH environmental-cost report, which notes that inference energy scales with the tokens processed.

energy = Σ(tokens_in_class × class_rate) × model_factor
CO₂    = energy × grid_carbon_intensity
water  = energy × grid_water_intensity

Energy per 1M tokens, by class

Output tokens cost far more than input, and cached reads cost far less — so we price each class separately. Baseline figures are back-derived for Claude-class coding agents by Simon Couch, triangulated with Epoch AI and UNU.

Token classkWh per 1M tokens
Input0.39
Output1.95
Cache read0.039
Cache write0.49

For surfaces where we only have a token total (like the public estimator), we apply a blended rate for the selected usage style, clearly labelled illustrative: 0.28 kWh per 1M tokens for a history-heavy chat mix (~70% cached context), or 0.073 kWh per 1M tokens for a cache-dominated coding-agent mix (~94% cache reads, as observed in real Claude Code ledgers). The gap is real: cache reads cost ~50× less energy than generated output, so the same token total can legitimately differ ~4× by workload.

Model factor

A frontier model can use an order of magnitude more energy than a small one, so we scale the baseline by the model. Factors are relative to Claude Sonnet = 1.0×, in two tiers:

ModelFactorBasis
GPT-4o0.44×measured (arXiv 2505.09598)
Claude Sonnet1.0×measured (anchor)
DeepSeek-R110.4×measured
Claude Opus5.0×estimated (Anthropic pricing as a compute proxy)
Claude Fable / Mythos 53.3×estimated (pricing proxy: $10/$50 vs Sonnet's $3/$15)
Claude Haiku0.3×estimated (pricing proxy)
GPT-5 family (incl. 5.6)5.0×estimated (OpenAI pricing proxy)
Anything else (Gemini, Llama, …)1.0×estimated default

Measured vs estimated. Only three models have independent energy measurements. For the rest, we scale from the nearest measured sibling using the lab's own published price as a stand-in for relative compute — the same proxy Couch uses for input vs output. Each estimate is a standing request: publish the real figure and we'll replace ours.

Grid factors, by provider

The same kilowatt-hour carries different carbon and water depending on the cloud and grid that served it. From arXiv 2505.09598:

ProviderCarbon (kg CO₂e/kWh)Water (L/kWh)
Anthropic (AWS)0.3853.16
OpenAI (Azure)0.3533.41
Default (US grid)0.43.16

The water figure folds datacenter PUE and on-site + grid water into one effective rate. We pick the provider from the model; anything unrecognised uses the default.

Real-world equivalents

To make the numbers tangible, we convert them into everyday reference points — each one sourced:

FootprintEquivalentBasis
EnergyiPhone 16 Pro full charges0.0138 kWh each — 3,582 mAh @ ~3.85 V (GSMArena)
EnergyMiles in a Tesla Model 30.255 kWh/mi — ~25 kWh/100 mi, incl. charging losses (Wikipedia)
EnergyTesla Model 3 full charges57.5 kWh per charge — RWD usable pack (Wikipedia)
EnergyHours of Netflix0.077 kWh per hour
Water500 ml water bottles0.5 L each
WaterBathtubs150 L each (USGS)
WaterOlympic swimming pools2,500,000 L each (Wikipedia)
CO₂Tree seedlings grown 10 years60 kg CO₂ sequestered each (EPA)
CO₂Mature trees (one year)22 kg CO₂ absorbed each (~48 lb) (USDA Forest Service)

Why it's an estimate

Real energy, water, and carbon depend on the exact model, the hardware it ran on, the datacenter's efficiency, and the local grid — none of which a token count can see directly. We publish the full math, cite every coefficient, and flag every estimate so the number is honest about what it is. We update it as better data is published.

Ready to see yours? Sign in and run your numbers →

Chat app imports (estimated)

When you import a ChatGPT, Claude, or Gemini data export, we estimate tokens from message text — exports don't include token counts.

  • Characters → tokens: tokens = ceil(characters / 4) — the standard rule-of-thumb for English text used across the industry (OpenAI's own guidance: ~4 characters per token).
  • Context modeling: chat apps re-send your conversation history to the model on every turn. For each assistant reply we count the fresh user message as input, the reply as output, and all prior conversation text as re-sent context — priced like cache reads, the same semantics as CLI-measured data. Without this, imports would undercount real usage several-fold.
  • Model attribution: ChatGPT exports name the model per message; Claude exports don't, so we apply the model you select at import time; Gemini imports use a Gemini-class factor.
  • Response text (Gemini): newer Google Takeout exports include Gemini's responses as HTML, which we strip to text and count exactly like other replies. Older exports record prompts only; for those we assume 250 output tokens per response — an average-length assumption, marked as such.
  • Attached images: an image attached to a prompt is priced at a flat 258 tokens (the rate Gemini itself bills for a standard image). Generated videos have no token equivalent and aren't counted. Media files themselves are never read or uploaded — only the filenames in the activity records.

Imported figures are always labeled estimated, live in their own dashboard section, and never mix into Verified (CLI-measured) numbers or Verified pledge cards.