GB Grid Margin

Methodology & Sources

Every figure traces to a settled or live figure from Elexon, NESO or DUKES. No modelled numbers. This page sets out, figure by figure, the source, the formula in words, and the known limitations.

On this page: Sources at a glance · Denominator · Nameplate · Verdict pair · Capacity trap · Grid warnings rail · Operational warnings · Wind unreliability · Import cost · Year-to-date shares · The history store · Guards · Share cards

Sources at a glance

Every figure on the site, with the feeds it draws on, the formula in words, and the caveats that come with it. The conceptual detail — why each figure is built the way it is — follows in the sections below.

Reliability — the firm share (§01)

Reliability gauge (live)

live

Feeds Elexon FUELINST (live), NESO embedded wind & solar forecast

Basis Firm (reliable) share of national demand = (gas + nuclear + biomass + other firm) ÷ national demand, recomputed live in the browser by the same parity-locked formula as the build. Wind, solar and net interconnector imports are the weather-and-imports (correlated-failure) bucket.

  • A 5-minute snapshot. 'Weather & imports' classifies by what is firm when the continent is also becalmed — not a claim those megawatts are absent right now.

→ full method

Reliability strip (settled, per half-hour)

settled

Feeds Elexon FUELHH (settled), NESO Historic Demand Data (embedded outturn), Sheffield Solar PV_Live (cross-check)

Basis Reliable (firm) share of demand per half-hour, by the same parity-locked formula as the live gauge (engine.grid_engine.compute_verdict), over the rolling 365 settled days. Net-export half-hours clamp to 100% reliable, matching the live dial.

  • The firm fuels are settled Elexon FUELHH; the embedded solar/wind are NESO's modelled outturn estimates, not metered — a mixed metered+estimated layer, disclosed.
  • Live gauge reads NESO's embedded forecast; the carpet reads settled outturn ~3 weeks behind — the same measure, a forecast-vs-settlement seam.

→ full method

Wind (§02)

Wind strip (settled, per half-hour)

settled

Feeds Elexon FUELHH (settled), NESO Historic Demand Data (embedded outturn), DUKES 2025, Table 6.2 (UK nameplate, end-2024)

Basis Wind capacity factor per half-hour = (transmission WIND [Elexon FUELHH] + embedded wind [NESO outturn]) ÷ DUKES total UK wind nameplate (annual-step) — a true load factor, no cross-year artifact.

  • Live gauge reads NESO's embedded forecast; the carpet reads settled outturn ~3 weeks behind — a forecast-vs-settlement seam.

→ full method

Wind drought — whole-record carpet & lulls (wind detail)

settled

Feeds Elexon FUELHH (settled), NESO Historic Demand Data (embedded outturn), DUKES 2025, Table 6.2 (UK nameplate, end-2024)

Basis Daily wind capacity factor = mean power of (transmission WIND [Elexon FUELHH] + embedded wind [NESO outturn]) ÷ DUKES total UK wind nameplate (annual-step), back to 2016. A lull is a run of consecutive days below 10%; severe if it touches below 5%.

  • Combined-basis figures supersede the former transmission-only lower bound; cached share images may show the higher old numbers.

→ full method

Solar (§02)

Solar dial (live)

live

Feeds NESO embedded wind & solar forecast

Basis Live solar capacity factor = NESO embedded solar forecast ÷ NESO embedded-solar capacity (contemporaneous, GB, DC/MWp) — numerator and denominator from the same NESO embedded series.

→ full method

Solar strip (settled, per half-hour)

settled

Feeds NESO Historic Demand Data (embedded outturn)

Basis Solar capacity factor per half-hour = embedded solar (NESO outturn) ÷ NESO embedded-solar capacity (contemporaneous, GB/DC). Night cells are a genuine zero, not a gap.

  • A DUKES solar figure would mismatch (UK not GB, AC-equivalent not DC); the NESO embedded-solar capacity is the methodology-correct denominator.

→ full method

Imports (§03)

Imports — £ cost (import detail page)

settled

Feeds Elexon FUELHH (settled), Elexon system (cash-out) price

Basis Daily GB net import value = Σ over settled half-hours of max(net interconnector inflow, 0) × ½h × GB system sell price (floored at £0). Back to 2016.

  • Net imported energy valued at the GB system (cash-out) price — NOT the contractual cost of the imports, which clear in the day-ahead auction. No licensed price series is used.

→ full method

Grid warnings

OVERCAST lamp (conditional solar)

live

