Seven years of curtailment
Across the same 29 grid regions, reconstructed curtailment rose from 42.2 TWh in 2020 to 57.9 TWh in 2025, +37% in five years. Nearly all the growth is solar: 4.47 TWh to 13.88 TWh, +211%. Wind grew +21% and hydro spill went -8%.
Read the x-axis before the shape. This page draws two archives that answer different questions, and mixing them would produce a number that looks like a finding and is not one.
The chart below is stamped with observation time - when the energy was curtailed - and buckets into calendar months, which do not overlap. The snapshot archive further down is stamped with capture time, and its headline figure is a trailing 30-day window restated on every build, so consecutive daily rows share 29 of their 30 days. Plotting those rows as if they were independent daily observations would be wrong, so this page does not. It uses that archive for coverage, which is a genuine property of the capture, and shows its summed total only to demonstrate why the total is not a trend.
What grew, and by how much
Every value below covers the same 29 regions in every month, from January 2020 to March 2026. The live dashboard's region set has moved repeatedly — regions added, per-fuel splits, 37 flare-gas regions removed — so a global total drawn from it can rise because coverage grew. Holding the region set constant is what makes the slope below mean something.
T1a-live-tso.- Hydro
- Solar
- Wind
- ±15% tier envelope
The seasonal sawtooth is real and is the reason this is drawn monthly rather than daily: northern-hemisphere wind curtailment peaks in winter, solar in summer, and the two partly cancel in the annual total.
- Hydro
- Solar
- Wind
| Year | Wind | Solar | Hydro | Total |
|---|---|---|---|---|
| 2020 | 31.93 | 4.47 | 5.82 | 42.22 |
| 2021 | 33.80 | 5.56 | 5.77 | 45.14 |
| 2022 | 37.32 | 7.09 | 4.81 | 49.22 |
| 2023 | 37.29 | 8.55 | 5.01 | 50.85 |
| 2024 | 38.78 | 11.13 | 4.99 | 54.89 |
| 2025 | 38.64 | 13.88 | 5.37 | 57.90 |
| 2020–2025 | +21% | +211% | -8% | +37% |
What this series is
Three constraints on every number:
None of it is measured curtailment. All 2,590,195 hourly rows are measured generation from ENTSO-E and EIA multiplied by a published curtailment rate. The rate is a single constant per region and fuel across all seven years - checked at build time, not assumed. So the hourly shape is measured and the level is inferred, and month-to-month movement in these charts is movement in generation under a fixed rate, not evidence that grids became more or less willing to curtail. A doubling of the solar band means solar generation roughly doubled, with curtailment assumed to track it proportionally.
The uncertainty band is the tier's published envelope, not an observed spread. All 29 regions are T1a-live-tso, whose envelope is ±15% of the value (methodology). The regions share one calibration method, so their errors are correlated rather than independent, and summing the bands rather than adding them in quadrature is the conservative reading. A single line here would imply a precision the reconstruction does not have.
The region names are the archive's own vocabulary, and mostly predate the current dataset. 27 of the 29 ids below no longer exist as regions on the dashboard: germany here is the single pre-split bidding zone, where the live dataset now carries four German TSO zones split per fuel. Only the 2 that still resolve carry a link to their record.
Per region
Each panel is scaled to its own peak, which is the only way 29 regions spanning four orders of magnitude are legible together - and is also why the panels must not be compared by eye. Each prints its own peak month for that reason. Sorted by peak.
- Germany1114 GWh peak monthSolar + Wind53.8 TWh total · +7% 2020–2025
- MISO1013 GWh peak monthSolar + Wind45.6 TWh total · +58% 2020–2025
- Iberia982 GWh peak monthSolar + Wind50.0 TWh total · +30% 2020–2025
- ERCOT West/Panhandle718 GWh peak monthSolar + Wind30.5 TWh total · +72% 2020–2025
- SPP490 GWh peak monthSolar + Wind24.6 TWh total · +36% 2020–2025
- Norway NO2 Kristiansand455 GWh peak monthHydro + Wind21.7 TWh total · -6% 2020–2025
- ERCOT East/Central370 GWh peak monthSolar + Wind15.7 TWh total · +72% 2020–2025
- CAISO348 GWh peak monthSolar + Wind14.3 TWh total · +59% 2020–2025
- Norway NO4 Tromso180 GWh peak monthHydro + Wind8.6 TWh total · +7% 2020–2025
- PJM138 GWh peak monthSolar + Wind5.1 TWh total · +141% 2020–2025
- Netherlands120 GWh peak monthSolar + Wind3.6 TWh total · +128% 2020–2025
- Portugal110 GWh peak monthSolar + Wind4.4 TWh total · +108% 2020–2025
- Poland101 GWh peak monthSolar + Wind2.9 TWh total · +468% 2020–2025
- Norway NO3 Trondheim100 GWh peak monthHydro + Wind5.0 TWh total · +0% 2020–2025
- Greece89 GWh peak monthSolar + Wind3.7 TWh total · +93% 2020–2025
- Bonneville Power Administration57 GWh peak monthSolar + Wind2.5 TWh total · -10% 2020–2025
- Hungary30 GWh peak monthSolar + Wind0.8 TWh total · +287% 2020–2025
- NYISO28 GWh peak monthWind0.9 TWh total · +60% 2020–2025
- Romania28 GWh peak monthSolar + Wind1.4 TWh total · +14% 2020–2025
- Norway NO1 Oslo22 GWh peak monthHydro + Wind0.8 TWh total · -50% 2020–2025
- ISO New England21 GWh peak monthSolar + Wind0.8 TWh total · +47% 2020–2025
- Sweden South (SE4)20 GWh peak monthSolar + Wind0.8 TWh total · +92% 2020–2025
- Bulgaria20 GWh peak monthSolar + Wind0.5 TWh total · +195% 2020–2025
- Italy Sardinia15 GWh peak monthSolar + Wind0.6 TWh total · +79% 2020–2025
- Baltics14 GWh peak monthWind0.3 TWh total · +155% 2020–2025
- Czech Republic14 GWh peak monthSolar + Wind0.4 TWh total · +101% 2020–2025
- Sweden North (SE2)13 GWh peak month
- Switzerland12 GWh peak month
- Italy North10 GWh peak monthSolar + Wind0.3 TWh total · +78% 2020–2025
The snapshot archive: coverage, not curtailment
The second archive is the rolling one - 251,661 rows across 949 builds, one row per region per build, appended since 2026-04-23. It is a record of the dashboard, not of the grid, and its most interesting content is its own growth.
Coverage roughly quadrupled, from 109 regions on the first day to 445 on 2026-09-06. The step at 2026-08-19 is not the dataset suddenly finding regions: it is the day the appender stopped re-reading the repository's committed fallback corpus and started reading the deployed dashboard (PR #787).
That change also disqualifies the archive's headline number as a time series:
| Capture source | Span | Builds | Distinct global totals | Regions per build |
|---|---|---|---|---|
committed-snapshot | 2026-04-23 – 2026-08-19 | 854 | 35 | 270 |
deployed-build | 2026-08-19 – 2026-09-06 | 95 | 94 | 445 |
854 builds in the first era produced 35 distinct global totals, because each append re-stamped an unchanged committed snapshot with a fresh timestamp. Drawn as a line, that archive looks like this:
total_twh_30d across the archive, by capture day. Shown as a counter-example. The flat runs are re-stamped snapshots and the step is a coverage change, so neither feature describes anything that happened on a grid.Read left to right it would suggest curtailment jumped by roughly a tenth in a single day. It did not. Coverage went from about 270 regions to about 445, and the newly-archived regions brought their curtailment with them. This is the coverage artefact the constant-region-set discipline in Figure 1 exists to avoid.
Sources and reproduction
Both archives ship with the dataset and carry a DOI - see About.
dataset/SCHEMA.md- full column definitions for both files, including thecapture_sourcediscontinuity.docs/methodology/historical-backfill.md- how the seven-year hourly reconstruction was built, per zone.docs/methodology/uncertainty.md- the tier envelope applied above.scripts/build_history_trends.py- the aggregation behind every figure on this page. It re-checks the constant-rate and all-modelled premises on each run and fails rather than emitting a payload those claims no longer describe.
Figures 1 and 2 aggregate curtailment_backfill.parquet (2,590,195 hourly rows) by calendar month and year. Summing this page's annual totals reproduces per_region_annual.parquet, the rollup behind the paper's Figures 2 and 5, to six decimal places.