How EPC Geocoder works

The method, the sources, and the licences.

The method

Your file gives us text: a house number, maybe a flat number, a street, a postcode. Text is not a place. Turning it into coordinates well is harder than it sounds, so here is the whole method, step by step.

Step 1: every address in Britain already has an ID

Ordnance Survey gives every addressable location in Great 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 row of your file belongs to, we know exactly where it is. So the real problem is matching text to a UPRN. If your file already has a UPRN column, those rows skip the matching entirely and resolve to exact coordinates, tagged property.

Step 2: the energy certificate registers are the bridge

Nearly every building that has been sold, rented or assessed since 2008 holds an energy certificate, and each certificate carries both the written address and the UPRN. That is not just homes: domestic EPCs cover houses and flats, non-domestic EPCs cover shops, offices and industrial units, and Display Energy Certificates cover public buildings such as schools, hospitals and council offices. Together they give millions of examples of "this address text means that building". We turn those into a lookup, refreshed with each register release: address in, building out.

Certificates only cover buildings 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 for homes: researchers at the University of Glasgow's Urban Big Data Centre matched every recorded property sale from 1995 to early 2022 against Ordnance Survey's full address register and published the result as open data. We fold the addresses the certificate registers cannot name into the same lookup, and they face exactly the same boundary audit as everything else (step 5). Between the two bridges, the index covers current buildings of every kind and the older housing stock the certificates miss.

Step 3: the same address gets written many ways

Your file might say "Apartment A, 12 High Street" while the register says "Flat A" at "12 High Street". One says "St Johns Road", the other "Saint Johns Road". One says "12A", the other "12 A"; one says "2-4", the other "2 to 4". A naive text match misses all of these, and they are common. So both sides go through identical cleaning at match time: abbreviations are spelled out from a 162-entry table (Rd becomes Road, Apt becomes Apartment), ordinals and apostrophes are normalised, "12 A" becomes "12A", ranges collapse to their endpoints, and Saint meets St. Two deliberate exceptions: a bare "St" is never expanded, because it could mean Street or Saint, and "Dr" is never expanded, because it could mean Drive or Doctor. A wrong expansion is worse than none.

Step 4: when the evidence is ambiguous, we refuse to guess

A row is only ever matched within its own postcode, so "12 High Street" in one town can never borrow coordinates from a 12 High Street somewhere else. Within the postcode, the rules are strict by design: "12" never matches "12A", a whole-house record never matches a flat, "Mill Lane" never matches "Windmill Lane", and "Rose Cottage" never matches "Rose Cottage Barn". If two register entries fit your row equally well, that is no match at all, because a wrong rooftop looks precise and misleads, while a postcode centre is honest about what we know. Town and county words your file adds ("... Chorlton, Manchester") are recognised as location padding and ignored rather than allowed to block a match.

Step 5: the register itself is sometimes wrong, so we audit it

A certificate can carry the wrong UPRN — the register really does contain a Water Lane in London pointing at a Water Lane 24 km away in Richmond — or a typo'd postcode. So every (postcode, UPRN) claim in our index is tested against the postcode's real boundary, drawn from open polygon data. A building that sits more than 100 m outside the postcode it claims is thrown out of the index, the rejection is recorded so no rebuild can learn it again, and those addresses resolve at postcode precision instead of a confidently wrong rooftop. The same audit runs behind our sister site HomesIndex, which uses this matching engine on 31 million Land Registry sales; the engine is tested in both places and the two stay in step.

Step 6: honest fallbacks, in order

  1. A usable UPRN column, or an address that matches a verified register entry, returns the building's own coordinate, tagged property.
  2. Otherwise the postcode resolves to its centre point from open ONS data, tagged postcode so you know it is coarser — usually within a street or two of the truth.
  3. If nothing resolves, the row comes back unmatched and is not charged. Unmatched is an answer too: it tells you which rows need a human eye.

Property coordinates are pre-computed and served from our own database, so lookups are fast and don't depend on third parties at request time. Every response says which route produced it (matched_via), how sure the matcher was (confidence), and which precision tier applies, so you can filter on our honesty rather than take our word for it.

Your data

Files in the upload tool are parsed entirely in your browser and are never uploaded to us. Only the identifiers being matched — UPRNs and postcodes — are sent to the API. Exports are generated locally on your machine. If you use the ArcGIS Online import or save features, your data moves directly between your browser and your own ArcGIS account — only when you click, and none of it passes through our servers.

Data sources & attribution

EPC Geocoder is built on open UK public-sector data, used under its licences, which require the following notices:

Property coordinates & UPRNs — Ordnance Survey (OS Open UPRN), Open Government Licence v3.0

Contains OS data © Crown copyright and database right

Energy certificate data — Energy Performance of Buildings Register, Open Government Licence v3.0

Contains public sector information licensed under the Open Government Licence v3.0. The register's UPRN field is OGL-licensed; EPC Geocoder does not redistribute the register's address or postcode text fields.

Pre-EPC-era addresses — Price Paid Data to UPRN Lookup, Open Government Licence v3.0

Urban Big Data Centre. Economic and Social Research Council. Price Paid Data to UPRN Lookup, 2024 [data collection]. University of Glasgow — Urban Big Data Centre.

Sample data — HM Land Registry Price Paid Data, Open Government Licence v3.0

Contains HM Land Registry data © Crown copyright and database right

Postcode centroids — via postcodes.io (ONS Postcode Directory, OS Open Names, NRS)

Contains Ordnance Survey data © Crown copyright and database right
Contains Royal Mail data © Royal Mail copyright and database right
Contains National Statistics data © Crown copyright and database right
Contains NRS data © Crown copyright and database right

What we return — and don't

The API returns UPRNs, coordinates, and a precision tier. It does not return postal address text: the address and postcode text fields in the EPC register carry more restrictive Royal Mail terms than the openly licensed energy and UPRN fields, so they stay out of the product entirely.

Coverage

Property-level matching covers England and Wales, where the energy certificate registers apply — that spans homes, commercial premises such as shops and offices, and public buildings such as schools, hospitals and council offices. Postcode centroids cover England, Wales, and Scotland. Northern Ireland postcodes (BT…) are excluded because the underlying data is licensed for non-commercial use only, and always return unmatched.

Accuracy & independence

Coordinates are derived from third-party open data and provided as-is for informational purposes. Property-level points reflect the source UPRN coordinate; postcode-level points are approximate centres. EPC Geocoder is an independent service with no affiliation to or endorsement by the Ministry of Housing, Communities & Local Government, Ordnance Survey, Royal Mail, the Office for National Statistics, or National Records of Scotland.

Support

Questions, problems, or a lost API key: homesindexhelp@gmail.com.