There are several ways and many tags available to add information about destinations and destination signs to OSM. This is aiming to be a description of all tags and 'best practices'.
I tried to keep all information as general as possible. In case of personal opinion, I put it in boxes like this.
Available Tagging Methods
There are three commonly used ways to enter details from destination signs
- destination=* , destination:*=* These tags can be used on highways to indicate their destination. Various subkeys describe details. This is the most common method and the only one covered on this wiki page.
- Relation type=destination_sign Destination signs can be added as relation. This allows to identify the location of the sign as well as the precise way it points to. This relation allows to add most information, e.g. given travel times and distances can be added easily. It is less common than 1. because editing relations is more work.
- direction_*=* A third, not well documented option are tags like direction_north, direction_southwest:3. These tags are only mentioned as a side note in the German page on guideposts: DE:Tag:information=guidepost
I usually stick to method 1 for any type of road markings. When it comes to hiking trails, I prefer to use method 2 to be able to add estimated duration and distance. Method 3 is useful to quickly add information, but lacks a bit of clarity.
Here is a comprehensive list of all tags, detailed descriptions can usually be found on the linked pages. Usage numbers are approximate as of 02/2020.
|destination||550,000||Key:destination||This is the main destination tag and holds all texts, names of cities, or other destinations. Do not put descriptions of the sign here, e.g. "Police", unless this is actually written on the sign.|
|destination:ref||250,000||Proposal||The number of a road given on the sign. This is usually a road, starting within few hundred meters after the way tagged like this - if there are several kilometers in between, have a look at destination:ref:to.|
|destination:int_ref||10,000||Proposal||The international reference number for the highway, e.g. an European highway 'E 12'.|
|destination:country||4,000||Proposal||Destinations in other countries are often marked with a abbreviation of the country name. Usually this is the license plate code of the country - if in doubt, copy from the sign.|
|destination:symbol||41,000||Proposal||Lists symbols shown on the sign, e.g. a stadium or an industrial zone. See the proposal for a list of common symbols.|
|destination:ref:to||19,000||Proposal||In some cases, a number of a road is mentioned that can be reached after a longer distance (in the US marked with 'to', but also e.g. in Germany as announcement of motorways). If there is symbol, name or colour associated with this entry on the sign, use one of the following keys. All the keys with a ':to' form a list of entries, separated from the ones without ':to' - E.g. if a symbol belongs to a 'destination:to', it has to be tagged as 'destination:symbol:to', not as 'destination:symbol'.|
|destination:to||7,000||Proposal||The text associated with a ':to' tag|
|destination:street:to||2,200||Proposal||The text associated with a ':to' tag|
|destination:symbol:to||2,000||Proposal||The symbol associated with a ':to' tag|
|destination:colour:to||400||Proposal||The colour associated with a ':to' tag|
|destination:colour||20,000||This is the background color of the text/symbol/ref. It should only be tagged if it is different from the default. E.g. in a country where all references to motorways are green, there is no need to tag this as it can be computed from the ref or symbol.|
|5000||Used to describe colours of individual parts of the sign. These should only be used if the colour can not be calculated from common rules.|
|destination:lang:XX||5,000||Proposal||If names are given in two languages, these can be tagged with :lang:XX, where XX is the usual language code.|
|used seldomly||These are combinations of languages with other subkeys. Used few hundred times, but should be valid.|
|destination:street||62,000||Proposal||This is used primarily in the US, when a name of a road is mentioned as destination, but can be found in other countries too.|
|destination:arrow||800||Wiki||A rather new concept of additional information: If destinations are tagged on a per-lane basis in front of an intersection and one lane leads in different directions (e.g. left and through), this tag can be used to mark which destination belongs to which direction of travel. Values are the same as in the turn=* key.|
|destination:distance||700||undocumented||Used to add the distance given on the sign. This information should only be added in special cases. In general, the distance to the destination can be extracted from OSM data and does not need to be tagged.|
|destination:network||7,000||undocumented||Australia only. Used to indicate the network a road belongs to.|
|destination:via||1,000||undocumented||Italy only. Used on Relation:destination_sign to indicate a 'via' of a signposted destination.|
|33,000||DE:Wiki||These tags are used with Method 3 only - to indicate destinations given on a information=guidepost.|
|100,000||Wiki||These tags are used with Method 2 only, to describe the colours used on a Relation:destination_sign.|
Method 1 - 'destination' keys on ways
:forward, :backward and :lanes
All destination - Tags can be combined with suffixes as needed:
- If a way is not a oneway road, destination tags only apply to one direction - that means, always add :forward or :backward to any destination tag.
- If only one lane of a road leads to the destination (e.g. a turn lane in front of an intersection), use the :lanes suffix.
- In rare circumstances, even the :conditional suffix can make sense: If a certain route is available only at given times, e.g. a mountain pass that is closed in winter and destination signs leading there are removed.
- If a destination is only posted for a certain type of vehicle (hgv or bicycle are common), one could use destination:hgv:..., but this is used very rarely and not yet supported by any tool.
Examples: destination:forward, destination:ref:lanes:forward or, in general terms:
These suffixes are not mentioned in the description of tags below - all of them can and should be extended by suffixes.
Where to tag?
There are two places where destinations can be tagged on roads:
- On the way leaving an intersection / splitting of ways. This is the classical way how destination tags are used and the most simple way.
- On the way in front of an intersection. Here, the destination needs to be added to a specific lane (e.g. the exit lane of a motorway) using the :lanes suffix. This makes it more complicated, but also has the advantage of tagging a precisely defined lane with the information, possibly helping routers to display better advices.
In case of simple intersections, possibly somewhere in the countryside, I prefer the simple tagging of the destination on the way after the intersection. This saves a lot of work, and still has enough information to display during navigation.
In case of more complex intersections where it might not be obvious which lane to take, I prefer the more complex tagging on lanes in front of the intersection.
It is a known problem that many routing and navigation apps are not able to display destination:lanes tags yet. To assist these, one can combine both tagging schemes and add the destination in front of and behind the intersection.
Handling many entries
Many destination signs do not show a single destination, but several. These can be added as a list, separated by ';'. In general, the order should be similar to the one on signs, for example from top to bottom.
How to mark to which entry a symbol belongs to?
Imagine a sign that has four destinations, the third one is marked with a symbol. The destinations clearly are a semicolon separated list with four entries. Now we can use the same four entries long list in the destination:symbol tag, leave it mostly empty and just add the symbol in the appropriate place:
destination = A;B;Company;C destination:symbol = ;;industrial;
The same scheme applies for other tags like :colour or :arrow. This way of tagging is fully backwards compatible with mappers and software not using it: Empty entries in the list should not hurt in 'older' software and only the additional information given by them is lost.
I believe that this type of tagging is versatile enough to cover most use cases. Clearly, there are exceptions, but to cover those one would need a much more complex tagging that should be avoided. I suggest to have the lists of "normal" destination tags and those with a ":to" separated.
If e.g. colour is the same for all entries, do I have to put it several times?
No, this is not necessary.
destination = A;B;C destination:colour = blue;blue;blue #All entries explicitly marked as being blue destination:colour = blue #Just one entry while destination has 3 - applies to all entries destination:colour = blue;; #3 entries, two are empty - just the first one is blue
When using destination:lanes, how to avoid repeating entries?
Example: There is a four lane road with three through lanes (to A,B,C) and one lane to Z. When using destination:lanes, each lane needs to be tagged:
destination:lanes = A;B;C|A;B;C|A;B;C|Z
This can get long,annoying and possibly too much for OSMs' 255 character limit. There is a simpler way:
destination = A;B;C destination:lanes = |||Z
As with other keys and the :lanes extension, the destination can be set for the turn lane only, while the through lanes inherit their destination from the generic destination tag.
Method 2 - Relations
Please refer to the Wiki page Relation:destination_sign.
Method 3 - direction_* Keys on nodes
A very simple method of tagging - add a node tagged as tourism=information and information=guidepost and add one of the eight available tags with cardinal directions, e.g. direction_north=* with the destinations given for this direction.
The more detailed example renderings below were made with OsmLaneVisualizer that can draw lanes as well as destination signs: http://osm.mueschelsoft.de/lanes/render.pl?relref=A%20661&start=1&country=de
All different schemes in use can be explored using the destination sign map: https://osm.mueschelsoft.de/destinationsign/
Example 1: Intersection Landgraben in Herzberg
A German destination sign and an example rendering based on OSM tagging as described below. Tagging is done on the three lane highway directly behind the signpost:
destination:lanes=Nordhausen;Braunlage;Bad Sachsa;Bad Lauterberg;Papierfabriken|Nordhausen;Braunlage;Bad Sachsa;Bad Lauterberg;Papierfabriken|Göttingen;Duderstadt;Pöhlde
destination:ref:lanes=B 27;B 243|B 27;B 243|B 27
The symbol for left turns belongs to the fifth entry on the sign - so we add four ';' to move it to the right position. The two white symbols for right turns do not belong to any of the text entries, so they are moved to fourth and fifth position:
The entry for the motorway to Kassel is a typical case of a destination:to - you can reach the motorway after some kilometers on B 27 which starts right at the intersection. The colour blue is the default for german motorways, so it does not need to be tagged.
Example 3: Herentals (Belgium)
Please note that the background of this sign is different to the one shown in other examples. This is not tagged implicitly nor derived from any of the entries on the sign. It simply is the default background / style for traffic signs in Belgium and can be chosen based on the location of the sign.