How SOMA calculates the carbon and water footprint of AI usage
The method behind every "carbon data powered by SOMA" figure, with the full factor tables, the sources, the uncertainty and the boundary. Factor version soma-ai-ef-2026.10-dataset-v3.0.0. Last updated .
Part of the SOMA AI Emission Factors cluster.
What are SOMA's AI emission factors?
They are estimates of the carbon and water cost of running one million tokens through a commercial AI model, built from published benchmarks and published grid data. SOMA does not meter anyone's data centre: every input is a figure somebody else published, assembled into one number a sustainability team can put in an inventory. There is one carbon factor and one water factor for each combination of model class and cloud region, so 3 classes across 18 regions gives 54 rows of each.
A carbon factor has four terms: the electricity used to serve the tokens, the share of the server hardware those tokens used up, the data-centre construction, and the amortised share of the emissions from training the model. The first three are per million effective tokens and form the inference footprint; training is per million billed tokens. Most published AI figures stop at the first term. Water is reported beside carbon rather than instead of it, because the two do not move together — the cleanest grid in this table has the highest water intensity.
The method is described in a preprint, arXiv 2606.10660, which is under review at Sustainable Production and Consumption (Elsevier), manuscript SPC-D-26-04019. The factor tables themselves are open on Zenodo under CC BY 4.0, so a third party can reproduce any number on this page without asking SOMA for anything.
How much CO2 does one ChatGPT query emit?
About 0.036 g CO₂e for one exchange with a mid-size model served from a US East data centre — one question and its answer, counted as 1210 tokens, and including the hardware and training terms as well as the electricity. The figure changes with the model class and with the region far more than with anything the user types.
- Class A — Small. 0.010 g CO₂e per exchange. You would have to run about 23,378 exchanges to match the CO₂e of driving one kilometre in an average petrol car, and about 631 exchanges to use the electricity of a single phone charge.
- Class B — Mid. 0.036 g CO₂e per exchange: about 6,870 exchanges to one kilometre of driving, or 193 exchanges to one phone charge.
- Class C — Frontier. 0.135 g CO₂e per exchange: about 1,811 exchanges to one kilometre of driving, or 52 exchanges to one phone charge.
Car comparison: 3.93 × 10⁻⁴ metric tons CO₂e per mile for the average petrol passenger vehicle, and phone comparison: 0.019 kWh per smartphone charge, both from the US EPA greenhouse gas equivalencies calculator.
Two things move this number a lot. Moving the same model from EU North - Sweden to Asia Pacific - Singapore multiplies the electricity term by more than 13. And a reasoning model, which thinks in tokens before it answers, generates more tokens for the same question, so the per-exchange figure scales with it. No public source gives the multiplier, so at Tier 2b the method multiplies estimated output tokens by about 2.2, using an author-assumed k of 25 (range 10 to 50), and thinking was switched on in 5.0% of the Anthropic Economic Index's Claude.ai conversations (a share of conversations, not of tokens). For reasoning-heavy tools, use the token counts from the provider's billing export rather than a per-message estimate.
| Model class | g CO₂e / exchange | mL water / exchange | kg CO₂e / million tokens | Class range (at the world-average grid) |
|---|---|---|---|---|
| Class A — Small | 0.010 | 0.073 | 0.00762 | ±48% |
| Class B — Mid | 0.036 | 0.239 | 0.02606 | ±39% |
| Class C — Frontier | 0.135 | 0.888 | 0.09907 | ±67% |
How much water does an AI query use?
About 0.24 mL for one mid-size exchange served from a US East data centre, which is 0.24 litres per thousand exchanges. The same exchange served from EU North - Sweden uses 0.59 mL, more than twice as much, even though its carbon is far lower.
Two terms are added. WUE is the water evaporated on site to cool the servers, per kWh of electricity (Li et al. 2025). EWIF is the water consumed upstream to generate that electricity, per kWh (Reig et al. 2020). In most regions the upstream term dominates, which is why the water map follows the generation mix rather than the local climate. Hydro-heavy and nuclear-heavy grids have very low carbon and very high water; gas-heavy grids are the other way round.
Where a region has no published value a continental aggregate or an older site series stands in and is marked unconfirmed in the dataset; a region with no water value at all reads "not available", never zero. Water is reported as a separate figure and is never converted into carbon or added to it.
Water does not belong in a GHG inventory line, so why produce it at all? Because it is the question that follows the carbon one, and because the two answers point in opposite directions often enough that answering only the first one gives bad advice. A team that moves a workload to the greenest grid it can find, on carbon evidence alone, can multiply its AI water footprint on the way. Having both numbers in front of you, from the same token count, is the only way to see that trade-off before the decision is made rather than after.
What data do I need? Four tiers, one inventory line
The tier is decided per service by the data you can actually obtain for it, not by the company as a whole. A typical organisation sits at three tiers at once: an API with token billing, a seat product with message counts, and a SaaS subscription where only the invoice exists.
- Tier 3: a figure the provider has certified for your account from its own metering. Used directly, no calculation. No major provider offers this as standard today.
- Tier 2a: exact token counts from a billing export, multiplied by the factor for that model class and region. Class range at the world-average grid: ±48% for class A, ±39% for class B and ±67% for class C.
- Tier 2b: message or seat counts converted at 1210 tokens per exchange (928 input and 282 output, a short chat exchange), with estimated output tokens multiplied by the reasoning uplift, then treated as Tier 2a. Figures quoted per query are one plain exchange before that uplift. Disclose the conversion.
- Tier 1: annual spend multiplied by 0.1181 kg CO₂e per EUR (EXIOBASE 3.8.2 — Computer and related services), uncertainty ±300%. It is a screening figure covering the whole subscription, never an upper bound and not an AI figure.
Tiers are meant to be climbed. A service sitting at Tier 1 because nobody has asked the vendor for usage data moves to Tier 2b the moment an admin console exports seat and message counts, and to Tier 2a when the vendor exposes tokens per model. Each step narrows the band around the figure by roughly an order of magnitude, and the tier recorded against the line is what tells next year's reviewer whether the number moved because the usage changed or because the data got better.
The output is one Scope 3 Category 1 entry per service, carrying the tier, the factor, the factor version and the sources, which is what the GHG Protocol data-quality hierarchy that ESRS E1 refers to asks for. The step-by-step version of this is in the CSRD guide.
Which model class does my model belong to, and why does it matter more than the model name?
Commercial providers do not disclose model sizes, so models are grouped into three classes by their published tier and their benchmark behaviour. Class decides the factor, and the gap between the classes is large: a frontier model costs about 13.0 times a small model for the same number of tokens in the same region.
- Class A — Small: gpt-4o-mini, gpt-4.1-mini, gpt-4.1-nano
- Class B — Mid: gpt-4o, chatgpt-4o-latest, gpt-4.1
- Class C — Frontier: gpt-4, gpt-4-turbo, gpt-5
Putting a model in the wrong class moves the figure by about the 13.0-times spread between the classes — more than the uncertainty on any individual factor. That is why SOMA maintains the mapping, updates it as models are renamed and re-released, and states in the output when a class has been assumed rather than recognised. Names are misleading on their own: a model called "mini" can be a reasoning model, and a mixture-of-experts model is classed by its active parameters, not its total.
What happens when SOMA does not recognise a model or a region?
It falls back, and it says that it has. An unrecognised model name is treated as class C, the highest-intensity class, and the answer is flagged as an assumed class rather than a detected one. A missing or unrecognised region falls back to the provider's usual serving region, or to the global average when even the provider is unknown, and is flagged the same way. Both flags travel with the figure into the API response and into the inventory line, so a reviewer can see which numbers rest on a lookup and which rest on an assumption.
Some workloads are out of scope for this factor version rather than merely unrecognised. Embedding, speech, image, video, moderation and reranking models are not token-based chat or completion work, their energy per unit behaves differently, and the tables here would be the wrong instrument. SOMA reports those separately rather than quietly pricing them at a chat factor.
What is inside one factor: electricity, hardware and training?
Electricity. Accelerator energy per token from the ML.ENERGY leaderboard, multiplied by a host uplift of 1.5 for the rest of the server, an idle uplift of 1.1 for capacity held ready and a PUE of 1.2, then by the lifecycle carbon intensity of the grid where the provider serves the model (Ember; EPA eGRID2023 for US subregions). This is the only term most published figures include.
Embodied hardware. Server manufacturing and transport spread over the hardware life. Class A 0.89 g, class B 3.34 g and class C 12.84 g per million effective tokens.
Construction. The data-centre building, charged per kWh of server electricity. Class A 0.46 g, class B 1.50 g and class C 5.60 g per million effective tokens.
Training, amortised. Final training runs divided by the tokens a model serves in its life. Class A 0.60 g, class B 2.93 g and class C 12.84 g per million billed tokens.
The three terms other than electricity are region-independent, so their share of the total depends entirely on how clean the grid is. For a class B model in US East - N. Virginia, electricity is about 83% of the factor. In EU North - Sweden the same model's electricity is only about 38% of it, and the hardware, construction and training terms carry the rest. Moving a workload to a clean grid therefore cannot take the number to zero: the 13-times regional spread on electricity alone compresses to about 5 times once the whole factor is counted. A page that quotes the larger figure is quoting the electricity term only.
Which cloud region has the lowest AI emissions?
EU North - Sweden, at 0.003 kg CO₂e per million tokens of electricity for a class B model. The highest row in the table is Asia Pacific - Singapore at 0.036. Where a model runs matters more than which model it is: the same class B model costs more than 13 times as much carbon in electricity in Asia Pacific - Singapore as in EU North - Sweden, while the spread from the smallest to the largest model class within one region is about 13.0 times.
| Region | Class | Electricity | Embodied | Construction | Footprint | Training (per M billed) |
|---|---|---|---|---|---|---|
| EU North - Sweden | A | 0.00277 | 0.000887 | 0.000459 | 0.00411 | 0.000604 |
| EU North - Sweden | B | 0.00906 | 0.00334 | 0.0015 | 0.0139 | 0.00293 |
| EU North - Sweden | C | 0.0337 | 0.0128 | 0.0056 | 0.0522 | 0.0128 |
| EU West - France | A | 0.00383 | 0.000887 | 0.000459 | 0.00518 | 0.000604 |
| EU West - France | B | 0.0126 | 0.00334 | 0.0015 | 0.0174 | 0.00293 |
| EU West - France | C | 0.0467 | 0.0128 | 0.0056 | 0.0652 | 0.0128 |
| EU North - Finland | A | 0.00585 | 0.000887 | 0.000459 | 0.0072 | 0.000604 |
| EU North - Finland | B | 0.0192 | 0.00334 | 0.0015 | 0.024 | 0.00293 |
| EU North - Finland | C | 0.0714 | 0.0128 | 0.0056 | 0.0898 | 0.0128 |
| EU West - Belgium | A | 0.00969 | 0.000887 | 0.000459 | 0.011 | 0.000604 |
| EU West - Belgium | B | 0.0317 | 0.00334 | 0.0015 | 0.0366 | 0.00293 |
| EU West - Belgium | C | 0.118 | 0.0128 | 0.0056 | 0.137 | 0.0128 |
| EU-27 average | A | 0.017 | 0.000887 | 0.000459 | 0.0183 | 0.000604 |
| EU-27 average | B | 0.0556 | 0.00334 | 0.0015 | 0.0605 | 0.00293 |
| EU-27 average | C | 0.207 | 0.0128 | 0.0056 | 0.226 | 0.0128 |
| EU West - UK (London) | A | 0.017 | 0.000887 | 0.000459 | 0.0183 | 0.000604 |
| EU West - UK (London) | B | 0.0555 | 0.00334 | 0.0015 | 0.0604 | 0.00293 |
| EU West - UK (London) | C | 0.207 | 0.0128 | 0.0056 | 0.225 | 0.0128 |
| Netherlands | A | 0.0193 | 0.000887 | 0.000459 | 0.0206 | 0.000604 |
| Netherlands | B | 0.0632 | 0.00334 | 0.0015 | 0.0681 | 0.00293 |
| Netherlands | C | 0.235 | 0.0128 | 0.0056 | 0.254 | 0.0128 |
| EU West - Ireland | A | 0.0203 | 0.000887 | 0.000459 | 0.0217 | 0.000604 |
| EU West - Ireland | B | 0.0666 | 0.00334 | 0.0015 | 0.0714 | 0.00293 |
| EU West - Ireland | C | 0.248 | 0.0128 | 0.0056 | 0.266 | 0.0128 |
| EU Central - Germany | A | 0.0262 | 0.000887 | 0.000459 | 0.0275 | 0.000604 |
| EU Central - Germany | B | 0.0857 | 0.00334 | 0.0015 | 0.0905 | 0.00293 |
| EU Central - Germany | C | 0.319 | 0.0128 | 0.0056 | 0.338 | 0.0128 |
| US East - N. Virginia | A | 0.0219 | 0.000887 | 0.000459 | 0.0232 | 0.000604 |
| US East - N. Virginia | B | 0.0716 | 0.00334 | 0.0015 | 0.0765 | 0.00293 |
| US East - N. Virginia | C | 0.267 | 0.0128 | 0.0056 | 0.285 | 0.0128 |
| US West - Oregon | A | 0.0233 | 0.000887 | 0.000459 | 0.0246 | 0.000604 |
| US West - Oregon | B | 0.0763 | 0.00334 | 0.0015 | 0.0811 | 0.00293 |
| US West - Oregon | C | 0.284 | 0.0128 | 0.0056 | 0.303 | 0.0128 |
| US South Central - Texas | A | 0.027 | 0.000887 | 0.000459 | 0.0284 | 0.000604 |
| US South Central - Texas | B | 0.0885 | 0.00334 | 0.0015 | 0.0933 | 0.00293 |
| US South Central - Texas | C | 0.329 | 0.0128 | 0.0056 | 0.348 | 0.0128 |
| US South - Southeast | A | 0.031 | 0.000887 | 0.000459 | 0.0324 | 0.000604 |
| US South - Southeast | B | 0.102 | 0.00334 | 0.0015 | 0.106 | 0.00293 |
| US South - Southeast | C | 0.378 | 0.0128 | 0.0056 | 0.397 | 0.0128 |
| US Central - Iowa | A | 0.034 | 0.000887 | 0.000459 | 0.0353 | 0.000604 |
| US Central - Iowa | B | 0.111 | 0.00334 | 0.0015 | 0.116 | 0.00293 |
| US Central - Iowa | C | 0.414 | 0.0128 | 0.0056 | 0.433 | 0.0128 |
| Asia Pacific - Singapore | A | 0.036 | 0.000887 | 0.000459 | 0.0374 | 0.000604 |
| Asia Pacific - Singapore | B | 0.118 | 0.00334 | 0.0015 | 0.123 | 0.00293 |
| Asia Pacific - Singapore | C | 0.44 | 0.0128 | 0.0056 | 0.458 | 0.0128 |
| Asia Pacific - Japan | A | 0.0355 | 0.000887 | 0.000459 | 0.0368 | 0.000604 |
| Asia Pacific - Japan | B | 0.116 | 0.00334 | 0.0015 | 0.121 | 0.00293 |
| Asia Pacific - Japan | C | 0.432 | 0.0128 | 0.0056 | 0.451 | 0.0128 |
| Global average | A | 0.0348 | 0.000887 | 0.000459 | 0.0361 | 0.000604 |
| Global average | B | 0.114 | 0.00334 | 0.0015 | 0.119 | 0.00293 |
| Global average | C | 0.424 | 0.0128 | 0.0056 | 0.443 | 0.0128 |
Water per region is in the water section above. Carbon and water do not move together, so read them side by side before moving a workload on carbon evidence alone.
Factors are location-based: they use the average carbon intensity of the grid serving the region, not the renewable contracts the provider has signed. A market-based figure, which nets off power purchase agreements and certificates, will be lower for the same work, and the two must not be compared with each other. Per-region and per-class pages are at SOMA AI Emission Factors.
Does the number change if my provider buys renewable electricity?
Not in these tables. The factors are location-based, so they use the average carbon intensity of the grid that physically serves the region, whatever contracts the provider has signed. A market-based figure — one that applies power purchase agreements and energy attribute certificates — is a different number, usually much lower, and it answers a different question.
Both are legitimate and the GHG Protocol Scope 2 guidance expects a reporter to be clear about which one is on the page. Mixing them inside a single inventory line, or comparing a provider's market-based claim with a location-based estimate and calling the difference a saving, is the common error. If your provider gives you a certified account-level figure, that is Tier 3 and it replaces the calculation rather than being averaged with it — record which basis it uses.
The method, section by section
The text below is rendered from the method paper and the dataset by the same build that emits the factor tables, so every figure in it is the dataset's own. Each part names the paper section it summarises.
3.1 Scope and Boundary
This section decides what the factor covers. Purchased AI inference sits in Scope 3 Category 1, whose minimum boundary is cradle-to-gate, so a factor that counts only serving electricity falls short of it. The central factor therefore has four terms: serving electricity (accelerators, the rest of the server, capacity held idle, facility cooling and power distribution, and the upstream fuel cycle of the electricity), embodied server manufacturing and transport, data-centre construction, and the final training runs of the model amortised over the tokens it serves. Model development beyond those final runs is quantified but reported as a separate line and never added, because it rests on sector-wide ratios rather than on anything disclosed about the model in use. Storage, external networking and hardware end-of-life sit outside with small stated bounds; end-user devices and provider staff are excluded and named. A preparer declares this boundary, its exclusions, and that the figure is a bottom-up estimate, not the provider's own allocation of its inventory.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §3.1 "Scope and Boundary".
3.2 Activity Data: The Four Tiers
This section decides which data each AI service is counted from. A tier is assigned per service, not per company. Tier 3 uses a supplier's own assured cradle-to-gate figure; no major provider offers one yet, so it is empty today. Tier 2a uses exact billed tokens from an API or usage export, split into uncached input, cached input and output. Tier 2b estimates tokens from message or seat counts using published workload defaults. Tier 1 applies a spend-based factor where the vendor, not the customer, holds the AI relationship. The GHG Protocol sets no strict hierarchy, so the choice follows the data a preparer can actually obtain. Billed input includes the system prompt, retrieved context and the conversation history re-sent each turn. Read a product's own message count first and fall back to the per-seat default only where it cannot be retrieved. A preparer declares the tier of each service and why.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §3.2 "Activity Data: The Four Tiers".
3.3 Token Basis
This section decides how billed tokens become the quantity a factor is applied to. Energy is benchmarked per output token on a benchmark that already contains its own input processing, so input tokens are weighted and the result divided by a normaliser so prefill is not charged twice. Effective tokens equal output tokens, plus uncached input weighted at 0.3, plus cached input weighted at 0.05, all divided by 1.339. Electricity, embodied hardware and construction are charged on effective tokens; training is charged on billed tokens, input and output including cached input. Where only a billed total is known, multiply it by 0.302, which assumes an input share of 0.85 and claims no cache credit, the conservative choice. Where messages are counted, apply the weights to the split defaults directly and never also apply that multiplier. A preparer declares the weights used and any cache credit claimed.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §3.3 "Token Basis".
3.4 Factor Equation
This section decides how the four terms are built and combined. Facility energy is benchmarked accelerator energy times a host uplift for the rest of the server, an idle uplift for capacity held ready, and the facility's PUE. Electricity is that energy times the lifecycle grid intensity of the serving region. Embodied hardware spreads server manufacturing and transport over its service life at the fleet's utilisation. Construction is a constant per kWh of server electricity. Training is the disclosed emissions of final training runs divided by the tokens a model serves in its life. The first three are per million effective tokens and form the inference footprint; training is per million billed tokens. They are never summed into one unlabelled total, and a billed count must never be multiplied by an inference footprint. The development line is reported separately and never added. Contracted accelerator-hours use a reserved-capacity variant with no idle uplift. A preparer declares which terms were reported and on which denominator.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §3.4 "Factor Equation".
3.5 Resolution: From a Model Identifier and a Region to a Factor
This section decides how a model name and a region become a factor. Where the model served has its own benchmark result, its own factor is used. Every closed commercial model is instead assigned to a size class, small, mid or frontier, by its disclosed total parameter count, or by the vendor's pricing tier where no size is disclosed; a disclosed size always overrides the tier name. The class value is the mean of its benchmarked members. The assignment is published as data: 187 identifier patterns, read between 2026-09 and 2026-10, matched longest first. An identifier that matches nothing takes class C, the highest-intensity class, and is flagged. A customer-pinned region takes its own grid row, an EU-only processing commitment the EU average row, and an unknown region the global average. A preparer declares the class or own-model factor of each service, the region rule applied, and the share of activity that fell back.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §3.5 "Resolution: From a Model Identifier and a Region to a Factor".
3.6 Water as an Extension of the Same Chain
This section decides how water is counted from the same tokens and energy, without changing the carbon figure. On-site water is the cooling water at the data centre; off-site water is the water consumed generating its electricity. Water is never added to carbon. Three conventions change the answer and are declared rather than settled. Every on-site value is put on a consumption basis, because adding withdrawal to consumption double counts. Evaporation at hydroelectric reservoirs may be allocated to electricity or excluded from it; both totals are reported side by side, neither is preferred, and they are two conventions for one quantity, not an uncertainty range. Scarcity weighting with AWARE 2.0 is applied to the on-site term alone, because the data centre is the only location known. A preparer wanting one volumetric number reports the hydropower-excluded total and discloses the allocated one beside it. Where a region has no water value, the result is "not available", never zero.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §3.6 "Water as an Extension of the Same Chain".
3.7 Spend-Based Fallback
This section decides what to do when no usage data exist. Apply the environmentally extended input-output factor for computer and related services of the vendor's producing country to spend excluding VAT, deflated from the spend year to the factor's price basis with the harmonised consumer price index. The deflated figure is the method's result; an undeflated figure is shown only for comparison. It is a screening figure that covers the whole subscription, typically several times a physical estimate, and never an upper bound. Unless the AI share can be evidenced, for example by a separately priced AI add-on, keep the subscription as a spend-based screening line and disclose that its AI share is not separately estimable. Do not relabel a whole subscription as AI. A preparer declares the factor, the deflator and the spend year, and removes any spend already counted by a token-based line so the same purchase is not counted twice.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §3.7 "Spend-Based Fallback".
3.8 Uncertainty and Data Quality
This section decides how uncertainty is reported, keeping three things apart. The class range is the spread of the benchmarked models of a class around its mean; it is data, not a confidence interval, and disappears where the model has its own factor. The activity band applies only to estimated tokens and is the interquartile range of observed workloads. Systematic uncertainty of the factor is handled by scenarios: one central value, and one conservative high case that raises the host uplift, the idle uplift with lower utilisation, and PUE together while holding training central. The high case is a scenario reported beside the central value, never a confidence interval and never inside the formula; no low case is reported. Data quality is scored on the method's own scale, not a GHG Protocol scale: exact tokens score 2 for activity and 3 for the factor; estimated tokens score 4 and 3. A preparer reports the central value with its class range and high case.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §3.8 "Uncertainty and Data Quality".
3.9 Reporting Rules and Maintenance
This section decides what a preparer discloses and how the factors stay current; the rules are the method's proposal and go beyond what ESRS or the GHG Protocol prescribe. Disclose the boundary and its exclusions, the location basis and grid year, each service's class or own-model factor and why, the region rule, the token weights and any cache credit, the operating-point rule, and the global warming potential set. Report the central value with the class range and the high case; where a class rests on a vendor tier rather than a disclosed size, add the adjacent-class values as a scenario. Report the figure gross, before offsets. Pin one dataset version per reporting year, and treat a change of version or grid year as a methodology change. Each input family is refreshed from a named source on a stated cadence, and a provider disclosing energy per token for a model it serves supersedes the class chain for that model. SOMA pins soma-ai-ef-2026.10-dataset-v3.0.0.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §3.9 "Reporting Rules and Maintenance".
4.1 Accelerator Energy per Token
This section decides the energy anchor. Accelerator energy per output token comes from the ML.ENERGY leaderboard, the only open benchmark covering the same open-weight models on H100 and B200 under one protocol. For each model the method takes the lowest-energy configuration that still streams at interactive speed, the point a cost-minimising provider would choose; this is a best-case serving point, so it biases electricity low. Taking instead the mean over every configuration meeting the same latency limit would raise the result by nearly a factor of three, and is carried as a named scenario, never merged into the high case. A class value is the arithmetic mean of its benchmarked members; on H100 the mid class draws 0.236 Wh of facility energy per thousand effective tokens. The class range at the global-average grid is -40.4 % to 47.4 % for the small class, -38.5 % to 23.2 % for the mid class and -66.6 % to 54.5 % for the frontier class. A preparer declares the operating-point rule and its named scenario.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §4.1 "Accelerator Energy per Token".
4.2 Server and Facility Overheads
This section decides the three uplifts that turn accelerator energy into the energy a facility buys. The host uplift for the rest of the server is 1.5, between 1.43 and 1.88, from a metered eight-accelerator node, and is more likely to understate than overstate. The idle uplift for capacity held ready is 1.1, between 1.05 and 1.2, from Google's published serving figures; it is tied to a fleet utilisation of 0.75, so the two always move together. PUE is 1.2, between 1.09 and 1.45; it is an author choice set deliberately above the hyperscalers' disclosed fleet values to cover serving outside hyperscale facilities. Construction is charged on server electricity and does not move with PUE. A preparer declares these values and that no on-premises variant exists, so the same uplifts are applied to self-hosted serving.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §4.2 "Server and Facility Overheads".
4.3 Grid Carbon Intensity
This section decides which grid number turns facility energy into emissions. Grid intensities are annual, location-based and on a lifecycle basis for 2023, so upstream fuel-cycle emissions are already inside them. Countries, the EU average and the world average come from Ember; United States grid subregions come from EPA eGRID2023, scaled up to Ember's lifecycle basis. The global average is 0.483 kg CO2e per kWh, the EU average 0.236, and France 0.0533. The dataset carries 240 grid rows and maps 143 public cloud regions to them with a stated confidence; outside the United States a cloud region takes its national average. Because the values are location-based, a provider's renewable purchases do not lower them, and because they are per kWh generated, transmission losses are outside them. Newer grid data are lower, so these rows lean high. A preparer declares the grid year and the location basis.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §4.3 "Grid Carbon Intensity".
4.4 Embodied Hardware, Transport and Construction
This section decides the two building and hardware terms. Server manufacturing and transport come from Dell's published product carbon footprints for an eight-accelerator H100-class server, which are cradle-to-gate, with no end-of-life stage and no recycling credit. That footprint is spread by time over a hardware life of 5 years at the fleet's utilisation and divided by each model's benchmarked throughput, giving 0.89, 3.34 and 12.84 g CO2e per million effective tokens for the small, mid and frontier classes. Its upper tail is open. Construction is a separate term on server electricity, independent of the grid, at 7.66 g CO2e per kWh, the upper end of a narrow published range; a lower Carbon Trust reading is cited in the source but not emitted. That gives 0.46, 1.50 and 5.60 g per million effective tokens. A preparer declares both terms as inside the boundary.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §4.4 "Embodied Hardware, Transport and Construction".
4.5 Training, Service Life and the Development Ratio
This section decides the training term and the separate development line. Training rests on Meta's location-based disclosures for its Llama family, the only verified per-model training figures spanning all three classes, covering final training runs only. They are divided by the tokens a model serves in a service life of 12 months, between 6 and 18, at the one per-model serving volume ever disclosed. That gives 0.60, 2.93 and 12.84 g CO2e per million billed tokens. The volume rests on one early-life datapoint, so the term leans low. Development beyond the final runs is estimated with a ratio of development to serving energy of 1.5, between 0.67 and 2.5. The ratio is a sector spend reconstruction, not a reading of the model in use, so the development line is reported separately and never added to the factor. A preparer who reports a development-inclusive total labels it and states the ratio.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §4.5 "Training, Service Life and the Development Ratio".
4.6 Token Weights
This section decides the numbers behind effective tokens. An uncached input token is weighted at 0.3 of an output token, between 0.1 and 0.4, read from the benchmark's own results for prefill against decode energy. A cached input token is weighted at 0.05, between 0.02 and 0.1; no energy benchmark of a cache read exists, so it sits between a commercial and a physical bound and leans low for cache-heavy work such as agentic coding. Each benchmark run is restated to a reference mix of 1.13 uncached input tokens per output token, which gives the divisor 1.339, between 1.113 and 1.452. At the default input share of 0.85 with no cache credit, effective tokens are 0.302 of billed tokens, between 0.211 and 0.337. A preparer declares the weights and uses the export's own input, cached and output split wherever it reports one.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §4.6 "Token Weights".
4.7 Tier 2b Activity Defaults
This section decides how messages and seats become tokens when a product reports no tokens. A short chat exchange is 928 billed input and 282 output tokens, the input including re-sent context. An agentic coding request is about 85,000 tokens, most of the input served from cache; count model requests, not human turns. An active enterprise seat sends 30 messages a month and a heavy-use seat 325. The band on estimated tokens runs from -50 % to 130 %, asymmetric because observed workloads are right-skewed. A benchmarked 5.0 % of conversations use a reasoning mode, and no public source gives a reasoning-token multiplier, so at Tier 2b SOMA multiplies estimated output tokens only by 1 + s(k - 1), with k an author assumption of 25 (range 10 to 50), an uplift of about 2.2. Exact token counts already include reasoning tokens and are not multiplied. A preparer declares which defaults replaced missing data.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §4.7 "Tier 2b Activity Defaults".
4.8 Water Inputs
This section decides where the water numbers come from. On-site values are published water use effectiveness figures for named cloud regions, or ratios derived from a provider's own published site water and electricity; where neither exists a continental aggregate or an older site series stands in and is marked unconfirmed. They range from 0.02 litres per kWh in Stockholm to 1.57 in Singapore. Withdrawal figures are converted to consumption with the one documented conversion, and the as-published figures become a sensitivity. Off-site values are the consumption factors of electricity generation, with a hydropower-excluded variant beside them; Singapore has no off-site source. Scarcity weighting uses the AWARE 2.0 factor of the region and is not applied to the global or EU averages, which are not locations. Water is published for 17 regions only; any other region reads "not available". A value is applied whichever provider serves from that region, which is a proxy. A preparer declares the basis, both hydropower conventions and each region's confidence.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §4.8 "Water Inputs".
4.9 The Factor Tables
This section prints the factors a reader can check by hand. At the global-average grid, the inference footprint is 0.0361, 0.119 and 0.443 kg CO2e per million effective tokens for the small, mid and frontier classes. Where only a billed total is known, the convenience factor folds the default multiplier and the training term into one figure per million billed tokens: 0.0115, 0.0388 and 0.147. For comparing models or regions use the inference footprint, never the convenience factor. The dataset applies the same rules beyond the printed regions: 32 benchmarked model rows on H100 and B200 with their own factors, 240 grid rows and 143 cloud regions, with a reference calculator that names the file, line and column behind every number. Closed commercial models have neither a benchmark result nor a disclosed size, so for them the class remains the unit of estimation. A preparer cites the dataset version used.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §4.9 "The Factor Tables".
5.5 Sensitivity Analysis
This section decides which choices move the result and how much. The largest mover is not an input but a choice: which configuration of a benchmarked sweep counts as the serving point, worth nearly a factor of three. The training denominator is the second. The conservative high case adds 63.9 %, 63.7 % and 63.7 % to the inference footprint of the small, mid and frontier classes, with PUE and the host uplift carrying roughly equal weight. The hardware inputs move almost nothing. On the billed denominator, the input-token weight matters more than any embodied or construction input. When the input bands are propagated together, the central value sits near the lower end of what they allow, and the high case lies beyond the likely range, so it is a bound, not a likely value. That propagation excludes the class range, the operating point, the serving region and the activity estimate, which stay separate. Two grid conventions, transmission losses and behind-the-meter generation, are named sensitivities rather than inputs. A preparer discloses the high case and the named operating-point scenario.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §5.5 "Sensitivity Analysis".
6 Application
This section shows the method applied. A hypothetical European professional-services firm has three AI services, one per tier. An API with exact tokens and no disclosed region uses the global average: effective tokens times the mid-class inference footprint of 0.119 kg per million, plus billed tokens times training of 0.00293 kg per million. A seat product estimates tokens from its exported message count, weights its model classes by the days each default model was in force, and keeps the activity band. A bundled subscription stays a spend-based screening line that is not an AI figure. For a firm like this the AI line is small, a documentation task rather than a magnitude one. A second example, fifty developers using agentic coding tools, shows the opposite: there the class assignment and the development line dominate, and the cached-token weight, which has no energy benchmark, widens the range. The suggested disclosure states boundary, activity data and factors, uncertainty, and how double counting with spend-based lines was avoided, and the preparer retains the exports behind it.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §6 "Application".
7.4 Relation to Existing Standards
This section decides where the method sits among standards. It is written for the CSRD and ESRS; the same factors and activity rules would serve an ISSB climate disclosure or a California disclosure, but the reporting rules are not mapped to them. The Green Software Foundation's Software Carbon Intensity specification is a rate per functional unit and maps onto exact-token accounting; its AI extension suggests one token as the unit, which the factor here is compatible with, while carrying four terms on two denominators rather than one. The ITU-T recommendation on AI life-cycle assessment is in force but supplies no emission factors, activity rules or per-token values. The GHG Protocol is consolidating its standards with ISO, and its working group has AI workloads and energy per token under discussion; the method's reporting rules would need revisiting against that text. The claim is that no standard yet supplies a preparer's factors and activity data, not that none addresses AI assessment. A preparer states that the method is a proposal, not a prescribed standard.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §7.4 "Relation to Existing Standards".
S5 Decision Rules and the Refresh Schedule
This section collects the rules the tiers leave open. A boundary table maps every lifecycle element to the term carrying it, the separately reported development line, bounded exclusions, and what is out of scope: customer fine-tuning, embeddings and image, audio or video work. AI bought through one's own cloud account replaces the cloud tool's line only where that line can be isolated. A supplier's energy quantity is the hybrid method, not a supplier-specific figure. A supplier figure qualifies only with a stated boundary, allocation and assurance status, at least limited assurance in the sense of ISO 14064. Market-based instruments, the preparer's own or the provider's, never reduce this location-based figure. State one set of global warming potentials, AR5 as the grid data use. Pin one dataset version per year, recalculate the base year only above the company's own significance threshold, and back-cast on spend only after adjusting for falling token prices. Remove spend already counted by a token-based line. Every input family has a named source, cadence and out-of-cycle trigger.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §S5 "Decision Rules and the Refresh Schedule".
S7 Register of Assumptions
This section records every assumption the method uses, grouped by where it is discussed, each with its value, source, the reason that source was chosen and the expected direction of error: low means the factor is more likely an underestimate, high an overestimate. It opens with every value changed between dataset versions: the operating point is now the lowest-energy configuration at interactive speed, and a class value is the mean of its benchmarked members rather than one named proxy model, which raises the frontier class. Most named biases point low: the best-case operating point, the host and idle uplifts, the embodied upper tail and the training denominator. Several values are author choices rather than sourced figures, PUE and the cached-token weight among them, and are named as such. SOMA uses dataset version soma-ai-ef-2026.10-dataset-v3.0.0. The concept DOI 10.5281/zenodo.20443585 resolves to the latest version, the record 10.5281/zenodo.22767475 holds the superseded values, and for this version, v3 record: 10.5281/zenodo.23371447 (dataset version 3.0.0, copied 2026-10-19, CC BY 4.0). A preparer cites the version and the register when asked how a figure was built.
Source: Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method, Llopis (2026), §S7 "Register of Assumptions".
How do these factors compare with other published estimates?
They are in the same range, and they do not count the same thing. SOMA's class B factor works out at about 0.10 Wh of electricity and 0.05 g CO₂e for a 1210-token exchange at the global-average grid. Google reports 0.24 Wh, 0.03 g CO₂e and 0.26 mL of water for the median Gemini Apps text prompt (Google, 21 August 2025). Epoch AI estimates about 0.3 Wh for a typical GPT-4o query (Epoch AI, 7 February 2025), and Sam Altman has written that the average ChatGPT query uses about 0.34 Wh (The Gentle Singularity, 2025).
SOMA's electricity per exchange is derived from the same benchmark energy that produces the carbon factors. It covers the accelerators, the rest of the server, the capacity a provider keeps idle for traffic spikes and the facility overhead — the items Google's own figure counts — at the lowest-energy configuration that still streams at interactive speed. The serving point and the length of a "query" are what still separate the two, a boundary difference rather than a contradiction.
The differences between those numbers are mostly boundary and assumption, not disagreement about physics: how many tokens a "query" is, whether idle capacity and host CPU are counted, which grid the electricity comes from, and whether hardware and training are included at all. The published figures for one query span roughly two orders of magnitude once the grid is allowed to vary, which is worked through in why AI footprint estimates differ.
How do I check one of these numbers myself?
Take the class B row for US East - N. Virginia in the table above. The electricity term is 0.0716039 kg CO₂e per million effective tokens; add the embodied term, 0.00334385 kg, and the construction term, 0.00150451 kg, and you get the inference footprint of 0.0764522 kg per million effective tokens, to the precision the dataset prints. Training, 0.00293425 kg, is per million billed tokens. Effective tokens are output tokens plus 0.3 times uncached input plus 0.05 times cached input, divided by 1.339; the figure SOMA produces is effective tokens in millions times the footprint, plus billed tokens in millions times training. A billed count is never multiplied by the footprint.
The same columns are in the Zenodo CSVs, so the arithmetic can be checked against the dataset rather than against this page. If a figure in a SOMA export does not reproduce, the factor version printed beside it says which edition of the tables to check, and older versions stay resolvable.
How do I cite these factors?
Method paper, plain text:
Llopis-Garcia, G. (2026). Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method. arXiv:2606.10660. Under review at Sustainable Production and Consumption, manuscript SPC-D-26-04019. arxiv.org/abs/2606.10660
Factor dataset, plain text:
Llopis-Garcia, G. (2026). AI Inference Emission and Resource Factors for Corporate GHG Inventories [Data set]. Zenodo. CC BY 4.0. doi.org/10.5281/zenodo.20443585
The concept DOI, 10.5281/zenodo.20443585, resolves to the latest version of the dataset. The v2.0.0 record, 10.5281/zenodo.22767475, holds the superseded values. v3 record: 10.5281/zenodo.23371447. SOMA's own factor version, soma-ai-ef-2026.10-dataset-v3.0.0, names the copy of the dataset SOMA pins; quote it beside the DOI when a reader has to reproduce a specific figure. BibTeX:
@misc{llopis2026aiinference,
author = {Llopis-Garcia, Guillermo},
title = {Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method},
year = {2026},
eprint = {2606.10660},
archivePrefix = {arXiv},
url = {https://arxiv.org/abs/2606.10660},
note = {Preprint. Under review at Sustainable Production and Consumption, manuscript SPC-D-26-04019}
}
@dataset{llopis2026factors,
author = {Llopis-Garcia, Guillermo},
title = {AI Inference Emission and Resource Factors for Corporate GHG Inventories},
year = {2026},
publisher = {Zenodo},
doi = {10.5281/zenodo.20443585},
url = {https://doi.org/10.5281/zenodo.20443585},
note = {Concept DOI, resolves to the latest version. Superseded values: 10.5281/zenodo.22767475}
}The dataset's CSV files are mirrored on GitHub (with the consistency checker) and Hugging Face (with a dataset viewer). Zenodo remains the citable record.
Which version is this, and when did it last change?
Factor version soma-ai-ef-2026.10-dataset-v3.0.0, dated . It is SOMA's pinned copy of the published dataset, taken on , and is the version behind every number on this page.
Every factor SOMA serves carries this version string, in the product, in the API response and in the exported inventory line. When a table changes, the version changes, the old version stays resolvable on Zenodo, and partners are told what moved and why. That is what makes last year's inventory reproducible after the factors have been updated — an auditor can ask which version produced a figure and get an answer that resolves to a citable record.
Can I get these factors through an API?
Yes. Send a model name and the region it is served from, and the endpoint returns carbon and water per million tokens, split into the three terms, with the class, the region, the uncertainty, the factor version and the sources attached. The full table is 738 rows, 3 classes across 18 regions. The response says when a class or a region has been assumed rather than recognised, so a product can show the caveat instead of hiding it.
Documentation is at AI factors API documentation, the browsable tables at SOMA AI Emission Factors. Products that display the figures label them "carbon data powered by SOMA" and link back to this page.
What are the primary sources?
- Energy per token: the ML.ENERGY leaderboard, with the server, idle and facility uplifts from Llopis-Garcia, G. (2026), Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method.
- Grid carbon intensity: EPA eGRID 2023 for US regions, Ember 2023 elsewhere.
- Water: Li et al. 2025 for on-site WUE, Reig et al. 2020 for the water embedded in generation.
- Embodied hardware: Llopis-Garcia, G. (2026), Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method.
- Construction: Llopis-Garcia, G. (2026), Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method.
- Training: Llopis-Garcia, G. (2026), Accounting for Purchased AI Inference in Corporate GHG Inventories: A Token-Based Method.
- Spend-based fallback: EXIOBASE 3.8.2 — Computer and related services, 0.1181 kg CO₂e per EUR, ±300% — CC BY-SA 4.0, DOI 10.5281/zenodo.5589597.
- Scope 3 spend-based estimates (USD invoices): Supply Chain GHG Emission Factors for US Commodities and Industries v1.3.0 (NAICS 2017, USD 2022) — US federal public domain (17 U.S.C. §105), DOI 10.23719/1531143.
Get the audit-ready figure for your organisation
The numbers above are factors. SOMA turns your providers' usage exports into the finished Scope 3 Category 1 entry, with the tier, factor, version, sources and uncertainty attached, ready for your auditor. Write to lili@somaai.earth or visit somaai.earth.
Keep reading
- How to account for AI usage in a Scope 3 inventory, and when CSRD applies. The method applied to a worked example
- Why AI footprint estimates differ: published figures, dated. What each published figure counts
- AI factors API. The same factors, one row per request
- Changelog. Every published version
