Junctions
![]() |
![]() |
Description |
Related to junctions between roads |
Tags |
See Editing Standards and Conventions#Junctions for editing basics.
Road intersections
Simple intersections
A simple intersection is represented by the ways for the two roads sharing a common node.
Dual carriageway intersections
When a single carriageway intersects a dual carriageway (on the same level), the junction is represented by two nodes and a small section of the single carriageway (left image). When two dual carriageways intersect, the junction is represented by four nodes and four small sections (right image).
When all sections of a carriageway have the same attributes, they can be represented by a single OSM-way going through. Once attributes are different, such as having turn:lanes=*
or destination=*
mapped, they become split into individual OSM-ways.
Representing a road area by a linear OSM-way is an abstraction for routability. In analogy, the four nodes and the inner way sections of a dual carriageway junction are an abstraction from the real junction area (grey in the example images), also required for routing. This can however lead to problems for assigning tags to an inner way section (such as q in the pictures) if the continuations of the way in both directions outside the junction (f and h) have different tags.
- The blue segments p and q might be given a
name=*
of either B-road or C-road, or given no name at all. If they are given a name, then routers might use the wrong name in directions. For example, for the route "b-n-q-f" in the second image above, users would expect a direction of "turn left on B-road". But if q is named C-road, then as of this writing (2025-06-14), OsmAnd and GraphHopper say "turn left on C-road", while OSRM appears to have a heuristic to ignore inner way sections and correctly says "turn left on B-road". Leaving q unnamed helps routers know to use the name from f instead. However, this requires representing q as a separate short OSM way rather than part of the same OSM way as f or h, making the OSM data more complex. (The same issue occurs with the route "b-p-e" in the first image above if p is named C-road.) Is there consensus on whether the data complexity is justified to help routers or the routers should implement more complex heuristics instead? Ongoing discussion as of 2025-06-14- Note that it does not apply if B-road and C-road have the same
name=*
- then inner way should also have the same name
- Note that it does not apply if B-road and C-road have the same
- The
destination=*
should be tagged on the outer segments where things are unambiguous. - For assigning the
highway=*
classification tag to an inner section, principles that can be applied include: (1) hiding roads below a given classification should leave a coherent road network and (2) the junction should look good in renderers. These two principles often lead to the same conclusion, simply because higher-class roads are rendered more prominently than lower-class roads. Usually, the conclusion is to use the higher of the two classifications (which can be achieved by letting that OSM way extend into the inner section), but there are exceptions. For example, when a motorway ends at a dual carriageway intersection, extending thehighway=motorway
into the inner sections would violate the principle that a motorway should not have at-grade intersections.
Roundabouts
Roundabouts should be tagged as junction=roundabout
. Small roundabouts where the middle can be traversed by vehicles should be tagged as highway=mini_roundabout
.
Traffic control
Intersections with stop signs should be tagged highway=stop
. Intersections with traffic signals should be tagged highway=traffic_signals
.
External Links
Mapbox recommendations on mapping junctions (archived link, original page now offline)
Waterway crossing
A ford (where automobiles, pedestrians, or horses enter the water to cross a stream or river) should be tagged as ford=*
.
Rail/road level crossings
Rail/road level crossings should be tagged as railway=level_crossing
.
Pedestrian road crossings
- Main article: Crossings
Pedestrian road crossings (UK: zebra crossings; US: crosswalks) should be tagged as highway=crossing
. Pedestrian rail crossings should be tagged railway=crossing
.
Proposals
- highway=junction: Proposal for mapping the extent of junctions and to reduce the number of needed relations