# Carbon Offset Methodology

[Read the essay](https://ownai.com/library/carbon) · Text licensed under [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/).

How ownAI estimates the CO2e emissions of LLM usage that runs through the
ownAI credits proxy, and funds their **permanent removal** from the
atmosphere. This is the reference for every constant and number behind
ownAI's carbon estimates.

> **This is an estimate, not a measurement.** Model providers do not expose the
> energy used per request, so we estimate it from token counts, published
> energy models, and grid carbon-intensity data. We deliberately make
> conservative choices (round up, location-based grid, high estimates for
> undisclosed models) so we remove at least as much as is actually emitted.

ownAI funds the removals from its margin; there is no extra charge to users.

---

## 1. Summary

For each day, for each model a user used, we estimate:

```
emissions (kg CO2e) = output_tokens
                     × energy_per_output_token (kWh)      ← EcoLogits model + PUE
                     × grid_carbon_intensity (gCO2e/kWh)  ← region where it runs
                     ÷ 1000
```

The platform's daily total is then permanently removed from the atmosphere
with a single Ecologi `/impact/carbon-removal` purchase (rounded up to the
next whole kilogram — Ecologi's minimum order is 1 kg).

---

## 2. Principles

- **Estimate, conservatively.** Where a value is uncertain we pick the option
  that increases the estimate (over-compensate rather than under-compensate).
- **Output tokens only.** Generation (decode) dominates inference energy; prompt
  prefill is comparatively cheap and is partly captured by the model's baseline
  term. This matches the EcoLogits methodology.
- **Location-based grid.** We use the grid carbon intensity of the country where
  the model is actually served, not an operator's market-based (contractual)
  renewable claim. This is the conservative, harder-to-greenwash choice. EU/CH
  operators still come out far cleaner than US ones — that benefit is real and
  reflected — we simply do not assume zero.
- **Tunable + documented.** Physical inputs (a model's active parameters) live in
  the model catalog; coefficients and grid factors are constants/env, each with
  a cited source.

---

## 3. Inference energy model (EcoLogits)

We use the **EcoLogits v0.4** LLM-inference regression, which fits GPU energy per
**output** token as a linear function of a model's **active** parameters:

```
E_GPU / token = α · P_active + β        [Wh per output token]
  α = 8.91e-5      (Wh per output token per billion active params)
  β = 1.43e-3      (Wh per output token, baseline)
  P_active in billions of parameters
```

Data-centre overhead (cooling, power distribution, non-GPU server draw) is
applied via a **Power Usage Effectiveness (PUE)** multiplier:

```
energy_per_output_token = (α · P_active + β) · PUE
  PUE = 1.2   (EcoLogits default for modern data centres)
```

- **Active vs total parameters:** for Mixture-of-Experts (MoE) models energy
  scales with the *active* experts per token, not the total weight count. E.g.
  Qwen 3.5 397B-A17B → `P_active = 17`.

Source: EcoLogits methodology, "LLM Inference"
(https://ecologits.ai/0.4/methodology/llm_inference/). EcoLogits is an
open-source library published in the Journal of Open Source Software (2025) and
applies an ISO 14044 life-cycle approach (we use its usage-phase energy term;
embodied hardware impact is not separately added here — see Limitations).

---

## 4. Grid carbon intensity

`g CO2e / kWh` for the region where each model runs, derived from each model's
hosting operator. Defaults, overridable via environment:

| Region | Operators | Location | Default gCO2e/kWh | Source |
|--------|-----------|----------|-------------------|--------|
| `EU` | Scaleway | Paris, France | **59** | Electricity Maps, France 2023 (lifecycle). France's direct-emissions figure is far lower (~22, RTE 2024); we use the higher lifecycle value. |
| `CH` | Infomaniak | Geneva, Switzerland | **91** | Electricity Maps, Switzerland 2023 (consumption-based, incl. winter imports). Infomaniak markets ~100% renewable hydro (market-based ≈ 0); we use the location-based value conservatively. |
| `US` | Anthropic, OpenAI | United States | **384** | Ember, US national average 2024. US zones vary widely (≈56 hydro WA → ≈647 SC); exact serving regions are undisclosed, so we use the national average. |

Note: the `EU` factor reflects France specifically (our only EU operator), not a
continent-wide average. Revisit if a non-French EU operator is added.

Sources: Electricity Maps (https://app.electricitymaps.com/), Ember 2024
(https://ember-energy.org/), RTE French Annual Electricity Review 2024.

---

## 5. Active parameters per model

**Open-weight models** (Scaleway, Infomaniak): taken from the published spec —
the `A<n>B` suffix gives MoE active params; dense models use their full size.

**Closed models** (Anthropic, OpenAI): no official disclosure. We use
deliberately high estimates based on public reporting of frontier MoE
active-parameter counts. Erring high means we over-compensate, which is the
intended direction. These should be revised if official figures are published.

| Model | Operator | Active params (B) | Basis |
|-------|----------|-------------------|-------|
| Qwen 3.5 397B (A17B) | Scaleway | 17 | spec (MoE active) |
| Qwen 3.6 35B (A3B) | Scaleway | 3 | spec (MoE active) |
| Gemma 4 26B (A4B) | Scaleway | 4 | spec (MoE active) |
| Mistral Small 3.2 24B | Scaleway | 24 | spec (dense) |
| Devstral 2 123B | Scaleway | 123 | spec (dense) |
| Qwen 3.5 122B (A10B) | Infomaniak | 10 | spec (MoE active) |
| Gemma 4 31B | Infomaniak | 31 | spec (dense) |
| Kimi K2.6 | Infomaniak | 32 | spec (MoE active, ~1T total) |
| Nemotron 3 Nano 30B (A3B) | Infomaniak | 3 | spec (MoE active) |
| Mistral Small 4 119B | Infomaniak | 40 | **estimate** (active count not disclosed; assumed MoE) |
| Claude Sonnet 4.6 | Anthropic | 150 | **estimate** (no disclosure) |
| Claude Opus 4.8 | Anthropic | 300 | **estimate** (no disclosure; throughput-based reverse engineering puts Opus-class models at ~100–150B active, so 300 errs ~2–3× high) |
| Claude Fable 5 | Anthropic | 400 | **estimate** (no disclosure; same architecture family as Opus at ~1.2× the estimated total size, with similar serving throughput — 400 keeps the same ~2–3× high margin) |
| Claude Haiku 4.5 | Anthropic | 30 | **estimate** (no disclosure) |
| GPT-5.4 | OpenAI | 200 | **estimate** (no disclosure) |
| GPT-5.5 | OpenAI | 300 | **estimate** (no disclosure) |
| GPT-5.4 mini | OpenAI | 40 | **estimate** (no disclosure) |

Unresolved models (e.g. a removed model still in old logs) fall back to a
default of 70B active parameters and the US grid.

---

## 6. Worked example

Mistral Small 3.2 24B (Scaleway, France), a user generates 100,000 output tokens
in a day:

```
energy/token = (8.91e-5 · 24 + 1.43e-3) · 1.2
             = (2.1384e-3 + 1.43e-3) · 1.2
             = 3.5684e-3 · 1.2
             = 4.282e-3 Wh/token
energy       = 100,000 · 4.282e-3 Wh = 428.2 Wh = 0.4282 kWh
emissions    = 0.4282 kWh · 59 gCO2e/kWh = 25.3 gCO2e = 0.0253 kg
```

---

## 7. Derived per-model figures

Computed from §3–§5 (energy per 1,000 output tokens, and gCO2e per 1,000,000
output tokens). For reference/sanity-checking only — the estimator computes these
from active parameters at runtime.

| Model | Region | Wh / 1k out tok | gCO2e / 1M out tok |
|-------|--------|-----------------|--------------------|
| Qwen 3.6 35B (A3B) | EU | 2.0 | 120 |
| Gemma 4 26B (A4B) | EU | 2.1 | 126 |
| Qwen 3.5 397B (A17B) | EU | 3.5 | 208 |
| Mistral Small 3.2 24B | EU | 4.3 | 253 |
| Devstral 2 123B | EU | 14.9 | 877 |
| Nemotron 3 Nano (A3B) | CH | 2.0 | 185 |
| Qwen 3.5 122B (A10B) | CH | 2.8 | 253 |
| Gemma 4 31B | CH | 5.0 | 458 |
| Kimi K2.6 | CH | 5.1 | 468 |
| Mistral Small 4 119B | CH | 6.0 | 545 |
| Claude Haiku 4.5 | US | 4.9 | 1,891 |
| Claude Sonnet 4.6 | US | 17.8 | 6,818 |
| GPT-5.4 | US | 23.1 | 8,870 |
| Claude Opus 4.8 | US | 33.8 | 12,976 |
| GPT-5.5 | US | 33.8 | 12,976 |
| Claude Fable 5 | US | 44.5 | 17,082 |
| GPT-5.4 mini | US | 6.0 | 2,301 |

The US figures are dominated by the US grid being ~4–7× dirtier than France/CH —
which is exactly the signal we want to surface: EU/CH-hosted open models are far
lower-carbon per token.

---

## 8. Removal cost per 1M tokens

What ownAI actually pays, per 1M **output** tokens (our basis — input tokens
are not charged). We buy **permanent carbon removal** (biochar, enhanced rock
weathering) rather than ~17× cheaper avoidance credits — the CO2 of LLM
inference was actually emitted, so we fund physically taking it back out of
the atmosphere instead of paying for avoided emissions elsewhere. Ecologi's
removal price is fixed and published: **£150 / $221.50 / €190.50 per tonne
CO2e** (June 2026; charged in the account's billing currency, invoiced monthly
with a £3 minimum that rolls over). The figures below use **€190.50/t**:

```
cents per 1M output tokens = gCO2e_per_1M × price_per_tonne(€) / 10000
```

| Model | Region | gCO2e / 1M out | ¢ / 1M out @ €190.50/t |
|-------|--------|----------------|-------------------------|
| Qwen 3.6 35B (A3B) | EU | 120 | 2.29 |
| Gemma 4 26B (A4B) | EU | 126 | 2.40 |
| Nemotron 3 Nano (A3B) | CH | 185 | 3.52 |
| Qwen 3.5 397B (A17B) | EU | 208 | 3.96 |
| Mistral Small 3.2 24B | EU | 253 | 4.82 |
| Qwen 3.5 122B (A10B) | CH | 253 | 4.82 |
| Gemma 4 31B | CH | 458 | 8.72 |
| Kimi K2.6 | CH | 468 | 8.92 |
| Mistral Small 4 119B | CH | 545 | 10.38 |
| Devstral 2 123B | EU | 877 | 16.71 |
| Claude Haiku 4.5 | US | 1,891 | 36.02 |
| GPT-5.4 mini | US | 2,301 | 43.83 |
| Claude Sonnet 4.6 | US | 6,818 | 129.88 |
| GPT-5.4 | US | 8,870 | 168.97 |
| Claude Opus 4.8 / GPT-5.5 | US | 12,976 | 247.19 |
| Claude Fable 5 | US | 17,082 | 325.41 |

---

## 9. Cross-checks (order-of-magnitude validation)

Independent sources, used to confirm the estimate is in the right range — not as
inputs:

- **Mistral Large 2 LCA** (peer-reviewed with Carbone 4 / ADEME): ~1.14 gCO2e
  per 400-token query ≈ **0.00285 gCO2e/token** (full life cycle incl. training
  amortization). Our operational-only estimate for a comparable 123B dense model
  on the France grid is ~0.0009 gCO2e/output token — same order of magnitude,
  lower because we exclude amortized training/embodied impact.
  (https://mistral.ai/news/our-contribution-to-a-global-environmental-standard-for-ai)
- **Google Gemini** (vendor disclosure, 2025): median text prompt **0.24 Wh**,
  0.03 gCO2e (TPU fleet, market-based grid). EcoLogits-based estimates run higher
  than vendor self-reports; we knowingly take the more conservative (higher)
  basis. (https://cloud.google.com/blog/products/infrastructure/measuring-the-environmental-impact-of-ai-inference/)
- **ML.ENERGY Leaderboard v3** (empirical GPU measurements): e.g. Qwen 3 32B
  ~0.15 J/output token at max batch on B200 ≈ 4.2e-5 Wh/token — a pure-inference
  *lower bound* (no serving overhead, idle capacity, or older hardware). Our
  estimate sits above this, as expected for real-world serving.
  (https://ml.energy/leaderboard/)

---

## 10. Limitations

- **Token-based estimate, not metered.** Real energy depends on batch size, GPU
  generation, sequence length, quantization, and utilization that we cannot see.
- **Closed-model parameters are guesses.** Anthropic/OpenAI active-param counts
  are estimated; they drive the US figures and carry the most uncertainty.
- **One grid value per region.** Real intensity varies hourly and by exact data
  centre; we use annual national averages and ignore time-of-use.
- **Embodied hardware impact** (chip/server manufacturing) is not separately
  added — only usage-phase energy. The conservative grid + PUE + round-up
  partly offset this omission.
- **Prompt/prefill energy** is not charged separately (output-token basis).
- EcoLogits itself notes its model is "still under construction."

Net effect: individual numbers may be off by a factor of a few in either
direction, but the conservative choices bias the platform total toward
over-compensation.

---

## 12. Sources

- EcoLogits — LLM inference methodology: https://ecologits.ai/0.4/methodology/llm_inference/
- EcoLogits (project): https://ecologits.ai/
- Mistral AI — environmental LCA (Mistral Large 2): https://mistral.ai/news/our-contribution-to-a-global-environmental-standard-for-ai
- Google — measuring the environmental impact of AI inference (Gemini): https://cloud.google.com/blog/products/infrastructure/measuring-the-environmental-impact-of-ai-inference/
- ML.ENERGY Leaderboard: https://ml.energy/leaderboard/
- Electricity Maps: https://app.electricitymaps.com/
- Ember — electricity data & reviews: https://ember-energy.org/
- RTE — French Annual Electricity Review 2024: https://analysesetdonnees.rte-france.com/en/annual-review-2024/keyfindings
- Ecologi (offset provider) — API docs: https://docs.ecologi.com/ — impact
  projects: https://ecologi.com/projects
