House Prices per Metre² by MSOA in England & Wales

An analysis of government open data, mapped by Huw Diprosev1.0.0

This map shows the average price per m² of houses in each Middle layer Super Output Area (MSOA) in England & Wales — a finer geography than postcode districts, with 6,856 areas shown.

Data is aggregated from LSOA-level records matched to Energy Performance Certificates via UPRN. This tier covers transactions up to January 2022 (~60% of all sales). All prices are adjusted to Mar 2026 pounds using the ONS CPI index.

Loading map data… MSOA boundary file is large, this may take a few seconds.
Median MSOA £/m²
MSOAs
Sales matched
Data range
Prices adjusted to

Most expensive

MSOA £/m²

Least expensive

MSOA £/m²

Download the data

The underlying dataset is available as a CSV file, licensed under the Open Government Licence v3.0. A machine-readable index with row counts and file sizes is available as data.json.

Coverage caveat: This dataset is derived from UPRN tier-1 matches only, covering transactions from January 1995 to January 2022 (~60% of all sales). Post-2022 sales are not included in this MSOA view.

By MSOA

One row per MSOA. 6,856 areas.

Download CSV
Column Type Description
msoa21cd string ONS 2021 MSOA code (e.g. E02000001)
msoa21nm string ONS 2021 MSOA name (e.g. City of London 001)
num_sales integer Number of residential sales matched to an EPC record
total_floor_area float Total floor area of matched properties (m²)
total_price float Total transaction value of matched sales (£)
price_per_sqm integer Nominal price per m² = total_price / total_floor_area (£)
adj_price_per_sqm integer CPI-adjusted price per m², base January 2026 (£), using ONS CPI series D7BT

By LSOA

One row per LSOA. The underlying geography from which MSOA figures are aggregated. Coverage caveat applies: UPRN tier-1 only (~60% of all sales, 1995–Jan 2022).

Download CSV
Column Type Description
LSOA21CD string ONS 2021 LSOA code (e.g. E01000001)
num_sales integer Number of residential sales matched to an EPC record
total_floor_area float Total floor area of matched properties (m²)
total_price float Total transaction value of matched sales (£)
price_per_sqm integer Nominal price per m² = total_price / total_floor_area (£)
adj_price_per_sqm integer CPI-adjusted price per m², base January 2026 (£), using ONS CPI series D7BT

Methodology

Sale prices are taken from HM Land Registry's Price Paid dataset (standard residential sales to individuals, Jan 1995–Mar 2026). Floor area per property is taken from Energy Performance Certificates.

Each sale is matched to its EPC via the Unique Property Reference Number (UPRN) using the UBDC Price Paid–UPRN lookup table, which covers transactions up to January 2022. Post-2022 sales are not included in this MSOA view. The price per m² for each MSOA is the total transaction value of all matched LSOA-level sales divided by their total floor area — not a mean of per-property ratios. MSOAs with fewer than 10 matched sales are excluded.

MSOA boundaries are the December 2021 boundaries for England and Wales, sourced from the ONS Open Geography Portal. LSOA→MSOA lookup is the ONS LSOA21→MSOA21 lookup table.

The map uses the same hybrid colour scale as the postcode district view. The first seven colour bands use quantile breaks, dividing the 6,856 MSOAs into roughly equal groups. The top two bands use fixed thresholds: £5,000/m² and £10,000/m².

Changelog

[1.0.0] — 2026-03-24

First stable release. v1.0.0 marks the point at which this analysis is considered ready for public use and the author commits to semantic versioning from this release onwards. Future patch releases will update data vintages; minor releases will change methodology; major releases will change the output schema or geography.

Output schema change

The district CSV now includes a property_type column. Each postcode district has one ALL row (the previous single row) plus one row per property type: D detached, F flat/maisonette, S semi-detached, T terraced, O other. Consumers relying on one-row-per-district must filter to property_type = ALL.

New outputs

  • price_per_sqm_yearly_postcode_district.csv — annual aggregates per

district, enabling the year-range filter on the web map.

  • price_per_sqm_lsoa.csv — LSOA-level aggregation (promoted from

experimental); used to derive the new MSOA choropleth.

  • price_per_sqm_msoa.csv — MSOA-level aggregation derived from LSOA data;

covers UPRN tier-1 matches only (~60% of sales, 1995–Jan 2022).

New MSOA choropleth

A second map view aggregates price per m² to Middle Super Output Area level, giving finer geographic resolution than postcode districts across England and Wales. Coverage is limited to tier-1 UPRN-matched records.

Matching improvements

Tier 4 — ADDRESS1-only join for named properties

