|Total number of traffic lanes available for motorised traffic.|
|Used on these elements|
|Tools for this tag|
Use the lanes=* key to tag how many full-width traffic lanes there are on a highway. To tag individual lanes of a road, see the the article about the :lanes-extension. For tagging cycle lanes see cycleway=*.
The lanes=* key should be used to specify the total number of traffic lanes a road has which are available to motorised traffic wider than a motor cycle.
The following lanes should be included:
- General purpose traffic lanes suitable for vehicles wider than a motorbike.
- Bus lanes, that are reserved for public service vehicles (PSV), for example buses and taxis. Additionally to the total number of lanes, consider to tag the number of lanes for PSV with lanes:psv=*, lanes:bus=* and lanes:taxi=*.
- High-occupancy vehicle lanes (sometimes also called carpool lanes, commuter lanes, express lanes, transit lanes). In analogy with the transport modes from the key access=* they could be tagged using lanes:hov=*.
- Other lanes such as spitsstrooken in the Netherlands or temporäre Standstreifen in Austria, Germany and Switzerland which are available to traffic at certain restricted times, for example during the rush hour.
- Longer slip-roads, for example on motorways and other fast major roads. Turning lanes for minor roads are not normally included. See turn=* for further details about tagging turning lanes.
And the following lanes should be excluded:
- Minor slip roads without a deceleration/acceleration lane, i.e. the main road is wider only because of the intersecting road.
- Parking lanes. Consider using parking:lane=* to provide further information.
- Bicycle lanes. Use the tag cycleway=lane for those.
- Emergency shoulder lanes. See shoulder proposal for further details.
If the number of lanes changes it is necessary to split the OSM way. This should be done as soon as:
- a new lane has reached its full width, or
- a lane starts to disappear (usually a merge with another lane)
Remark for data consumers
Many ways have not yet been tagged with the total number of lanes at all points, but only with the number of through lanes of a longer section. Therefore, data consumers can mostly treat the lanes tag as a minimum rather than an exact number.
Lanes in different directions
If the lanes on a two way road are not distributed evenly between the driving directions, the keys lanes:forward=* and lanes:backward=* can be used in addition to the lanes tag. The key lanes:forward=* hereby refers to lanes which direction is equal to the direction of the OSM way, and lanes:backward=* to the opposite direction.
For lanes, which allow traffic in both directions like e.g. passing and center turn lanes, there currently exists only the proposed suffix :both_ways which would allow the key
See below for some examples of the usage of those keys.
Lanes reserved for specific vehicles
The number of lanes which are reserved for specific types of vehicles can be tagged by suffixing the key lanes with the transport mode from the key access=*, e.g. lanes:bus=1 for a single lane reserved for buses. If it is necessary to specify the direction of those lanes, add the suffix
:backward like in the previous section, i.e. lanes:taxi:forward=1 refers to single lane reserved for taxis in the same direction as the OSM way.
Note: These lane counts can only be used for lanes, that are reserved for a specific type of vehicle and not for lanes that some vehicles are restricted to. If, for example, heavy-good vehicles are restricted to one lane, it is not possible to tag this with
lanes:hgv=1, because this would be a completely different meaning than e.g. lanes:psv=1, which specifies the number of lanes, which are reserved for public service vehicles. Restrictions for vehicles can be tagged using the suffix
hgv:lanes=no|no|yes would restrict heavy-good vehicles to the rightmost lane.
Restrictions that only apply at certain times and days
For lanes that are restricted for parts of the day only, use the additional lanes conditions tag to indicate when the conditions apply. For example: lanes:bus:conditional=* or lanes:psv:conditional=*. See Conditional restrictions for more details.
There exist roads, which are two-way roads but so narrow, that vehicles must slow down to pass each other. Besides lanes=* it is strongly recommend in such a case to tag also the width of the carriageway using width=* (Note: do not mistake this with
maxwidth). If the width varies a lot, the minimum width of the carriageway should be specified. If it is not possible or reasonable to determine the exact width, use an estimation and tag additionally source:width=estimated, e.g. as follows:
lanes=2 width=4 source:width=estimated
Note: Some people prefer to tag narrow two-way roads with
lanes=1.5. See the discussion on tagging. This tagging might not be processed correctly by data consumers. Also see the section Open Issues for this.
|lanes=2||A residential road with two lanes. Consider additional tagging with parking:lane=*.|
Each direction individually
|A dual 2-lane highway represented by two ways (each with oneway=yes).|
|A narrow two-way road with an estimated width of four metres.|
|lanes=1||A road with one lane. The passing place should be tagged using highway=passing_place on a node.|
| A road with three lanes, where the middle lane is a center turn lane. Using the proposed suffix |
Assuming the OSM way runs from left to right
|A road with five lanes, whereas three lanes run in forward direction, i.e. in the same direction as the OSM way. The turning lanes should be tagged using turn=* on the way.|
lanes:bus:conditional=1 @ (Mo-Fr 07:00-19:00)
|A road with three lanes where the rightmost lane is dedicated to buses at the given time. The merging of the leftmost lane should be tagged with the key turn=*. See the article Conditional restrictions for an detailed explanation of the :conditional suffix.|
If for a two way road only the total lane count is tagged and this number is even, it is assumed that the lanes are allocated evenly to both driving directions.
If no lane count is specified at all, a lane count might be assumed as follows:
|Tag(s)|| Assumed lane-count
| Assumed lane-count
|2||1||If the actual number of lanes is equal to the given assumption, the lane count is usually not tagged.|
|1||1||If the actual number of lanes is equal to the given assumption, the lane count is usually not tagged.|
|These should usually be mapped as two separate ways||2 or more||The actual number of lanes should always be tagged. However the given assumptions might be helpful for data consumers.|
- The number of emergency lanes/shoulders can not be specified right now, but there exists a proposal for those.
- For lanes running in both directions there currently exists only the proposed suffix :both_ways.
- Some people use
lanes=1.5on narrow, two-way roads. This is currently under discussion.
Displaying the number of lanes
- To view the number of lanes in JOSM, its routes plugin with the following layer in routes.xml can be used:
<layer name="lanes"> <route color="#FF00FF"> <pattern> (((lanes=10 | lanes=9 | lanes=8 | lanes=7) -oneway=yes) | ((lanes=6 | lanes=5 | lanes=4) oneway=yes)) </pattern> </route> <route color="#FF0000"> <pattern> ((lanes=6 -oneway=yes) | (lanes=3 oneway=yes)) </pattern> </route> <route color="#FF3F00"> <pattern> (lanes=5 -oneway=yes) </pattern> </route> <route color="#FF7F00"> <pattern> ((lanes=4 -oneway=yes) | (lanes=2 oneway=yes)) </pattern> </route> <route color="#FFBF00"> <pattern> (lanes=3 -oneway=yes) </pattern> </route> <route color="#FFFF00"> <pattern> (((lanes=2 | lanes=1) -oneway=yes) | (lanes=1 oneway=yes)) </pattern> </route> </layer>
- width=* for tagging the width of the carriageway
- source:width=* for specifying the source of the width
- access=* for transport modes and additional access restrictions
- parking:lane=* for parking lanes
- turn=* for turning lanes
- highway=passing_place for passing places
- ITO Maps for verification: Highway lanes - major roads
- Tagging of individual lanes and their properties
- Proposal for turnlanes relation to describe complex geometry of lanes, supported by JOSM "turnlanes" plugin
- Proposal for lane tagging system using different delimiters
- Proposal for tagging the number of tracks of railways
- Proposal for the suffix :both_ways
- Proposal for shoulders
- Discussion on tagging
- Discussion on tagging, before the cleanup of this article in April 2012