BETA — measurements and names under active refinement. Seen a sign, a gate, or a better name? Submit an update no account needed · photos welcome via GitHub

← all climbs

How to read these numbers

Why every maximum states a distance

The gradient of a road depends on the distance you measure it over. The same hill can honestly be 32% over 2 m, 29% over 5 m and 25% over 100 m — all three at once. A “maximum gradient” without a distance is unfalsifiable, which is why signs, cycling databases and GPS platforms so often disagree: they are answering different questions. Every value here is a window maximum: the steepest stretch of exactly that plan-distance anywhere on the climb.

Why 2 m and 3 m are “diagnostic”

A window gradient is computed from two terrain samples, so elevation noise propagates as σ ≈ √2 × σelev / window. The source surveys quote ±15 cm RMSE absolute vertical accuracy; what a short window differences is the relative error between two nearby cells, which is smaller because systematic components (datum, sensor calibration, strip adjustment) are largely shared between neighbours — we use roughly ±10 cm per sample as a conservative local figure. With that, the raster-noise uncertainty alone is:

Window2 m3 m 5 m10 m25 m 50 m100 m
1σ noise±7.1 pp ±4.7 pp±2.8 pp ±1.4 pp±0.6 pp ±0.3 pp±0.14 pp

Two caveats on that table. It assumes the endpoint errors are independent; bilinear interpolation and a shared LiDAR point cloud correlate nearby samples, which damps random noise but means correlated errors (canopy, road benches, embankments) are not covered — so read it as a floor for random noise, not a total error budget. And at 2 m the noise is as large as the differences being claimed, with the systematic errors worst there too: a metre of centreline placement error moves the line onto road camber or verge, and interpolation smooths features shorter than about two raster cells. There is also a physical point — 2 m is only around two bicycle wheelbases (a wheelbase is roughly 1 m), so a 2 m maximum is a ramp the bike momentarily spans, not a sustained pitch anyone rides.

We publish 2 m and 3 m values anyway, greyed and labelled diagnostic, because that is where headline claims live: gradient signs, platform “max grade” figures and record adjudications typically match the 2–10 m scale. Diagnostic windows exist to interpret those claims. They are never used in rankings. For the same reason, windows of 10 m and below are displayed as whole percentages — at ±1.4 pp or more of noise, a decimal place would be faux precision. Stored OCL documents keep full precision.

Quality interventions

Three tiers, in increasing force — raw data is never modified:

the surface model sits well above the terrain along this window (tree canopy, walls, buildings), so the bare-ground model there is built from fewer laser returns: the value stands but is less certain — rankings and ladders mark it with ≈.
excluded the window crossed ground where the terrain model does not represent the road — a physical discontinuity, a mapped bridge/tunnel, or dense plantation whose cross-sections show no road bench at all (the surveyed “ground” there is canopy): the maximum shown is the steepest clean stretch and the displaced raw reading is noted.
needs review the final numbers still trip plausibility checks and await human scrutiny.

Measurement confidence — the A/B/C/D/U letters

Every climb carries a single letter summarising how much trust to place in its numbers. It is deliberately not called a “grade” or a “category” — in cycling both of those words mean the gradient itself. The letter says nothing about how steep the hill is; it describes the evidence:

High (A) — 1 m LiDAR, standard windows clean: no canopy flags, no re-sited maxima, nothing unresolved.
Good (B) — sound but with minor caveats: a ≤2 m source, or 1 m data where standard windows needed intervention (canopy ≈ flags, re-sited maxima).
Limited (C) — a 2–5 m source, or standard windows that could not be cleanly placed after artifact exclusion.
Low (D) — coarse fallback data; short-window maxima suppressed.
Needs confirmation (U) — the numbers trip our own plausibility checks and await human review — or your local knowledge: treat as provisional.

The letters are what the machine-readable OCL documents carry (compact and stable); these pages show the words. Only High, Good and Needs confirmation occur in the current dataset — Limited and Low exist for future regions with coarser elevation data.

Rankings on the front page include confidence A/B only; U climbs are listed separately as provisional discoveries. Two things deliberately do not affect the letter: extent questions (“should the climb start earlier?” — they concern the climb’s definition, not the measurement), and ≈ flags on the 2–3 m diagnostic rows — those windows are never headline values, so a climb can honestly show ≈ there and still carry high confidence in the numbers that matter.

What “Matches” means

The Matches column records external evidence matched to OUR measured object — lists that include it, and documentation physically on the road. Matching is best-effort and ongoing; the measurement never depends on it:

Listed — the climb appears on an external list we record (books, championship venues, race routes), cited by numbered footnote. Membership facts only: we never copy a list’s own measurements.
sign: 32% (2025) — a physical gradient sign documented on the road, with the year of the observation. Signs get repainted (one of our climbs went 25% → 32% between observations), so the date is part of the fact. Where the sign is known through OpenStreetMap’s record of it rather than a direct observation, the entry says “via OSM” — strong evidence, but not a photographed sign.
tag: 25% (2026) — an OpenStreetMap incline value or mapper estimate, dated by the map snapshot we read it from. Weaker evidence than a sign: usually right, but some tags are impressions rather than sign readings — our measurements test them either way.
— not yet matched against documented climbs. The survey measures every road meeting its criteria from mapping and LiDAR data alone; matching those measurements against books, race records and lists is a separate, ongoing, best-effort layer — an unmatched climb may be famous locally. The matching is also something anyone can do with our open data, and reports of known names are the quickest way a climb gets matched.

Seen a sign we don’t show, or one that has changed? Submit an update (no account needed; photos welcome via the GitHub option there) — on-the-ground observations outrank everything here.

What these numbers are not

They are terrain-model measurements along the mapped road centreline — not asphalt surveys. The programme distinguishes three levels of confidence, in increasing strength:

LiDAR measured — every climb here: a transparent algorithm applied to professionally flown, quality-controlled national elevation data, with the uncertainties above.
Field checked — an on-the-ground observation corroborates the picture: a sign, a rider’s report, a spot check. Valuable anomaly detection, but a point observation cannot validate a windowed average.
Survey validated — a survey-grade elevation profile of the road itself (levelling or RTK at metre intervals) confirms the ladder. This is planned for a small set of deliberately varied test roads — clean terrain, tree canopy, walls and buildings, extreme gradient — because validating the method’s behaviour there validates it everywhere.

No climb currently claims the survey-validated tier; until one does, treat short-window values as estimates with the uncertainties above.