Feeds NESO embedded wind & solar forecast, NESO Historic Demand Data (embedded outturn)

Basis Amber when live solar capacity factor falls below the 25th percentile of comparable half-hours, conditioned on (week-of-year, settlement period) so the diurnal+seasonal cycle does not swamp it. Readout = live CF ÷ that slot's clear-sky (P95) ceiling, 'X% of a clear day'; after dark the lamp is dormant.

  • Live lamp reads NESO's embedded forecast; the distribution is settled outturn — a forecast-vs-settlement seam.

→ full method

SCARCITY NOTICE — operational warnings (live)

live

Feeds Elexon SYSWARN (system warnings)

Basis Red while a NESO margin notice is in force. Two-rung scarcity ladder, most to least severe: EMN (Electricity Margin Notice), CMN (Capacity Market Notice). NESO notices via the Elexon SYSWARN feed; in-force state derived by Grid Margin. The only authoritative lamp.

  • A margin notice means the buffer is thin — the operator asking the market for more with hours of warning — not that the lights are going out.

→ full method

Computed lamps — UNRELIABLE · WIND LULL · HEAVY IMPORTS

live

Feeds Elexon FUELINST (live), NESO embedded wind & solar forecast, DESNZ GB interconnector capacity, DUKES 2025, Table 6.2 (UK nameplate, end-2024)

Basis Each computed lamp goes amber when the live reading leaves the usual half — the P25–P75 box of that panel's own rolling-year distribution — on the concerning side: UNRELIABLE when firm share of demand < P25, WIND LULL when wind capacity factor (wind ÷ DUKES nameplate) < P25, HEAVY IMPORTS when net imports ÷ interconnector capacity > P75. Each active lamp shows the reading most telling for its condition: WIND LULL the live wind capacity factor itself (the same wind ÷ nameplate it trips on); UNRELIABLE the weather-and-imports share of demand; HEAVY IMPORTS the net-import share of supply. The threshold is the box-plot beside the panel.

  • The amber lamps are this site's own reading of live conditions, not an official statement of system state. Only the red SCARCITY NOTICE carries an authoritative NESO source.

→ full method

The denominator — national demand

Every live share divides by national demand, reconstructed from the supply side so the shares sum to 100% by construction:

national demand = positive transmission generation (excl. interconnectors and pumped storage) + net interconnector imports (all INT*, exports net off) + embedded solar (NESO) + embedded wind (NESO)

Pumped-storage pumping is demand, not supply, so it is excluded; interconnector exports net off inside net imports. A build-time guard reconciles this against Elexon's national demand outturn, INDO (+ the same embedded estimate) and fails past a 12% gap — a tripwire for a gross feed failure, not a precision claim. (INDO, not transmission demand ITSDO: ITSDO additionally counts interconnector exports as demand, so it diverges from national demand on an export night.)

Nameplate (installed capacity)

Source: DUKES 2025, Table 6.2 · UK, end-2024 · full installed (not de-rated)

Wind 32.082 GW (onshore 16.166 + offshore 15.916), solar 18.28 GW — 50.4 GW of wind + solar combined. These are UK-wide; the small NI capacity makes a published share mildly conservative, never inflated. Which denominator powers which figure matters: the capacity trap and the wind unreliability carpet divide by this DUKES figure; a live solar capacity-share would instead use NESO's GB, DC-basis figure (~22–23 GW, 2026) — the two bases must never be mixed.

The reliability gauge — how much relies on weather & imports

Source: Elexon FUELINST (5-min) + NESO embedded forecast · live in the browser · cadence: ~5 min

The cut. We group supply not by fuel but by what matters for reliability — whether you can call on it when you need it:

Firm power = gas + nuclear + biomass + hydro & other firm fuels Weather & imports = wind + solar + net interconnector imports

The gauge is a proportional arc — one slice per source, each slice as long as that source's share of the moment. The firm sources are drawn in green; the weather-and-imports sources each keep their own colour — wind blue, solar amber, imports magenta — so you can see at a glance what the grid is actually running on. The verdict itself is carried by a slim inner ring and the needle: they sit green while firm power holds the majority, and arm red — UNRELIABLE the moment the firm share slips below 50%, the point where most of the grid is relying on sources that can go quiet together.

Share of national demand. Each source is shown as a share of national demand — what Britain is consuming right now. Imports appear as a slice when importing, and on an export night the surplus is drawn as a magenta tail beyond the demand mark. The browser recomputes the verdict from the live feed; the build computes it the same way.

