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 class | kWh per 1M tokens |
|---|---|
| Input | 0.39 |
| Output | 1.95 |
| Cache read | 0.039 |
| Cache write | 0.49 |
For surfaces where we only have a token total, we apply a blended 0.28 kWh per 1M tokens (a representative coding-agent mix), clearly labelled illustrative.
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:
| Model | Factor | Basis |
|---|---|---|
| GPT-4o | 0.44× | measured (arXiv 2505.09598) |
| Claude Sonnet | 1.0× | measured (anchor) |
| DeepSeek-R1 | 10.4× | measured |
| Claude Opus | 5.0× | estimated (Anthropic pricing as a compute proxy) |
| Claude Haiku | 0.3× | estimated (pricing proxy) |
| GPT-5 | 5.0× | estimated (OpenAI pricing proxy) |
| Anything else | 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:
| Provider | Carbon (kg CO₂e/kWh) | Water (L/kWh) |
|---|---|---|
| Anthropic (AWS) | 0.385 | 3.16 |
| OpenAI (Azure) | 0.353 | 3.41 |
| Default (US grid) | 0.4 | 3.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:
| Footprint | Equivalent | Basis |
|---|---|---|
| Energy | iPhone 16 Pro full charges | 0.0138 kWh each — 3,582 mAh @ ~3.85 V (GSMArena) |
| Energy | Miles in a Tesla Model 3 | 0.255 kWh/mi — ~25 kWh/100 mi, incl. charging losses (Wikipedia) |
| Energy | Tesla Model 3 full charges | 57.5 kWh per charge — RWD usable pack (Wikipedia) |
| Energy | Hours of Netflix | 0.077 kWh per hour |
| Water | 500 ml water bottles | 0.5 L each |
| Water | Bathtubs | 150 L each (USGS) |
| Water | Olympic swimming pools | 2,500,000 L each (Wikipedia) |
| CO₂ | Tree seedlings grown 10 years | 60 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 →