This tool was built to understand the return period of strong and extreme wind gusts across the UK's current synoptic observation network (METAR-only airfield sites are excluded). A gust of a given strength means very different things at different sites - a 70kt gust is unremarkable at an exposed mountain summit or coastal site but exceptional at a sheltered inland location. Expressing gusts in terms of their return period, rather than their raw speed, gives a like-for-like way to compare how extreme a given gust really was at the site where it occurred, and to put strong gusts at mountain sites into context alongside the rest of the network.
Wind data is MIDAS Open QC'd observations from CEDA, covering every site that was still reporting wind data as of 31 December 2025. Despite CEDA's own quality control, some false readings remain in the archive - the page author has investigated and filtered out several specific oddities found during development (sensor ceilings, stuck instruments, and superseded pre-correction values that MIDAS keeps alongside their corrections rather than overwriting). It's possible further oddities remain undetected; the recent extreme gust tables (see below) are a good way to sanity-check any single site's most extreme recent readings for yourself.
The underlying data is updated no more than annually. MIDAS Open's yearly data typically isn't released until around July of the following year, so this page will typically lag roughly six months behind the current date even when freshly updated.
Extreme Value Theory (EVT) is the branch of statistics concerned specifically with rare, extreme values - the tail of a distribution - rather than its overall average behaviour. An ordinary statistical model fitted to all your data (a normal distribution, say) is usually a poor guide to how often a once-in-50-years event happens, because that event sits far outside the bulk of the data the model was fitted to. EVT instead fits a model only to the extreme observations themselves, and provides a mathematically justified way to extrapolate a little beyond the range actually observed - e.g. estimating a 50-year return level from 40 years of data.
There are two classical approaches. Block maxima takes the single highest value in each block of time (e.g. the highest gust each year) and fits a Generalized Extreme Value (GEV) distribution to that series of maxima. Peaks-over-threshold (POT) instead takes every value that exceeds some high threshold, and fits a Generalized Pareto Distribution (GPD) to the amount by which each of those exceedances clears the threshold. This page uses POT, for reasons explained below.
A GPD fit has two parameters:
Alongside these is the threshold itself - the gust speed above which a reading counts as an exceedance and is used to fit the model. Everything below the threshold is ignored entirely; only the extremes and how far they exceed the threshold inform the fit.
Illustrative example (synthetic data, not a real station): the dashed line is the threshold. Only the marked points count as exceedances. A storm whose peak spans more than one day, or two storms close together in time, get merged into a single event (declustering) - see below.
POT was chosen over block-maxima annual-GEV for two reasons. First, it makes use of every exceedance, not just the single worst day of the year - which allows return periods to be estimated down to monthly, not just annual, resolution. Second, it allows the data to be split by season (summer vs winter) while still leaving enough exceedances in each half of the year to fit a sensible model - an annual-maxima approach would only give one data point per year per season, nowhere near enough to fit anything reliably.
The threshold used for each site is that site's own 95th percentile of daily maximum gust - i.e. a 1-in-20-day event, calculated separately for every station. This adapts automatically to each site's own wind climate (a mountain summit and a sheltered valley get very different threshold speeds, both meaningfully 'extreme' for that location). On average, the 95th percentile captures the strongest ~18 days per year at a site - close to the typical frequency of Strong Wind National Severe Weather Warning Service (NSWWS) warnings, which was a deliberate consideration in choosing this percentile.
A single storm can produce exceedances on several consecutive (or near-consecutive) days - these aren't independent events in a statistical sense, and treating them as separate extremes would overstate how often 'new' extreme events really occur. Declustering merges exceedances that occur close together in time into a single event, keeping only the strongest gust from each merged cluster.
This page uses a minimum gap of 1 calm day between two exceedances for them to count as independent - i.e. only exceedances with zero calm days between them (including a single storm's peak straddling midnight UTC) get merged. This is a deliberately light touch. A wider gap (2+ calm days) would merge more events together, which is more defensible for high, rare thresholds where each 'storm' genuinely dominates a multi-day spell - but at the lower, more frequent thresholds used here, a wide gap risks merging genuinely separate storms (a classic Atlantic 'storm train' pattern) into one, understating how often strong wind events really occur. The 1-day choice accepts a small amount of risk of splitting one storm into two counted events, in exchange for not incorrectly merging distinct weather systems.
Below each site's plot, a small table lists - for each curve shown - the record length behind it, the threshold used, the number of independent exceedances the fit is based on, and the fitted scale and shape parameters. These numbers matter for judging how much to trust a given curve: a site with a short record or few exceedances has a much less stable estimate than one with decades of data and hundreds of exceedances, even if both curves look equally smooth on the page. A missing summer or winter curve means that season didn't have enough exceedances to fit reliably at all.
Illustrative example (invented numbers, not a real station):
| Curve | Record | Threshold (kt) | Exceedances | Scale (sigma) | Shape (xi) |
|---|---|---|---|---|---|
| Annual | 1957 to 2024 | 42.0 | 187 | 7.412 | 0.058 |
| Summer (Apr-Sep) | 1957 to 2024 | 42.0 | 64 | 5.203 | -0.021 |
| Winter (Oct-Mar) | 1957 to 2024 | 42.0 | 123 | 8.977 | 0.114 |
This table is a quick way to find recent real-world analogues for a given gust strength at a site - useful, for example, when trying to recall or communicate how a currently-forecast gust (or an NSWWS warning threshold) compares to what has actually happened recently.
For the chosen gust-strength band, it shows the 10 most recent days on which a gust in that band occurred, ordered strongest to weakest within that list (not strictly by date). One consequence worth knowing: if a band has occurred more than 10 times in the full record, there may well be stronger examples further back in history that aren't shown here - this table prioritises recency, then ranks only among the 10 most recent, rather than showing the all-time strongest 10.
The map has two modes, toggled in the sidebar:
The season selector (Annual / Summer / Winter) applies to whichever map mode is active. Click any station marker to load its detail plot, stats table, and recent extreme gust table below the map.
Example (live data): return period for a 40kt gust, Annual.
The detail plot shows return level against return period (log scale) for the clicked station. Use the checkboxes in the sidebar to add or remove the Annual, Summer, and Winter curves - each with its own shaded 95% confidence interval (only available for return periods of 1 year or more; extRemes doesn't support confidence intervals below that).
Click anywhere on the plot to place a crosshair marking the gust speed and return period at that point - click again to remove it. With more than one curve shown, the crosshair follows a single priority curve rather than trying to track all of them at once: Annual first, then Winter, then Summer, in that order (whichever of those is currently visible). A 'Download plot (PNG)' button above the plot saves the current view, including any marked point, as an image file named after the station.
This is a non-operational site. Despite using the QC'd data available from the UK Met Office, analysis suggests some erroneous values remain present in the dataset - the author has manually found and filtered out numerous such values. Please treat all information shown as for guidance only, and refer to the Met Office's official channels for definitive information.
Please feel free to pass on any feedback and suggestions to nick.silkstone@gmail.com .