Why imports sit with wind and solar, not with firm power. Wind is correlated across ~1,000–2,000 km: a winter blocking high becalms Britain, France, Germany and the Benelux at once. In exactly those hours every connected market is short, prices spike everywhere, and the interconnectors run flat or reverse — imports fail precisely when they are needed. So wind, solar and imports are the correlated-failure bucket: they fall away together. Gas, nuclear and biomass do not share that weather correlation.

Why biomass sits with firm power. Biomass (chiefly Drax) is dispatchable and weather-independent — operationally it behaves like gas, available in the calm. By the only test this gauge applies — can you call on it when the wind dies? — it is firm. The separate case against biomass (its subsidy and its carbon accounting) is a question of cost, not reliability, and lives on the Subsidy Clock; we keep the two arguments in their own lanes.

Firmness, not this instant. The gauge reads a 5-minute snapshot, and on a breezy day imports and wind are real power flowing right now. "Weather & imports" is a statement about what is guaranteed when the continent is also becalmed — not a claim that those megawatts are absent at this moment. We classify by what you can count on in the tail, and we say so.

Interpreting the legend

Beneath the wind, solar and import dials sits a slim horizontal box plot — a one-line picture of how that reading has ranged over the past twelve months, so you can tell at a glance whether the live figure is ordinary or unusual. It is built from every half-hour of the rolling year and reads left (low) to right (high) on the same scale as the dial beside it.

The reliability strip in §01 uses the very same percentiles, coloured rather than drawn: its three background bands split the firm share at the 25th and 75th percentile, so the bottom quarter of half-hours (the least reliable) is red, the usual half amber, and the top quarter green. The line itself is each day’s worst half-hour, and the now caret on the strip’s legend marks where the live reading falls.

The capacity trap

Live dials: wind ÷ DUKES 6.2 UK wind nameplate; solar ÷ NESO embedded-solar capacity · live · Carpets: Elexon FUELHH + NESO embedded outturn ÷ the same source capacity · rolling 365 settled days

Two sources, read side by side. Entry 02 asks how much of Britain’s installed wind and solar is actually working right now — and whether that is a normal day. Wind and solar each get their own block: a live dial showing what the fleet is delivering this minute, beside a settled half-hourly day-grid (a “carpet”) of the past year. We keep them apart rather than blending them into one number, because a bright afternoon should not be allowed to paper over a windless one, or the other way round. Within each block the dial and the carpet divide by the same capacity, so the two always tell the same story.

The live dials. Each dial divides the fleet’s live output by its own installed capacity. Wind is live wind output — transmission wind from Elexon FUELINST plus NESO’s embedded wind forecast — over the DUKES UK wind nameplate (32.1 GW, end-2024). That denominator is mildly conservative: DUKES counts the whole UK while the grid here is Great Britain, so a published share leans low rather than high. Solar is NESO’s embedded solar forecast over NESO’s own embedded-solar capacity (~23.3 GW, GB, DC) — numerator and denominator from the same series, on the same basis, so the two are never mixed. Each dial reads the current output in both MW and as a percentage of its nameplate.

The wind carpet (settled, per half-hour). (Transmission FUELHH WIND + embedded wind outturn) ÷ DUKES total UK wind nameplate (annual-step). Both embedded and transmission wind are in the numerator — the full national output — over the full DUKES installed total. This is a true load factor. The cross-year artifact — the rising apparent CF as the offshore transmission share grew — does not apply here. (NESO’s live embedded-wind capacity is the embedded slice only and is the wrong denominator against a mixed numerator.)

The solar carpet (settled, per half-hour). Embedded solar outturn ÷ NESO embedded-solar capacity (contemporaneous, GB, DC/MWp). Because solar generation is entirely embedded — no transmission-metered solar exists — both numerator and denominator are from the same NESO embedded series on the same scope and basis: the methodology-correct match. A DUKES solar figure would introduce a 4–5 GW mismatch (UK not GB, AC-equivalent not DC, end-2024 not current vintage). Night cells are genuine zero output, not gaps.

Time-of-day axis and the clock change. Each carpet is a grid of columns (one per settled day, newest at the right) and 48 rows (settlement periods SP1–SP48, SP1 = 00:00 local time), so date runs left to right and time of day runs top (00:00) to bottom (24:00). Settlement periods follow the local clock, so the DST change is handled for free: the spring-forward day yields a naturally shorter column of 46 periods; the autumn-back day yields 50 periods, of which SP49 and SP50 fall outside the 48-row grid and are dropped.

