Download UK Postcodes with Latitude and Longitude
Download a list of UK out code postcodes with their latitude and longitude coordinates.
The UK postal system uses postcodes to help with automating the sorting and delivery of mail. This is made up of a 2-part code, an out code and an in code. As the out code is the most significant part of the system, it can be used to obtain a rough area level break up of the UK. There are approximately 2971 out codes and approximately 1762460 full postcodes (out code + in code).
The uses of these out codes and lat/long values include mapping applications such as:
- Rough distance calculation
- Plot the rough location of a postcode on a map
- Simple postcode validation for input forms
Current List : 2973 Outcode Postcodes
Total Possible : 2971 Outcode Postcodes
Number of missing outcode postcodes : 0
Current List : 1703526 Postcodes
Non Geographic Postcodes
AB99, BT58, CA99, CM92, CM98, CR44, CR90, GIR, IM99, IV99, JE5, M61, ME99, N1C, N81, NR99, NW26, PA80, PE99, RH77, SL60, SO97, SW95, SY99, WD99, WF90
Full UK Postcode Latitude Longitude Download
- SQL fullukpostcodes.zip (45MB zipped, 626MB unzipped)
- CSV postcodes.zip (31MB zipped, 87MB unzipped)
Contains Ordnance Survey data © Crown copyright and database right 2013
Contains Royal Mail data © Royal Mail copyright and database right 2013
Contains National Statistics data © Crown copyright and database right 2013
- MySQL UK post code table with corresponding longitude and latitude
- 16th July 2014 - Added BB12 7BF
- 9th February 2014 - Added S1 4DE
- 9th February 2014 - Updated Full postcode list. 222 duplicates removed
- 9th February 2014 - Updated Outcode data. SQL script is for MSSQL
- 20th Janruary 2014 - Removed 2 rows of incorrect data. Rows 1699835 and 1699836
- 11th September 2013 - Removed Duplicte BD98 And M60
- 1st August 2013 - Added full postcode list CSV and SQL (SQL insert) format with 1703751 rows
- 15th September 2011 - Added E20 (Olympic Park Postcodes)
- 23rd February 2011 - Added AB24, B99, BB94, BD97, BD98, BD98, BD99, BL11, BL78, BN50, BN51, BN52, BN88, BN99, BS80, BS98, CA95, CF30, CF91, CF95, CF99, CH25, CH26, CH27, CH28, CH29, CH30, CH31, CH32, CH33, CH34, CH70, CH88, CH99, CM77, CM99, CR9, CT50, CW98, DE99, DH97, DH98, DH99, DN55, E77, E98, EC1P, EC2P, EC4P, EC50, EH91, EH95, EH99, FY0, G58, G70, G75, G79, G9, G90, GU95, IP98, KY99, L67, L68, L71, L72, L73, L74, L75, LE19, LE21, LE41, LE55, LE87, LE94, LE95, LS88, LS98, LS99, M50, M60, M99, MK77, N1P, NE82, NE83, NE85, NE88, NE92, NE98, NG70, NG80, NG90, NW1W, OL95, PL95, PR0, PR11, S49, S96, S97, S98, S99, SA80, SA99, SE1P, SL95, SN38, SN99, SS22, SS99, ST55, SW99, TR93, UB18, W1A, WA55, WA88, WR78, WR99, YO90, YO91
- 27th June 2009 - Added NR7
- 22nd October 2008 - Added some Isle of Man and Jersey Postcodes. XLS format is no longer provided.
- 24th August 2008 - Added some new postcodes
- 1st July 2008 - Added List Status
- 10th June 2008 - Added SQL, CSV and XLS formats each with 2821 rows
Previous Comments For This Page
Hi all - Many thanks for this. Would anyone know where we could possibly get a free dataset for all the Northern Ireland Postcodes (BT) and their X / Y or Long/ Lat and Northings values?
By Lenvdb on 22/10/2014
I was surprised by the use of a clustered index on the id field. Since all queries on the table will be by postcode, and queries involving multiple postcodes are likely to be adjacent postcodes it makes more sense to have clustered index on postcode. I dropped the supplied indexes and created a clustered unique index on postcode - also gives confidence there are no duplicates.
By d on 21/10/2014
Hi, you can get the data from here [https://www.ordnancesurvey.co.uk/opendatadownload/products.html]. If you require less detail then you could look in to simplifying it. If you need functionality to query your custom data set to meet your custom requirements then it will likely require custom software to be developed.
By Free Map Tools on 11/09/2014
Looking for a data set down to postcode sector level that identifies which places fall into a given sector (or which sector covers a given place)- ie outcode plus first character of incode - so don't need/want to go down to individual postcode level. Do you have anything that would do this?
Julie Montoya - T-SQL is the most common! MySQL is not as popular/common.
By TheMan on 11/08/2014
Wouldn't it have been more sensible to use MySQL, which is what just about everybody else on the entire Internet uses? Or at least supply a sed script to convert it to MySQL .....
By Julie Montoya on 17/07/2014
By Free Map Tools on 15/07/2014
What weirdy SQL dialect is that supposed to be? It made MySQL barf .....
By Julie Montoya on 15/07/2014
Good Job Mate!
By Dileep on 09/07/2014
Fantastically useful resource - thanks very much!
projection ... TBH, we are not sure. It looks like Spherical Mercator but we are not 100%
By Free Map Tools on 30/05/2014
What is the projection used on this? I would like to bring it into a spatial databse but need to be able to get the correct projection to acturatly use this data
Very good site for map
By Guddu yadav on 01/05/2014
Hi Andy, I can see the EC1, EC2 .... postcodes inside the CSV and SQL files.
By Free Map Tools on 21/04/2014
Hi, can't see any EC1, 2, 3, 4 postcodes?
By andy on 17/04/2014
Hi Tony, As far as we are aware, they are all active ... no doubt there are a handful of errors inside, but the majority are active. Out of interest, where are you seeing the [terminated date] mentioned?
By Free Map Tools on 20/03/2014
This is so useful, however the size of the csv file is so large that I can't open it in either Excel or Notepad . Since it looks like > 1/3 of the postcode records have been terminated (if I interpreted the fact that there is a terminated date correctly), would it be possible to have a version of the download that just included active postcodes? That would save download/import times for many people I would imagine.
By Tony Payne on 20/03/2014
Just loading in the data now, I think this will be really useful. For others that are trying to use this on an MS SQL server and finding that it won't load because of the size you might find this helps: sqlcmd -S (server name) -i C:\(file name).sql -o Taken from this thread: http://stackoverflow.com/questions/431913/how-do-you-run-a-300mb-ms-sql-sql-file
Thanks for reporting, these have been removed.
By Free Map Tools on 20/01/2014
Showing the most recent 20 out of 124 comments. Click to see all the comments.
Add your own comment below and let others know what you think: