Every Last Joule · Historical record

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.

Figure 1. Monthly reconstructed curtailment by fuel, January 2020 – March 2026. Fixed set of 29 regions. The shaded envelope is the ±15% published uncertainty band for tier T1a-live-tso.
  • Hydro
  • Solar
  • Wind
  • ±15% tier envelope
Monthly reconstructed curtailment by fuel, 2020-01 to 2026-03Stacked area chart. Across a fixed set of 29 regions, monthly curtailment rises from about 3656 GWh in January 2020 to a series of peaks above 5600 GWh. Wind is the largest band throughout; the solar band grows the fastest. A shaded envelope shows the ±15% tier uncertainty on the total. The same figures are in the annual table below.025005000750010000GWh per month2020202120222023202420252026

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.

Figure 2. Annual totals by fuel, complete calendar years only. Whiskers are the ±15% tier envelope on each year's total.
  • Hydro
  • Solar
  • Wind
Annual reconstructed curtailment by fuel, 2020 to 2025Stacked bar chart of complete calendar years. The total rises from 42.2 TWh in 2020 to 57.9 TWh in 2025. Whiskers show the ±15% tier envelope. Values are tabulated below.0255075100TWh per year42.2202045.1202149.2202250.8202354.9202457.92025
Reconstructed curtailment by fuel, TWh per year. 2026 is omitted: the archive stops at 2026-04-24T11:00:00Z, so it is a part-year and not comparable.
YearWindSolarHydroTotal
202031.934.475.8242.22
202133.805.565.7745.14
202237.327.094.8149.22
202337.298.555.0150.85
202438.7811.134.9954.89
202538.6413.885.3757.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.

  1. Germany1114 GWh peak month
    Solar + Wind53.8 TWh total · +7% 2020–2025
  2. MISO1013 GWh peak month
    Solar + Wind45.6 TWh total · +58% 2020–2025
  3. Iberia982 GWh peak month
    Solar + Wind50.0 TWh total · +30% 2020–2025
  4. ERCOT West/Panhandle718 GWh peak month
    Solar + Wind30.5 TWh total · +72% 2020–2025
  5. SPP490 GWh peak month
    Solar + Wind24.6 TWh total · +36% 2020–2025
  6. Norway NO2 Kristiansand455 GWh peak month
    Hydro + Wind21.7 TWh total · -6% 2020–2025
  7. ERCOT East/Central370 GWh peak month
    Solar + Wind15.7 TWh total · +72% 2020–2025
  8. CAISO348 GWh peak month
    Solar + Wind14.3 TWh total · +59% 2020–2025
  9. Norway NO4 Tromso180 GWh peak month
    Hydro + Wind8.6 TWh total · +7% 2020–2025
  10. PJM138 GWh peak month
    Solar + Wind5.1 TWh total · +141% 2020–2025
  11. Netherlands120 GWh peak month
    Solar + Wind3.6 TWh total · +128% 2020–2025
  12. Portugal110 GWh peak month
    Solar + Wind4.4 TWh total · +108% 2020–2025
  13. Poland101 GWh peak month
    Solar + Wind2.9 TWh total · +468% 2020–2025
  14. Norway NO3 Trondheim100 GWh peak month
    Hydro + Wind5.0 TWh total · +0% 2020–2025
  15. Greece89 GWh peak month
    Solar + Wind3.7 TWh total · +93% 2020–2025
  16. Bonneville Power Administration57 GWh peak month
    Solar + Wind2.5 TWh total · -10% 2020–2025
  17. Hungary30 GWh peak month
    Solar + Wind0.8 TWh total · +287% 2020–2025
  18. NYISO28 GWh peak month
    Wind0.9 TWh total · +60% 2020–2025
  19. Romania28 GWh peak month
    Solar + Wind1.4 TWh total · +14% 2020–2025
  20. Norway NO1 Oslo22 GWh peak month
    Hydro + Wind0.8 TWh total · -50% 2020–2025
  21. ISO New England21 GWh peak month
    Solar + Wind0.8 TWh total · +47% 2020–2025
  22. Sweden South (SE4)20 GWh peak month
    Solar + Wind0.8 TWh total · +92% 2020–2025
  23. Bulgaria20 GWh peak month
    Solar + Wind0.5 TWh total · +195% 2020–2025
  24. Italy Sardinia15 GWh peak month
    Solar + Wind0.6 TWh total · +79% 2020–2025
  25. Baltics14 GWh peak month
    Wind0.3 TWh total · +155% 2020–2025
  26. Czech Republic14 GWh peak month
    Solar + Wind0.4 TWh total · +101% 2020–2025
  27. Sweden North (SE2)13 GWh peak month
    Wind0.5 TWh total · +27% 2020–2025 record
  28. Switzerland12 GWh peak month
    Solar0.3 TWh total · +117% 2020–2025 record
  29. Italy North10 GWh peak month
    Solar + 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.

Figure 3. Regions held in the rolling archive on each day, by confidence tier. Capture timestamps, which is what a capture timestamp can honestly measure.
Regions held in the rolling snapshot archive, by confidence tierStacked area chart over 132 days. Coverage rises from 109 regions on 2026-04-23 to 445 on 2026-09-06, with a step at 2026-08-19 where the appender changed what it was reading.0125250375500regions in the archivecapture change2026-052026-062026-072026-08

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 regimes in curtailment_history.parquet, from its own capture_source column.
Capture sourceSpanBuildsDistinct global totalsRegions per build
committed-snapshot2026-04-23 – 2026-08-1985435270
deployed-build2026-08-19 – 2026-09-069594445

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:

Figure 4. Summed 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.
Summed trailing-30-day total across the snapshot archive — shown as a counter-exampleLine chart with long flat runs and a step at the capture change. Both features are artefacts of how the rows were written rather than changes on any grid, which is why this series is not presented as a trend.013253850TWh / 30 d, summedcapture change2026-052026-062026-072026-08

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.

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.