The colour scale. Each cell runs from white (no output) to the saturated source colour at full nameplate output — blue for wind, amber for solar. The ramp is interpolated in OKLab, a perceptually-uniform colour space, so an equal step in capacity factor reads as an equal step in perceived density: the deepening colour tracks output evenly, rather than staying pale and then darkening abruptly the way a naive RGB blend does. Interpolating in OKLab also holds each source to a single clean hue, with no detour through purple. A data gap (a half-hour Elexon or NESO never published) is drawn neutral grey, distinct from an honest zero.

The legend and its range markers. Below each carpet, the same ramp appears as a key. A “now” caret marks the current capacity factor — the same value the live dial’s needle points to. Beneath it, a box-plot in the source colour summarises the rolling year’s half-hourly output: a thin whisker spans the middle 9 in 10 (the 10th–90th percentile), a thicker bar spans the usual half (the 25th–75th percentile), and an ink tick marks the average. The numbers underneath label the 9-in-10 ends and the average. The dial behind its needle carries the same bands.

Why the average, not the median. The central marker is the mean capacity factor — the load factor, i.e. the year’s energy divided by nameplate × hours. This is the standard, citable “how much it delivers” figure (UK wind ≈ 34%, solar ≈ 10%). We deliberately do not use the median: solar produces nothing for over half the year because it is dark, so its median half-hour is 0% — a fact about the Earth’s rotation, not the panels. The mean is the fair summary of output; the percentile band beside it shows the variability.

The forecast-vs-settled seam. The live gauge reads NESO’s embedded forecast; the carpets read NESO’s settled outturn estimate for the rolling last 365 settled days. These are sibling products from the same methodology owner — the outturn estimate is the corrected version, the forecast is the forward tick. A small step at the join is expected and disclosed. The carpets lag live by about three weeks.

The GRID WARNINGS rail

Sources: Elexon FUELINST + NESO embedded (live wind CF, solar CF, firm share, net imports) ÷ DUKES nameplate & DESNZ interconnector capacity · Elexon SYSWARN (system warnings, live) · cadence: all lamps live, ~5 min

The dark band under the masthead — GRID WARNINGS — carries five lamps, left to right in page order: UNRELIABLE, WIND LULL, OVERCAST, HEAVY IMPORTS and SCARCITY NOTICE. Two colour states carry distinct meanings:

AMBER — the site's own computed reading of the live grid RED — an official NESO notice from Elexon SYSWARN (the only authoritative signal)

One or two amber lamps are the ordinary state. Britain's grid genuinely relies on weather and imports most of the time — that is the finding, not a fault in the display.

The “usual half” rule. The four computed lamps share one policy and carry no hand-picked threshold. A lamp goes amber when the live reading leaves the usual half — the middle 50% (the 25th–75th percentile box) of that panel's own rolling-year distribution — on the concerning side. The threshold is read live from the box-plot drawn under each panel's carpet, so a lamp can never disagree with the band beside it, and it drifts with the rolling year rather than needing a number defended. The concerning side depends on the metric: for wind, solar and firm share a low reading is the worry (below the 25th percentile); for imports a high reading is (above the 75th).

The five lamps:

Computed vs authoritative. The four amber lamps are this site’s own reading of live conditions — useful context, not an official statement about system state. Only the red SCARCITY NOTICE lamp carries an authoritative source: a NESO notice published on Elexon SYSWARN. Amber lamps with no red notice mean the site sees a condition worth flagging — not that an operator has raised an alarm.

Operational warnings — the scarcity ladder

Source: Elexon SYSWARN — NESO notices; in-force state derived by Grid Margin · live in the browser · cadence: polled, ~5 min

When the system operator is worried about margin, it says so on the record. We surface those notices and nothing else — counted and contextualised, never catastrophised. Two notice types form a scarcity ladder, shown here most to least severe:

EMN — Electricity Margin Notice (more severe) CMN — Capacity Market Notice (less severe)

The SCARCITY NOTICE lamp in the GRID WARNINGS rail lights only while one of these is in force; otherwise it stays dark. When more than one is active, the most severe wins (ties broken by the most recent issue time). The lamp names the notice and its source — a NESO notice, surfaced through the Elexon SYSWARN feed — so you can check it against NESO directly. A notice means the buffer is thin, not that the lights are about to go out; the two are routinely confused, and we are careful not to.

What a margin notice is not. An EMN or CMN is the operator asking the market for more, with hours of warning — the system working as designed, not a blackout in progress. We report the notice and its severity; we do not dress it up.

