Methodology
How we calculate your carbon footprint.
Our footprint reports the full lifecycle of your AI usage, converged with the Watershed corporate AI emissions framework. We keep our four-way token engine as the innermost layer, then widen the accounting boundary around it in two steps. This page documents the math, the sources, and the uncertainty behind every CO₂ number on your dashboard.
Aligning with Watershed: the three layers
Earlier versions reported only active GPU silicon. Watershed's corporate methodology counts the whole facility and the hardware lifecycle, so their number is larger. Rather than replace our engine with a flat blended factor, v1.2 reports three distinct, inspectable layers — you can see exactly where each gram comes from, and the innermost layer is still our own measured execution energy.
Our engine
Active execution
Per-token joules from the four-way token split (prefill, decode, cache creation, cache read), through PUE and grid intensity.
GHG Scope 2
Facility operational
Active energy scaled by host overhead (×1.18) and cluster utilization (÷0.3) — the server and idle-fleet cost of serving your request.
GHG Scope 3
Full lifecycle
Operational plus embodied hardware (0.02 kg/MTok) and amortized model training (0.008 kg/MTok), carried as its own line — never blended in silently.
Your dashboard headline is Layer 3, the full lifecycle footprint. Layers 1 and 2 are persisted alongside it so any number can be inspected down to the active silicon.
The calculation chain
Per request, we split tokens into categories, compute their active energy, then widen to operational and lifecycle. Cached input tokens are near-zero cost because the provider skips the KV-cache rebuild.
- 1
Categorize tokens
Split each event into
uncached_input,cached_input,cache_creation, andoutput. Anthropic and OpenAI report these separately; OpenRouter doesn't break out cached, so all input is treated as uncached (conservative default). - 2
Layer 1 — active energy → CO₂
Active energy (J) =
uncached × prefill_J + cache_creation × prefill_J + cached × cached_J + output × decode_J, thenlayer1_kg = J ÷ 3,600,000 × PUE × grid. Prefill and decode are separate because decode is autoregressive and prefill is parallelizable. - 3
Layer 2 — facility operational (Scope 2)
layer2_kg = active_kWh × 1.18 ÷ 0.3 × PUE × grid. Host overhead accounts for the whole server beyond the accelerator; dividing by cluster utilization allocates the idle fleet capacity that has to exist to serve you. - 4
Layer 3 — full lifecycle (Scope 3)
layer3_kg = layer2_kg + (embodied + training) × tokens ÷ 1e6withembodied = 0.02andtraining = 0.008kg per million tokens. Training is carried as its own component so it is always visible, never folded invisibly into the operational number. - 5
Uncertainty — IPCC Tier 1 RSS
Combined uncertainty is the root-sum-of-squares of activity-data and emission-factor uncertainty:
√(20² + 20²) ≈ 28.28%. Bounds arelayer3 × (1 ± 0.2828). These bands are real and material — energy-per-token varies with hardware generation, batch size, and inference framework.
Per-tier active factors (v1.2)
Each model is matched to a tier by pattern. Active energy comes from published GPU power draw for representative deployments; reasoning tiers get a higher decode coefficient because extended-thinking chains amplify output-side compute. PUE and grid intensity vary by provider fleet.
| Tier | Prefill (J/tok) | Decode (J/tok) | Cached (J/tok) | PUE | Grid (kg/kWh) |
|---|---|---|---|---|---|
Small / Distilled small | 0.100 | 0.200 | 0.0100 | 1.20 | 0.420 |
Medium / Flagship medium | 0.300 | 0.500 | 0.0300 | 1.20 | 0.420 |
Large / Frontier large | 0.500 | 0.900 | 0.0500 | 1.20 | 0.420 |
Reasoning (extended thinking) reasoning | 0.500 | 1.800 | 0.0500 | 1.20 | 0.420 |
Gemini Flash gemini_flash | 0.080 | 0.500 | 0.0080 | 1.09 | 0.345 |
Gemini Pro (reasoning) gemini_pro_reasoning | 0.350 | 2.500 | 0.0350 | 1.09 | 0.345 |
Gemma (open weights) gemma_open | 0.040 | 0.160 | 0.0040 | 1.09 | 0.345 |
Google embeddings google_embedding | 0.004 | 0.000 | 0.0004 | 1.09 | 0.345 |
Host power
×1.18
Server overhead beyond the accelerator
Cluster util.
÷0.3
Idle-fleet allocation
Embodied
0.02 kg/MTok
Hardware manufacturing
Training
0.008 kg/MTok
Amortized pre-training
Model → tier mapping
We match each model name against these glob patterns at calculation time. Unknown models fall back to medium as a conservative default. If a model you use isn't covered, let us know and we'll add it.
Small / Distilled
gpt-4o-mini*gpt-3.5-turbo*gpt-5-nano*claude-haiku*claude-3-haiku*text-embedding-3-small*Medium / Flagship
gpt-4o*gpt-5-mini*claude-3-5-sonnet*claude-sonnet*text-embedding-3-large*Large / Frontier
gpt-4-turbo*gpt-4*gpt-5*claude-3-opus*claude-opus*Reasoning (extended thinking)
o1*o3*o4*claude-3-7-sonnet*Gemini Flash
gemini-3.5-flash*gemini-3-flash*gemini-2.5-flash*gemini-2.5-flash-lite*Gemini Pro (reasoning)
gemini-3.1-pro*gemini-2.5-pro*Gemma (open weights)
gemma-4-*gemma-3-*gemma-2-*codegemma*Google embeddings
gemini-embedding-2*gemini-embedding-001text-embedding-005text-embedding-004Worked example
One million tokens on the medium tier (GPT-4o class): 750k uncached input, 250k output, no caching. PUE 1.20, grid 0.42 kg/kWh.
The headline your dashboard shows for this workload is the Layer 3 figure, ~0.22 kg CO₂ per million tokens, with the active and operational layers inspectable underneath it.
Why receipts are immutable
Every calculation is pinned to the factor version it was computed under. When a billing period closes, that version is snapshotted onto the receipt and the audit-pack manifest. If the methodology advances later, historical receipts keep reflecting the math applied at calculation time — an auditor can verify any past receipt against the version it was signed under.
References
The layered boundary, factor values, and uncertainty approach draw on the Watershed framework, the GHG Protocol, IPCC guidance, and peer-reviewed research.
Estimating GHG Emissions from AI Use: Framework for Corporate-Level Measurement
Bistline et al., 2026 — the peer-reviewed corporate AI emissions framework our v1.2 layered boundary converges with (operational Scope 2 + lifecycle Scope 3)
An Open Framework for AI Emissions Measurement
Watershed’s companion write-up of the same framework — the academic paper above and this page describe the same method
GHG Protocol — Corporate Value Chain (Scope 3) Standard
Scope 2 (operational) vs Scope 3 (embodied + training) boundary definitions
IPCC — 2006 Guidelines, Vol. 1 Ch. 3 (Uncertainties)
Tier 1 root-sum-of-squares error propagation for combined uncertainty
Patterson et al. (2021) — Carbon Emissions and Large Neural Network Training
Per-tier active energy-per-token estimates (prefill vs decode)
Ember — Global Electricity Carbon Intensity
Grid-intensity reference for the energy-to-CO₂ conversion
Anthropic — Prompt Caching Documentation
Confirms the near-zero compute cost of cached input tokens
Honest caveats
- These are model-tier estimates, not direct GPU meter readings. The ±28.28% combined uncertainty band is real and material.
- Embodied hardware and training are lifecycle estimates. We carry a conservative training default (0.008 kg/MTok) and show it as its own line rather than blending it into the operational number.
- Grid intensity is a fleet-level average per provider. Workloads served from renewable-heavy regions likely emit less; coal-heavy regions emit more. Region-specific intensity is a planned refinement.
- Provider Usage APIs report with a 24-48h delay. Late-arriving telemetry is reconciled by a daily T+24h cron, so receipts close with the full data.