|For tagging postal codes of streets and areas.
|Used on these elements
|Status: in use
|Tools for this tag
You can tag ways and areas with postal_code=* to describe the postal code of an area or a street.
Other tagging schemes
- The postal_code=* key has been used on buildings and nodes too, however the Karlsruhe Schema has become more well established (see addr=*). The tag addr:postcode=* should be used in the context of addresses for buildings and nodes.
- For streets with the same postcode on both sides of the way, postal_code=* is still valid and widely used.
- For boundaries of a postcode area, postal_code=* is still valid and widely used, but you can also use boundary=postal_code on a way or on a relation (a relation would also have type=boundary).
- In some regions, postal_code=* is commonly tagged on post offices (amenity=post_office) to indicate the postal codes that the post office serves. For example, a typical post office in the United States has a street address with a ZIP+4 code that is more specific than the signposted ZIP code. The ZIP+4 code goes in addr:postcode=*, while postal_code=* can be more generic. Moreover, some post offices serve multiple ZIP codes but still only have a single street address. Some post offices thus have differing addr:postcode=* and postal_code=* values, but this is not an error.
Postal code systems
( ) = optional
Sources of post code data
In an ideal world a databases of postal codes (and the locations they represent) would be managed by a government organisation, and they would share this freely without charges or restrictive licensing, because of the obvious economic benefits. Sadly this is not the case in most countries, and so we follow the same approach as with all of the other types of geo-data. We generally collect and build the data from scratch without copying from other sources. We also avoid using Google Maps to position things, and avoid copying from any other website/source which does so.
Postcodes from scratch?
Postcodes from scratch? Does this mean knocking on people's doors and asking what their postcode is?
Yes... That's the way we build our map. We survey and discover information on-the-ground. Postcodes are particularly tricky because you can't see them. They have poor verifiability, which in sense means they are not suitable for OpenStreetMap, but they have always been a type of geodata people were interested in releasing for free.
You can also discover postcodes on an individual basis without knocking on doors, by looking out for them on till receipts, restaurant menus. You can even look them up on the official website of the place. There is a slippery slope to watch out for with that. We don't want to systematically copy lots of postcodes from somebody's database.
We can use government or other mapping agency sources where they have taken the sensible step of releasing the data openly, however "use" of such data might be thought about in terms of an import, i.e. converting the data and using it to set postal_code=* tags in an automated way in the OpenStreetMap database. Imports require that we are very sure about the compatibility of the license and various other caveats. Import guidelines must be followed. A good alternative might be to devise ways of combining datasets while keeping them separate. For many end uses this can work well, although it will mean that some OpenStreetMap benefits such as Nominatim search matching will not come to pass.
Free the postcode
There is a separate but related project called Free The Postcode which coordinates such efforts as a more focused database. When you add a postal_code tag to a node in OpenStreetMap, it does not automatically get added to Free The Postcode. Free the postcode has seen less activity and interest in recent times. There was always a UK focus, but in the UK the postcode situation has changed with the release of CodePoint (See Free The Postcode#UK for details) Free the postcode may still be useful and relevant elsewhere though.
These examples show data where mappers have followed the approach of adding this postal_code=* onto every street.