Wind unreliability — the whole-record carpet & drought spikes

Source: Elexon FUELHH (settled) + NESO embedded wind outturn ÷ DUKES 6.2 nameplate (annual-step) · daily · back to 2016

Formula in words. Each day's wind capacity factor is the mean power of (transmission WIND from Elexon FUELHH + embedded wind outturn from NESO Historic Demand Data) over that day's settled half-hours, divided by the DUKES 6.2 total UK wind nameplate for that year (annual-step). By combining both output streams and dividing by the full installed base this is a true load factor — unlike the retired transmission-only lower bound, it carries no cross-year artifact: the mix of embedded and transmission wind in the numerator has always matched the DUKES total denominator.

The carpet. The whole-record carpet plots every day from 2016 to the present: rows are years (2016 at the top, newest year at the bottom), columns are day-of-year (1 Jan at the left, 31 Dec at the right), calendar-aligned so 29 February has its own column (and is blank in non-leap years). It uses the same colour key as the Entry 02 wind carpet, so the two read consistently: colour runs pale at low output (a near-calm day) and deepens to blue at full output, OKLab-interpolated. The calm spells therefore show as the pale patches — read down a column to compare years, or across a row to follow one year. A partial final year is drawn in its available columns; missing days are left neutral grey.

A lull and its severity. A lull (or drought) is a run of consecutive days on which the daily capacity factor stays below 10%. Severity is measured by how deep it goes: a lull that touches below 5% on at least one day is classed as severe. The drought-spike plot below the carpet shows one vertical spike per lull: spike height encodes the lull's duration in days; spike colour encodes how deep it went (pale red for a shallow lull, deep red for one that fell far below the threshold). Reference lines run across the plot at 3 days, 1 week and 2 weeks, so a glance shows whether a given spell is routine or exceptional.

These figures supersede the former wind stripe and failure counter. Earlier share images and cached cards may show the lower-bound transmission-only figures, which are systematically higher (more days appearing below the threshold because embedded output was invisible). The combined-basis record differs: for instance, the all-time longest sub-10% run is shorter on this basis than the old lower-bound figure suggested. A cached share image may reflect the old number.

Imports — capacity factor (homepage) and cost (detail page)

Sources: Elexon FUELHH net interconnector flow; DESNZ GB interconnector capacity; Elexon system (cash-out) price. Settled, back to 2016.

The homepage panel — relying on the interconnectors. The homepage shows imports the way it shows wind and solar: net imports as a share of interconnector capacity — a capacity factor — not in £. The denominator is GB's operational interconnector capacity, currently 10.3 GW across ten links (IFA, IFA2, ElecLink, BritNed, Nemo Link, North Sea Link, Viking Link, East-West, Greenlink and Moyle), from DESNZ interconnector statistics (the per-link table is in data/interconnectors.json, reconciling to the 10.3 GW headline). For each settled half-hour the denominator is the capacity of the legs reporting that half-hour: settled FUELHH blanks a leg before its link was commissioned, so the capacity factor tracks the fleet exactly as it grew — Greenlink, for example, only counts from its 2025 commissioning, with no commissioning-date table needed. The dial's MW ring runs from 0 to the full fleet; the live needle reads net imports ÷ capacity — the same net-import figure as the verdict gauge and the conditions lamp. Export half-hours floor to zero.

The cost lives on the detail page. The import detail page carries the money story in two views. First, the half-hourly import-spend rate (£/hour) over the last year: each carpet cell, the dial needle and the box-plot are max(net imports, 0) × system price for a settlement period, on a linear scale from £0 to the year's worst half-hourly rate (rounded up to the next £500k) so the busiest half-hour is on-scale. Second, the whole daily record since 2016 (below).

Cost formula in words. Each settlement half-hour's import cost is max(net_import_mw, 0) × 0.5h × system_sell_price, giving a £ figure per period. These are summed to a daily £ value — the carpet cell. net_import_mw is the case-insensitive sum of all interconnector legs (INT*) from Elexon FUELHH, with export half-hours floored to zero: only the hours when Britain is drawing power from abroad count toward cost. This series is settled; the carpet runs back to 2016.

What this figure is — and is not. This is the value of the net imported energy at the GB system (cash-out) price. It is not the contractual cost of buying the imports: interconnector capacity rights and energy clear in the day-ahead auction at N2EX, a price this dataset does not include. The cash-out price is used as the closest settled, reproducible proxy for what that energy was worth on the day — every number on this panel traces to Elexon or NESO; no external licensed price series is used.

