← back to map

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.

FigurePrimary sourceHow it's derived
Carbon intensity (produced)ENTSO-E A75 + IPCC AR5/AR6Each 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 priceENTSO-E A44The 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.
Renewable shareENTSO-E A75 + EU RED IIShare 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.
DemandENTSO-E A65Realised total electricity consumption in the zone — 15-min granularity, ~60-min publication lag.
Cross-border flowsENTSO-E A11Net physical flow across each border for the last 15-min slot — the arrows on the map.
Great BritainNESO Carbon Intensity APIGB 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 geometryNatural Earth 50mThe 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 wholly independent source our daily cross-check compares against (see below).
  • 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

  • Full methodology — the architecture decisions (ADRs) and the complete IPCC factor table, fuel by fuel.
  • 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.