London borough heat map
The same city, shaded sixteen different ways. Every one of the 33 boroughs is filled by how it scores on whichever measure you pick, the strongest shade at the top of the range and the faintest at the bottom, so the shape of London’s inequalities shows up as geography rather than as a column of numbers.
Nothing here is estimated or hand-typed. Every figure is pulled from an official source by a build script: the boundaries and the population from the ONS, the housing, qualifications and car-ownership numbers from Census 2021, house prices from HM Land Registry, life expectancy and deprivation from OHID, and recorded crime from the London Datastore. Each measure names its own source and date below the picker.
The colour tells you which way is up. A measure where more is plainly better (pay, employment, life expectancy) is drawn in green; one where more is plainly worse (deprivation, crime, burglary) in red. Most of the rest stay blue on purpose: a high house price is good news to an owner and bad news to a buyer, and shading where people were born, or whether they own or rent, as good or bad would be an opinion dressed up as a colour. In every case the deeper the shade, the more of it.
Pick a measure, then tap or hover a borough. Tapping opens that borough’s full card: all sixteen measures at once, each with its rank out of 33.
Loading…
Loading the map…
Every borough, ranked
The map’s data as a table, highest first, for the measure selected above. Inner London boroughs are marked; the bar is each borough’s value against the highest in London.
| # | Borough | Value | Relative size |
|---|---|---|---|
| Loading the figures… | |||
What the map keeps showing
Switch between the measures and the same boundary keeps reappearing. Density, car ownership, private renting and median age draw a bullseye: a dense, young, renting, car-free core that fades outward through the suburbs to something closer to the Home Counties at the edge. Home ownership and median age are the same map inverted.
Deprivation, life expectancy and pay draw a different figure, and a more troubling one. It runs roughly north-east to south-west: the poorest and shortest-lived boroughs cluster in the east and the far north-east, the wealthiest and longest-lived in the south-west and the western suburbs. A few years of life expectancy separate one end of a Tube line from the other. That gradient has been visible in this data for decades, and it moves slowly.
Two boroughs will not behave. The City of London is a statistical outlier on nearly every measure, because 15,000 residents share a square mile with several hundred thousand daily workers: its rates are computed against a resident population that barely exists. Westminster distorts for the same reason, most sharply on recorded crime, where the West End’s visitors and its offences are both counted against the people who sleep there. Rates per resident are the honest way to compare boroughs, but they are the wrong tool for the two boroughs that empty out at night.
How it’s built
One self-contained page. MapLibre GL draws the basemap from Ordnance Survey vector tiles (proxied by this site’s server so the API key never reaches the browser), following your device’s light or dark mode, and the borough fills sit above the roads and parks but below the basemap’s own labels so place names stay legible through the shading.
The figures ship as a baked snapshot (heatmap.json) so the map
paints instantly and works offline. A build script
(build.mjs) assembles it, and every number in it is fetched live
from a government API rather than transcribed: administrative boundaries and
land area from the ONS Open Geography Portal (Local Authority
Districts, December 2024, generalised and coastline-clipped); population, median
age, pay, employment and the Census 2021 tables from NOMIS, the
ONS statistics service; average house prices from the HM Land Registry
UK House Price Index; life expectancy and the deprivation score from
OHID Fingertips; and recorded crime from the
Metropolitan Police data published on the GLA’s London
Datastore. Re-running the script refreshes the snapshot; nothing is typed in
by hand.
Boroughs are shaded in equal-count bands rather than equal-width ones: each shade holds four or five boroughs, so the full range of colour is always in use and a single outlier (the City, Westminster, Kensington and Chelsea) cannot flatten the other thirty-two into one indistinguishable block. That makes the map good at showing order and poor at showing distance: two neighbouring shades can be a rounding error apart or a world apart. The table underneath carries the real numbers, and the band edges are printed under the colour scale.
A caveat on the data
Different measures were counted at different times, and the map makes no attempt to hide it. The tenure, qualification, car and country-of-birth figures are from Census 2021, now some years old; deprivation is the 2019 index, older still; life expectancy is a five-year pooled figure; population is a mid-year estimate, not a count. Each measure prints its own period under the picker, and comparing two measures means comparing two dates.
Some figures are missing rather than zero, and the map leaves those boroughs unshaded. The City of London is too small for the pay and employment surveys to report reliably, so the ONS suppresses both, and the Met does not police the City (the City of London Police does), so it is absent from the crime data altogether. Employment and pay come from sample surveys and carry margins of error wide enough to matter in the smaller boroughs, so a one-place difference in those rankings is not a real difference. Recorded crime counts offences reported to and recorded by the police, which is not the same as offences committed. Boundaries are generalised for the web, so the outlines are approximate at the coast and along the river.
Some of the figures in the charts and tables on this page were compiled with the help of AI tools and may contain errors or be out of date. They are shared in good faith for general interest only (not as professional, financial, investment or purchasing advice) and should be checked against the cited primary sources before you rely on them.