From OpenStreetMap Wiki
Jump to: navigation, search
Available languages
Deutsch English français русский suomi українська
Public-images-osm logo.svg traffic_sign
Zeichen 136-10.svg
Traffic signs give instructions or provide information to road users.
Group: Highway
Used on these elements
may be used on nodes
may be used on ways
may be used on areas
use on relations unspecified
Status: Unspecified

The traffic_sign=* tag is used to map traffic signs such as city-limit signs, speed limit signs, maximum weight signs, or any other traffic signs.


Traffic signs give instructions or provide information to road users. Some traffic signs are only relevant at the place where they're mounted (like e.g. a stop sign - called "point-related" signs from now on), while others affect a section of the road (like e.g. a "no overtaking" sign - called "section-related" signs from now on).

How to map

Traffic signs can be mapped by adding the traffic_sign=* tag to either a single node or a way (or, if applicable, also an area).

Point-related signs can be mapped by tagging a node, while section-related signs can be mapped by tagging a way (or area). You may also map a section-related sign by tagging it as a node if you only know where the section begins (but not where it ends), or if you just want to explicitly specify the physical location of the sign. As an example, speed limit signs are actually often tagged as node although they're section-related signs. Keep in mind that additional tagging is necessary to indicate the end of the section in this case.

The implications of a traffic sign should always be tagged on the concerned section of the road itself as well, if there's an established tag available for that purpose. The most prominent example are again speed limits here: always also add a maxspeed=* and a source:maxspeed=sign tag to the road itself if you're mapping a speed limit sign. See below for which tags should be additionally added to the way itself when mapping traffic signs.

As a node

It is possible to use a node which is part of a way, or to create a separate node beside the road. Both methods are used in practice.

As part of a way

Create a new node within the relevant way next to the sign. This method allows software algorithms which operate on ways (like e.g. routing or turn instruction algorithms) to consider the sign. Although the exact physical position of the sign isn't directly mapped in this case, a renderer should simply assume that the sign is located right next to the road.

You can use traffic_sign:forward=* to specify that this particular sign affects vehicles moving in the same direction as the way, or use traffic_sign:backward=* to specify that the opposite direction is affected. (Note that direction=forward and direction=backward have also been used to describe the affected direction.)

It is important to note that the affected direction can only be unambiguously specified by using nodes which are part of exactly one highway=*. Avoid junction nodes and nodes between two ways as well (where they have been split, but are connected by a node). If in doubt, better simply insert a new node into the way instead of using an existing one.

As a separate node

Create a separate node beside the road at the position of the actual sign. This allows to map the exact physical position of the sign, but it is not reliably possible to deduce the affected road or travel direction in this case. Software algorithms which operate on ways (like e.g. routing or turn instruction algorithms) will thus generally not be able to consider the traffic sign, but only the tags of the way instead.

You can use the direction=* tag to describe the facing orientation of the sign by using an angle or cardinal direction.

On a way or area

When tagged on a way or an area, the traffic_sign=* tag describes the traffic sign(s) that apply to that way or area. The tag is not meant to mark the actual position of the sign in this case, but the affected way or area instead. It should however be assumed that the physical location of the sign is at the beginning and / or the end of the affected section (but note that the affected section may be comprised of multiple ways within OSM).

You may use traffic_sign:forward=* to specify that this particular sign affects vehicles moving in the same direction as the way, or traffic_sign:backward=* to specify that the opposite direction is affected.


It is common to use both human-readable values as well as traffic sign IDs. It is possible to tag multiple traffic signs. Traffic signs which are related to each other (like e.g. a "no entry" sign plus an "except buses" sign) are separated by comma (","), while unrelated traffic signs (like e.g. a speed limit sign plus a "no parking" sign) are separated by semicolon (";").

Human-readable values

Key Value Element Sign Comment Additional tags on the way
traffic_sign city_limit Node Zeichen 310.svg City or village sign.
traffic_sign maxspeed Node Maxspeed.svg Maximum speed sign. Usually tagged as node although they're actually section-related signs. maxspeed=* + source:maxspeed=sign
traffic_sign stop Node Zeichen 206.svg Stop sign. Usually tagged as highway=stop instead. highway=stop (on a node)
traffic_sign give_way Node UK traffic sign 602.svg Give way sign. Usually tagged as highway=give_way instead. highway=give_way (on a node)
traffic_sign overtaking NodeWay Zeichen 276.svg No overtaking sign. overtaking=no
traffic_sign maxwidth NodeWay Zeichen 264.svg Maximum width sign. maxwidth=*
traffic_sign maxheight NodeWay Zeichen 265.svg Maximum height sign. maxheight=*
traffic_sign maxweight NodeWay Zeichen 262.svg Maximum weight sign. maxweight=*

Traffic sign IDs

Signs specific to a particular country should include the appropriate country-specific prefix followed by a ":" and then the sign type.

  • the country prefix should be the two-letter code of the country the sign belongs to
  • traffic signs should be represented by the official id for that particular sign in your country
  • where the traffic sign requires a value, you can supply it after the id using brackets: "[value]"

Lists of the official traffic sign ids

Examples of single values

Belgium Belgian maxspeed zone sign should better be tagged as traffic_sign=BE:F4a


Examples of traffic sign combinations

UK traffic sign 956.svg traffic_sign=UK:956
UK traffic sign 616.svg
UK traffic sign 954.svg
UK traffic sign 523.1.svg traffic_sign=UK:523.1[10]
120px-Zeichen 260.svg.png120px-Zeichen 265.svg.png
120px-Zusatzzeichen 1020-31.svg.png120px-Zeichen 264.svg.png

Editor support


JOSM has an icon for the value city_limit and also renders icons for the keys maxspeed=*, maxweight=*, maxheight=* and some more if tagged together with traffic_sign=*. While for maxspeed the actual value is shown, the other keys use a generic icon, which always shows the same value independent from the actual value specified in the respective tag.

The style Land and Road Attributes currently renders traffic signs for maxspeed and overtaking. For maxspeed the icon shows the actual value specified in the tag.

The following table list some examples together with the actual rendering result in JOSM.

Tags Description Rendering result in JOSM
Speed limit of 50 km/h JOSM Screenshot Maxspeed 50.png
End of speed limit JOSM Screenshot Maxspeed implicit.png
maxspeed=30 mph
Speed zone with 30 mph JOSM Screenshot Maxzone 30mph.png
Overtaking forbidden JOSM Screenshot Overtaking no.png
Overtaking allowed JOSM Screenshot Overtaking yes.png
Overtaking forbidden and a speed limit of 70 km/h JOSM Screenshot Overtaking no Maxspeed 70.png
End of speed limit and overtaking is allowed. JOSM Screenshot Maxspeed implicit Overtaking yes.png


See also