Data provenance & sources
Every number on the map traces back to a primary source. This is the single page that names them — what each figure is, where it comes from, how fresh it is, and what happens when a source is incomplete. Transparency is the whole point; this is the receipt.
Where each number comes from
One row per figure you can see on the map or in a zone panel. Each is computed from a named primary feed — never modelled, never purchased, never estimated to paper over a gap.
| Figure | Primary source | How it's derived |
|---|---|---|
| Carbon intensity (produced) | ENTSO-E A75 + IPCC AR5/AR6 | Each fuel's generation × its IPCC lifecycle CO₂eq factor, divided by total covered generation. Production-based: the intensity of the electricity generated in the zone. The consumed-here view (next row) blends in flow-traced imports. |
| Carbon intensity (consumed) | ENTSO-E A11 + A75 (flow-traced) | The intensity of the electricity actually used in the zone: domestic generation blended with imports, each import carrying its exporter's own consumption intensity, solved across the whole coupled network. A zone whose imports can't be traced stays grey — never a guessed number. |
| Day-ahead price | ENTSO-E A44, or Energy-Charts (CC BY 4.0) | The cleared day-ahead auction price (EPEX SPOT / Nord Pool / OMIE) for the current 15-min slot. A market settlement, not a forecast — known a day ahead. Negative when renewables glut. ENTSO-E is authoritative; when it publishes nothing for a slot, the figure falls back to Energy-Charts (Fraunhofer ISE) for the zones it serves under CC BY 4.0, and the zone panel says so. The price carries its own timestamp and source, so it can be present on a zone whose generation mix is missing — and it ages out on its own clock. |
| Renewable share | ENTSO-E A75 + EU RED II | Share of generation from sources the EU Renewable Energy Directive II counts as renewable (wind, hydro, solar, geothermal, biomass, marine). Nuclear is low-carbon but not renewable. |
| Demand | ENTSO-E A65 | Realised total electricity consumption in the zone — 15-min granularity, ~60-min publication lag. |
| Cross-border flows | ENTSO-E A11 | Net physical flow across each border for the last 15-min slot — the arrows on the map. |
| Great Britain | NESO Carbon Intensity API | GB isn't on ENTSO-E for us, so its national grid operator's own API supplies the fuel mix — recomputed with the same IPCC factors so GB stays directly comparable to the rest of the map. |
| Map geometry | Natural Earth 50m | The zone shapes themselves — public-domain cartography, not grid data. Just where to draw each zone. |
Primary feeds
The external sources every figure above is fetched from — click through to the originals.
- ENTSO-E Transparency Platform Generation (A75), load (A65), day-ahead price (A44) and physical flows (A11) for the European zones.
- NESO Carbon Intensity API Great Britain's generation mix and the operator's own carbon-intensity figure.
- Elexon Insights (BMRS) GB's interconnector flows (IFA, IFA2, ElecLink, BritNed, NemoLink, NSL, Viking Link, Moyle, East-West, Greenlink) — instantaneous outturn on a 5-minute cadence, since ENTSO-E carries no GB data post-Brexit. Contains BMRS data © Elexon Limited copyright and database right.
- IPCC AR6 (WG3) lifecycle emission factors The peer-reviewed lifecycle emission factors (gCO₂eq/kWh per fuel) applied to the generation mix — every factor cited.
- energy-charts.info (Fraunhofer ISE) The independent source our daily cross-check compares against — and, since September 2026, the fallback for the day-ahead price when ENTSO-E publishes none. Only zones whose response states CC BY 4.0 (Bundesnetzagentur | SMARD.de) are republished; the rest state 'private and internal use only' and are refused, which /status counts as withheld rather than failed.
- Natural Earth Public-domain 50 m zone geometries — the map shapes.
How fresh — and what we never do
Two things make a number trustworthy: knowing how recent it is, and knowing it was never invented.
- Freshness — fresh = the newest slot the source has published (typically ~1 h behind real time, not live); delayed = real data up to 6 h old; unknown = every field nulled and the zone shown grey. We always label which.
- Factor coverage — the share of a zone's generation backed by a committed IPCC factor. Below 85 %, we publish no headline intensity rather than a number we can't stand behind.
- Grey, not guessed — a zone with no published live data stays grey. We never colour it from a neighbour, an average, or a model.
- Completeness guards — when a source publishes a partial slot — a fraction of the real generation, or one missing a must-run baseload like nuclear — we reject it rather than let it distort the mix.
- No dishonest forecast — carbon intensity and trade balance have no honest day-ahead source, so the forecast omits them rather than guessing.
Produced vs consumed carbon intensity
On the carbon-intensity layer a Produced ⇄ Consumed switch changes what the colour means. Produced is the intensity of the electricity generated inside a zone. Consumed is the intensity of the electricity a person there actually uses — which includes imports: a Czech consumer at 18:00 is partly using German wind and Polish coal flowing across the border. Because zones trade both ways, this is a coupled system (Czechia's consumed intensity depends on Germany's, which depends on Czechia's), solved across the whole network by the standard flow-tracing method (Tranberg et al. 2019, "Real-time carbon accounting method for the European electricity markets"). The honesty rule is unchanged: an import from a zone we can't trace (e.g. Great Britain, which isn't on ENTSO-E for us) is excluded and the zone stays grey — never assigned a guessed number.
Why the same price repeats across the map
Switch to the price layer and you'll see large blocks of the map sharing the exact same number — say 155.89 €/MWh across central Europe at once. That isn't a copy bug. Most of Europe runs a single day-ahead market coupling (SDAC): one auction clears all coupled bidding zones together, and wherever there's enough transmission capacity between two zones, they settle at an identical price. Prices diverge only where a border is congested (the link is full) or where a zone clears in a separate coupling — which is why Switzerland, Great Britain and parts of the Nordics routinely show their own price. Each zone's number is still fetched independently from ENTSO-E; they match because the market made them match, not because we copied one.
Checked against an independent source, daily
Trusting our own pipeline isn't enough. A scheduled job each day re-derives two figures — daily renewable share and daily mean price — for every zone, then compares them against energy-charts.info (Fraunhofer ISE), a wholly separate public source. Any divergence beyond tolerance raises an alarm we investigate. It runs from a clean network outside our own infrastructure, so it can't quietly share a failure with the live ingester.
Go deeper
- Live data status — which zones are fresh right now, per source.
- The API — the same data — free and keyless.
- Source code — every line is open.