|The key turn can be used to specify the direction in which a way or a lane will lead.|
|Used on these elements|
|Tools for this tag|
The turn=* key can be used to specify the indicated direction in which a way or a lane will lead for turning or merging. It is used on the way or ways:
- from the first indication via road markings, signposts or similar indications (including traffic being guided by solid lines into a particular turn, e.g. "turn pockets")
- to the junction or the completion of merge.
|At intersections where turn=* and turn:lanes=* keys are used, legal turning restrictions are expected to be correctly specified to allow navigation programs to calculate driver lane assistance properly. These turning restrictions are explained in the restriction relation article.|
The following example shows a motorway with two links.
|lanes=3 (lanes=1 on ramp roads)|
- When turns apply similarly to all lanes in the same direction (or when there's a single lane per direction)
- Without a ":forward" or ":backward" or ":both_ways" direction suffix, the turn=* applies to both directions, or to the forward direction of oneway=yes highways (the same direction as the OSM way is drawn), or the backward direction of oneway=-1 highways (the reverse direction as the OSM way is drawn). You usually don't need to append such direction suffix to most oneway highways, unless the other direction applies to specific vehicles allowed to use the highway in the opposite direction (e.g. for some bus service lanes or cycleways, possibly on the same shared single lane, usually with a priority or with traffic control devices to alternate the direction when needed for these vehicles, or with special warning signals).
- To specify different turn indications for each lane when there are multiple lanes in the same direction (see below)
- In most frequent cases these tags are used to specify turn directions for separate lanes, but on bidirectional highways with separate single lane per direction, you can just separate the forward and backward directions. If you use the ":lanes" suffix, the number of values specified separated by vertical lines (
|) must match the number of lanes according to their direction.
In addition to the individual values listed below, you may also indicate multiple directions by separating them in any order with a semicolon (
;). If you specify multiple values any one of separate lanes, the lanes order must be preserved and must still be separated by vertical lines (so a lanes tag whose value is given as turn:lanes=a1;a2|b1;b2 specifies values for two lanes, not three, each lane having two values, and is equivalent to turn:lanes=a2;a1|b2;b1 but not to turn:lanes=a1;b2;a2|b1).
|Value||Description||Road marking example||Signpost example|
|left||left turn (only)|
|slight_left||slight left turn (only)|
|sharp_left||sharp left turn (only)|
|through||going straight through (only)|
|right||right turn (only)|
|slight_right||slight right turn (only)|
|sharp_right||sharp right turn (only)|
|left;through / through;left||left turn & through (only) (the variant of used values is to be discussed, see table of some distribution examples here: distribution)|
|right;through / through;right||through & right turn (only) (the variant of used values is to be discussed, see table of some distribution examples here: distribution)|
|merge_to_left||the traffic of this lane has to merge with the traffic of the lane to the left of it (only)|
|merge_to_right||the traffic of this lane has to merge with the traffic of the lane to the right of it (only)|
|none||there are no turn indications on this lane
This value could be skipped for a shorter format, so
Turning indications per lane
Usually the turning indications of a road differ from lane to lane. To specify those indications for every lane, the
:lanes suffix is used. For details about the
:lanes suffix in general, see Lanes.
- The key changes to turn:lanes=*
- View the road in the direction of the osm-way.
- Add the lane-values to the value, starting with the leftmost lane and ending with the rightmost. Separate each lane-value with a | (vertical bar)
If you want to describe only the lanes of one direction of the road, use either turn:lanes:forward=* or turn:lanes:backward=*. The key turn:lanes:forward=* describes only the turning indications on the lanes in the same direction as the osm-way. The key turn:lanes:backward=* describes only the turning indications on the lanes in the opposite direction as the osm-way; doing so view the road in the opposite direction of the osm-way for this.
Example for a one-way
There are three lanes on a one-way, and the leftmost lane will turn left, the rightmost lane will turn right and the lane in the middle will go straight through the next junction.
Example for a road with both directions
There are two lanes on the road in each direction. Those lanes running in the same direction as the osm-way are considered to be "forward"; the others "backward". The left lane of the forward direction will turn left and the right lane will go straight through and also turns right. The left lane of the backward direction will go straight through, the right lane will turn right and also continue straight through.
Special turn rules for specific vehicle types
In some cases some vehicles - typically buses or all psv vehicles or bicycle will have a special rules.
- TurnLanes-tagging plugin - graphical tag editor for uni and bidirectional turnlanes
Renderers and data consumers
- OsmAnd supports turn:lanes to show lane recommendations in navigation mode.
- Magic Earth navigation supports turn:lanes.
- OSM2World uses turn:lanes to render 3d roads with painted road markings.
- OSM Lane visualizer
Quality assurance tests
- Lanes for the description of the
- Forward & backward, left & right for describing the direction of the highway and how to determine this in the Potlatch 2 editor.
- destination:lanes=* for describing the name of the city the street is heading to.
- The proposal for the lanes suffix
- Legal turning restrictions using the restriction relation
- Lane_assist - best practices for lane assistant using turn=* and destination=*