The system price. The price is the Elexon settlement system sell price (£/MWh), the GB cash-out / imbalance price. Since Ofgem P305 came into force in 2015, Great Britain has used a single imbalance price for all settlement periods — there is no separate buy and sell price — so this is the system price. The price history store covers 2016-01-01 to the latest settled day (approximately five days behind live). Genuine Elexon non-publications are recorded in a frozen 14-day known-gaps manifest; the validation gate passes on those documented holes but fails on any new incomplete day.

Negative-price floor. GB system prices go negative in oversupply — periods where generators pay to export rather than being paid to generate. An imported half-hour at a negative system price is floored to £0: max(system price, 0). Being paid to take energy is no cost, not a negative cost, and including it would contradict the non-negative guard. The floor adds approximately +0.56% to the all-time total relative to a signed calculation; headline days are unaffected.

The full-record carpet (detail page). The whole daily record — one cell per settled day (columns, oldest at the left) × year (rows, 2016 at the top) — also on the import detail page. Its colour runs a square-root ramp from white (no import cost) to deepest red, with the cap set from the data to the next £10m above the costliest day (currently £100m) so the record day is on-scale, not clipped. The sqrt ramp keeps the everyday range — median £3.2m, 90th percentile ~£10.8m — spread across the colours rather than washed out by the long tail. The cap is a colour clamp only: no datum is truncated. The costliest single day on record, £94.4m on 9 Sep 2021, is marked on the carpet, named in the caption, and listed with the next costliest days below it. Nothing is hidden; the worst days are the most visible.

Settled only; not a market price. Every figure on this panel derives from settled Elexon data — FUELHH interconnector flows and the system sell price — both reproducible from public sources. The day-ahead or N2EX price that interconnectors actually clear at is a licensed dataset and is not used here. The caveat is baked into every caption and source line.

Year-to-date shares — a transmission-system mix, not the verdict

Source: Elexon FUELHH (settled) · annual · transmission-system basis

Formula in words: each year's settled generation by fuel, plus net interconnector flow, as a share of total transmission supply. Pumped-storage round-trip is excluded; the shares sum to 100% by construction.

Read this on its own basis — it is not the live verdict. The settled store is transmission-metered FUELHH only and carries no embedded solar or wind. Embedded solar is netted off national demand and cannot appear in a settled-data share at all, so these year-to-date figures are a transmission-system mix, not the national-demand verdict the gauge shows. The two use different denominators and must never be compared directly. Net interconnectors are a signed net flow: in a net-export year (2022) the import share is negative — it is drawn as a signed bar, never a pie wedge.

The history store

Settled half-hourly FUELHH and demand from Elexon back to the clean-data edge of 2016-01-01 (nothing earlier exists on the modern API). 77 days are genuine Elexon non-publications, recorded in a frozen manifest; we never fabricate the missing half-hours. The live clock is anchored to Elexon's server-stamped snapshot, not the device clock. Full notes and the open source are in the repository.

Build-time guards

Before a figure is published, the build checks it against the guards below; a figure that fails one is not shipped. By stage of the pipeline:

When the live feed is stale or down. The live layer is anchored to Elexon's server-stamped snapshot, not your device clock. If the live fetch fails it falls back to the last good reading (latest.json), clearly labelled as such; once that reading is too old to show as current, the dashboard goes number-free rather than display a stale headline that looks live — a midday solar reading shown at midnight is a wrong number, not an old one. A build older than twelve hours renders as unavailable, with no numbers at all.

Share cards

Source: the same data the dashboard reads

Each share card is built from the same data the dashboard reads — the live snapshot and the settled wind record — so a card carries the same figures the page shows.

Three cards ship. The hero card is evergreen — the question “What’s powering your hospital today?” over a fixed, illustrative gauge, carrying no perishable number, so it is safe to leave cached as the site’s social image. Live balance is the live card: it leads with whichever side is carrying the grid at the moment it is built, and carries the Elexon snapshot timestamp so a shared card can be read in context. Recent lull marks the most recent wind drought of three days or more, stamped with the date it was generated rather than a live time. Each reads only from the two files above.

Cache bust. Each card PNG is SHA-256-hashed; the first ten digits appear as a ?v= token on every image URL. Social platforms cache OG images aggressively; a changed figure changes its hash and forces a re-scrape.

Methodology last reviewed against the shipped figures: 29 June 2026.