Wattlas

European electricity, explained.

Open data on how and when the price of power moves across the continent — pre-computed into views you can actually read, rebuilt every day. A working tool you can open right now, not a pitch.

26
views, grouped as five questions
6
bidding zones compared at once
130
offline tests · no network needed
The structure

Not eight tools in a menu — five questions about power

An editorial landing routes you into one of five plain-language questions; each opens a section of views that answer it. Grouped by the question you came to answer, not by how it was built. Every view still compares up to six bidding zones at once.

Pulse view — average price by hour of day
pulse — the duck curve, −€18 midday to €142 evening
Wattlas comparing four bidding zones
zone compare — Germany against France, NL and Austria
01

The Daily Rhythm

When does power move?

Electricity has no single price — it has a price every hour. Five views trace how it swings between cheap and expensive.

Spread view
spread — €96/MWh average daily gap, the signal storage lives on
Negative prices view
negative prices — 468 hours below zero in the last 12 months
Capture Price

German solar earns ~0.55× the average price — worth least exactly when there's most of it.

History

Three years of daily spread, free to roam — zoom a week, fold onto a season, read the trend.

02

What's on the Grid

What's flowing through the wires?

Behind every price is a physical mix of fuels — and how clean, or dirty, each hour really is.

Generation mix view
generation mix — France's flat nuclear against Germany's volatile wind and solar
Carbon intensity view
carbon intensity — 30 gCO₂/kWh on a French hour, 550 on a Polish one
Residual Load

Demand minus wind and solar — the evening gap dispatchable plant and batteries must still cover.

Marginal Fuel

A model, flagged as one: gas sets the price on roughly 77% of days.

03

Geography of Price

Where does power flow — and why do prices split?

One country, one price — until the grid can't carry the power across it. Four countries, four answers to the same congestion problem, on the map.

Germany North-South grid story
germany north–south — ~400 Landkreise mapped, wind stranded from demand
Nordic price zones
nordic zones — the split Germany debates, already live: €26 → €90/MWh
France Nuclear

The centralised mirror: ~63 GW, 57 reactors, who exports and who imports.

UK Regional

Britain keeps one price — and pays Scottish wind ~£2 bn a year to switch off.

Divergence & Curtailment

Price gaps between neighbours, the flows that explain them, and the clean power the grid throws away.

04

When the Grid is Tested

What happens when supply runs tight?

Dunkelflaute story
dunkelflaute — renewables down to ~1.5% of demand, Nov '25

Plus the batteries that live off the daily spread (~6× grid storage since 2021), the adequacy question behind Germany's ~12 GW gas tender, and a sober, sourced replay of the Iberian blackout of 28 April 2025 — asserting no cause of its own.

05

The Bill

What does it cost, and who pays?

Retail wedge view
retail wedge — Germany ~€0.39/kWh, only ~40% of it energy

What a shiftable load — an EV, a heat pump, a battery — saves in the cheapest hours, labelled an upper bound. Industrial prices, honestly bounded to country level. And the € price tag on curtailed wind, labelled an estimate.

Under the hood

Seven open feeds, kept honest

ENTSO-E, NESO, MaStR, SMARD, ODRÉ/RTE, netztransparenz and Eurostat — each with its own auth, units, lag and cadence, reconciled to one canonical shape. The pipeline is the only code that touches the APIs; it writes small JSON the frontend reads directly. A scheduled job reruns it daily at 05:17 UTC. No backend, no database.

Isolation

Each source is its own module; one failure can't break the others.

Fail open

A missing key writes status:"unavailable" and the view shows "awaiting source" — never a fabricated zero.

Landmines documented

The Oct-2025 resolution break, 23/25-hour DST days, zones that aren't regions — coded around, in writing.

Tested offline

130 tests across 20 files — pure metric functions on inline fixtures, no network needed.