About HomesIndex
HomesIndex (often written “Homes Index” or “Home Index”) maps every sold house price recorded by HM Land Registry for England & Wales, geocoded to the exact property rather than the postcode, so you can see what homes really sold for, street by street and address by address. It then uses that record to do something a sold-price archive normally cannot: score the homes that are for sale right now against what comparable properties actually fetched nearby.
What makes this data different
Most public tools show sold prices at postcode level. HomesIndex resolves each sale to its individual property using the Ordnance Survey Unique Property Reference Number (UPRN), so a sale sits on the actual building on the map. Coordinates are address-exact for 97.5% of sales (30,577,188 of 31,370,645, measured by the pipeline on the July 2026 release, re-resolved August 2026), matched to the property's UPRN. The remainder are placed at the postcode centre when an exact match isn't possible. That geocoding is the core of what we do, and why HomesIndex can show a block of flats as distinct properties rather than one dot. The next section explains exactly how it works.
How the geocoding works
Land Registry records a sale as text: a house number, maybe a flat number, a street, a postcode. Text is not a place. To put the sale on a map, that text has to be turned into coordinates, and doing it well is harder than it sounds. Here is the whole method, step by step.
Step 1: every address in Britain already has an ID
Ordnance Survey gives every addressable building in Britain a Unique Property Reference Number, a UPRN, and publishes the exact coordinates of each one as open data. If we can work out which UPRN a sale belongs to, we know exactly where it happened. So the real problem is matching text to a UPRN.
Step 2: energy certificates are the bridge
Nearly every home that has been sold or rented since 2008 has an Energy Performance Certificate, and each certificate carries both the written address and the UPRN. That gives us about 23 million examples of "this address text means that building". We turn those into a lookup table: address in, building out.
Certificates only cover homes that have needed one, so a home that last sold in 1997 and never got a certificate is invisible to that bridge. A second bridge fills the gap: researchers at the University of Glasgow's Urban Big Data Centre matched every recorded sale from 1995 to early 2022 against Ordnance Survey's full address register and published the result as open data. We fold those matches into the same lookup table, and they face exactly the same checks as everything else, including the boundary test below. Between the two bridges, almost every home that ever sold can be named.
Step 3: the same address gets written many ways
The certificate might say "Apartment A, 12 High Street" while Land Registry says "Flat A" at "12" on "High Street". One says "St Johns Road", the other "Saint Johns Road". One says "12A", the other "12 A". A naive text match misses all of these, and they are common. So before matching, both sides are cleaned the same way: abbreviations are spelled out (Rd becomes Road, Apt becomes Apartment), apostrophes and stray punctuation go, "12 A" becomes "12A". Then each address is stored under several spellings at once: the full form, a form with words like Flat and Apartment removed (the letter or number that identifies the flat always stays), and a form with all spaces and dashes removed. A sale is looked up the same way, most exact spelling first. Whichever form matches, it only matches within the sale's own postcode, so "12 High Street" in one town can never borrow coordinates from a 12 High Street somewhere else.
Step 4: when the evidence disagrees, we refuse to guess
Sometimes two different buildings produce exactly the same address text. When that happens, that spelling is thrown out of the lookup entirely, because a match through it would be a coin flip. And sometimes a certificate is simply wrong: it names a UPRN in a different town (the register really does contain a Water Lane in London pointing at a Water Lane in Richmond, 24 km away), or carries a typo'd postcode. To catch these, every matched building is tested against its postcode's real boundary, drawn from open polygon data. A building that sits outside the postcode it claims is rejected, and the rejection is remembered so the same bad claim can never come back in a later rebuild.
Step 5: honest fallbacks, in order
Every sale gets the best answer the evidence supports, and nothing more. If the address matches a verified building, the sale sits on that building: that is 97.5% of all sales. If it doesn't, the sale sits at the centre of its postcode, which is usually within a street or two of the truth, and the popup says so. The 0.1% of records with no usable postcode are counted and excluded rather than drawn somewhere wrong. A wrong rooftop looks precise and misleads; a postcode centre is honest about what we know.
Step 6: the same rules, every month
All of this runs again with each monthly Land Registry release, and the pipeline prints its own audit numbers every time: how many sales matched exactly, how many fell back, how many were rejected by the boundary check. The figures on this page come from those printouts, not from estimates. The same matching engine also powers our EPC Geocoder, where you can run your own address lists through it.
Where the data comes from
- Sold prices: HM Land Registry Price Paid Data: every residential property sale in England & Wales lodged for registration, going back to 1995. Crown copyright, published under the Open Government Licence v3.0.
- Geocoding: Ordnance Survey Open UPRN for property-level coordinates, plus ONS postcode data for the postcode-centre fallback. Want the same address-level geocoding for your own property data? The engine behind HomesIndex powers our EPC Geocoder service: upload a CSV and get UPRN-matched coordinates back.
- Property attributes: the England & Wales Energy Performance Certificate register for floor area, habitable rooms, energy rating and construction age, matched to each address. Bedroom counts for sold homes are derived from these EPC facts, not from listings, so they are size estimates rather than advertised counts. Where a sale has a floor area, HomesIndex also shows its price per square metre: the like-for-like value measure a bare sale price can't give you.
- Local context (popups): crime from police.uk (twelve months of recorded offences per LSOA, divided by Census 2021 population), flood risk from the Environment Agency and Natural Resources Wales extents, schools from the DfE register. Crime is deliberately shown as a banded quintile ("High", "Low") rather than a precise-looking rate: the upstream police data is noisy at street level, and presenting it to three significant figures would be dressing up uncertainty as accuracy.
The questions worth asking any sold-price dataset
Numbers on a map are only as trustworthy as the plumbing behind them, so here are the questions we would put to a tool like this one, with our actual answers, taken from the pipeline's own audit counts on the July 2026 Land Registry release. Every rebuild prints these numbers; none of them is estimated.
How much of the record is ingested?
All of it, row by row, and counted: 31,370,645 transactions stored for England & Wales from the complete Price Paid file. The only exclusions are logged as they happen: entries carrying Scottish postcodes (Scotland keeps a separate register) and the handful of rows whose price field doesn't parse. Nothing is sampled and nothing is quietly dropped: the stored total reconciles against the streamed total on every rebuild.
How are corrections and deletions handled?
HM Land Registry's monthly change file marks every entry as an addition, a change or a deletion, and the pipeline applies all three: additions insert (deduplicated against rows already present), changes rewrite the stored row in place, deletions remove it. The rare operation that cannot be matched unambiguously (typically a correction that rewrote its own identifying fields) is counted, reported, and healed by the next full rebuild from the complete file, so the store can never drift from the published register for long.
Is a "sale" always a market sale?
No, and the register says so. Land Registry categorises each entry: Category A is a standard full-market-value sale, while Category B covers repossessions, buy-to-let and company transfers, and other prices that may not be full market value: 1,774,047 records, 5.7% of the file, and a considerably larger share of recent years. Every median, average, £/m² figure and deal verdict on this site is computed from Category A only. Category B rows aren't hidden: a property's sale history lists them, labelled "Non-market record". They're just never allowed to masquerade as market evidence.
What share of sales could be geocoded, and what happens to the rest?
97.5% (30,577,188) sit on their exact building via UPRN; 2.4% (750,484) fall back to the postcode centre and say so when clicked; 0.1% (42,973) carry no usable postcode at all. That last group is drawn nowhere and, having no postcode, feeds no local statistic. It exists only in the count you just read. Two sources tie a sale to its building. Most sales match through the EPC register's address record. Homes older than the EPC era match through the Price Paid Data to UPRN Lookup from the Urban Big Data Centre at the University of Glasgow, used here under the Open Government Licence. A match from either source only counts once it has passed the boundary check against its own postcode.
How are addresses normalised, and how are flats in one building told apart?
They're deliberately not flattened: Land Registry's own PAON / SAON / street fields are stored verbatim, so "Flat 3, 12 Palatine Road" remains distinct from "12 Palatine Road". A property's sale history is keyed on the full postcode plus those exact fields, never on a fuzzy match. Where fuzzy matching is unavoidable (pairing a listing's photos to its sold record across two sources that write addresses differently), the matcher is strict by rule: "12" never matches "12A", a whole-house record never matches a flat, and "Mill Lane" never matches "Windmill Lane", because showing the wrong property is worse than showing nothing.
What about duplicate-looking records?
Re-applied monthly updates deduplicate against byte-identical rows, so re-running a release can't double-count. Genuine same-day twins (the register does contain a few) are kept and shown, because this site displays the register, not our opinion of it. The one silent failure we've found in our own layer, two different homes that shared a house name within one postcode district being merged into a single history, was fixed by widening the history key to the full postcode, and that class of bug is exactly why the history modal shows each row's address fields.
"No sales here" or "no data here"?
The two are kept distinct. Scotland and Northern Ireland keep separate registers, so homes there are excluded and the site says so rather than showing them as empty. Within England & Wales, the Price Paid file is the complete record of registered sales, so an empty street genuinely means no registered sales in the chosen window. One caveat, printed rather than buried: registration takes weeks, so the newest month or two always fills in on later releases, and every page states the release it was built from.
How we calculate the figures
The headline number on every area, district and sector page is the median sold price: the middle value of that period's recorded sales. We lead with the median rather than the mean because a handful of very expensive sales can pull an average well above what a typical home sold for. Both are shown so you can see the difference. Counts are of completed, registered sales, so recent months fill in as more sales are lodged.
Figures are sold prices from the public record: not valuations, estimates or asking prices. They tell you what buyers actually paid, which is why they're a firmer basis for judging a market than an automated estimate.
Homes for sale, priced against what actually sold in England and Wales
The sold record answers "what did this street go for". The homes-for-sale map answers the question buyers actually ask next: is this one priced fairly? Every listing on it is scored against real recorded sales of comparable homes nearby, and coloured by the verdict: below, in line with, above, or well above the local sold record.
The comparison is like-for-like rather than a blanket area average. A home is matched on postcode sector, built form and bedroom count. A 3-bed semi is judged against 3-bed semis that sold within a few streets, not against every property in the district. (A sold home has no advertised bedroom count, so its size is estimated from its EPC record. A small share of homes end up one size out.) Where the closest match has fewer than 15 sales behind it the comparison widens to the district and then the postcode area, and the popup always says which one produced the figure and how many sales it rests on. Where nothing comparable exists, the home is left unrated rather than given a flattering number.
Asking prices come from estate agents' own published feeds and from agents whose CRM sends us their listings directly, the same feed they send the major portals. Nothing is scraped from another portal. Feeds are re-read every Monday and Thursday, and each run replaces the dataset with what the feeds currently serve, so a home that leaves an agent's feed leaves this map on the next run. Agents can connect a feed here.
Comparing a listing from anywhere
Found something on another portal? The map's Import listings button takes a Rightmove or OnTheMarket link (a single property, or a page of search results) and puts those homes on your map, scored the same way. Imported homes are yours alone: they are never saved, never added to the map anyone else sees, and disappear when you reload. Their score is rebuilt in your browser from nearby sold prices, so it is an estimate rather than the full comparison, and each one says so.
Average prices, mapped
The average prices map shades the whole of England & Wales by median sold price, from postcode areas down through districts and sectors to individual sold homes as you zoom. It carries a time slider back through the record, an inflation adjustment so older prices are shown in today's money, and a colour-blind-safe palette.
Coverage and updates
HomesIndex covers England & Wales (Scotland and Northern Ireland keep separate land registers and aren't included, so homes there cannot be scored). Sold prices are refreshed monthly from HM Land Registry as new sales are registered. Homes for sale are refreshed every Monday and Thursday.
Corrections & contact
Spotted something that looks wrong, or want to use the data? Email homesindexhelp@gmail.com. If you cite a HomesIndex figure, a link back to the relevant page is appreciated.
See homes for sale priced against the sold record →
Browse the local market reports →
Contains HM Land Registry data © Crown copyright and database right 2026. This data is licensed under the Open Government Licence v3.0. Contains Ordnance Survey data © Crown copyright and database right. HomesIndex is an independent tool and is not affiliated with HM Land Registry or Ordnance Survey.