A fourth matching tier recovers rural named properties where PPD has no street field. When paon contains no digits, PPD is keyed on (postcode, normalise_addr(paon)) and matched against EPC (postcode, normalise_addr(ADDRESS1)), ignoring ADDRESS2. Only 1:1 matches on both sides are accepted to limit false positives.

Address normaliser improvements

Three fixes applied to both the Python normaliser and the DuckDB macro:

Fix Gain Issue
Hyphens treated as word separators (CROSS-O-THE-HANDSCROSS O THE HANDS) +2,428 records #114
Article "THE" stripped as whole word (THE OLD RECTORYOLD RECTORY) +4,995 records #113
Compound words canonicalised (FARM HOUSE → FARMHOUSE, etc.) +342 records #115

Gains measured on the March 2026 dataset.

Workaround — E20 remapped to E15

E20 (Queen Elizabeth Olympic Park / East Village, Stratford) was created by Royal Mail after our Geolytix boundary snapshot and has no polygon. All E20 records are now folded into the geographically contiguous E15, recovering 884 previously lost sales.

Summary statistics (2,276 districts)

Metric Value
Districts included 2,276
Total matched sales 16,577,000
Median real adj price £3,058/m²
Most expensive W1S — £35,462/m² (real Jan-2026 £)
Least expensive TS2 — £733/m² (real Jan-2026 £)
Top 5 W1S, WC2A, WC2R, W1B, W1K
Bottom 5 DN31, CF43, BD3, TS1, TS2

---

[0.2.0] — 2026-03-19

Data vintages

Source v0.1.0 v0.2.0
HM Land Registry PPD to Jan 2026 (~22.5M rows) to March 2026 (~29.3M rows)
EPC bulk export per-LA ZIPs, epc.opendatacommunities.org single monolithic CSV, get-energy-performance-data.communities.gov.uk (March 2026)
UBDC PPD→UPRN lookup unchanged — covers to Jan 2022 unchanged
ONS CPI D7BT Jan 1988–Jan 2026 unchanged

The EPC source changed to the new MHCLG GOV.UK One Login API (single 5.7 GB CSV). Four CSV parsing issues were encountered and fixed; see research/epc-csv-data-quality.md.

CPI price deflation — real Jan-2026 £/m²

All sale prices are now inflation-adjusted to January 2026 pounds before aggregation, using ONS CPI All Items monthly series D7BT. The headline column is adj_price_per_sqm; nominal price_per_sqm is retained as a reference.

Match statistics

Tier Count Share
Tier 1 — UPRN exact match 9,255,768 31.6%
Tier 2 — address normalisation 7,321,554 25.0%
Unmatched 12,705,953 43.4%
Total PPD sales 29,283,275

Match rate dropped from 76.9% (v0.1.0) to 56.6% because the PPD gained ~6.8M post-Jan-2022 rows outside the UBDC lookup window. The absolute matched count is broadly unchanged (~16.6M vs ~17.3M).

Summary statistics (2,277 districts)

Metric Value
Districts included 2,277
Total matched sales 16,577,322
Median real adj price £3,058/m²
Most expensive W1S — £35,462/m²
Least expensive TS2 — £733/m²

---

[0.1.0] — 2026-03-19

First versioned release.

Data sources

Source Coverage Licence
HM Land Registry Price Paid Data Standard residential sales, Aug 2007–Jan 2026 OGL v3.0
DLUHC Energy Performance Certificates All domestic lodgements, England & Wales OGL v3.0
UBDC PPD–UPRN lookup Transactions to Jan 2022 Open data, University of Glasgow
GeoLytix postcode district boundaries OGL v3.0

Methodology

Price per m² = Σ(sale_price) / Σ(floor_area_m²) per postcode district. Sales matched to EPCs via UPRN (tier 1), address normalisation (tier 2), then postcode-median floor area fallback (tier 3). Districts with fewer than 10 matched sales excluded.

Summary statistics

Metric Value
Total sales 22,503,694
Matched with floor area ~77%
Districts included 2,279
Median price per m² £1,986
Data range Aug 2007–Jan 2026
Most expensive W1S — £24,184/m²
Least expensive TS2 — £504/m²

Attribution

Price Paid data produced by HM Land Registry © Crown copyright 2026, licensed under the Open Government Licence v3.0. EPC data © Crown copyright DLUHC, licensed under the Open Government Licence v3.0. UBDC PPD–UPRN lookup published as open data by the Urban Big Data Centre, University of Glasgow. Contains Ordnance Survey data © Crown copyright and database right 2026. MSOA boundaries © Office for National Statistics, licensed under the Open Government Licence v3.0. Contains National Statistics data © Crown copyright and database right 2026. Map tiles © CARTO, data © OpenStreetMap contributors.