From OpenStreetMap Wiki
Jump to navigation Jump to search
Public-images-osm logo.svg tunnel
A tunnel is an underground passage for a road or similar. Edit or translate this description.
Group: Placement
Used on these elements
should not be used on nodesmay be used on waysshould not be used on areasmay be used on relations
Documented values: 4
Useful combination
Status: de facto

tunnel=* is used for roads, railway line, canals etc that run underground (in tunnel).

For some grade separated crossings it may however be debatable if the lower way is in the tunnel or if the upper way is on a bridge=*. In general, if the lower way is long and surround by earth it is almost certainly a tunnel; and if the lower way is short and the upper way is supported on concrete, brick on metal pillars / beams then that is almost certainly a bridge. There are however situations where it is a matter of personal judgement, but it is preferred to either tag the lower way as tunnel or the upper way as a bridge but not both.

For covered passages which are open on one side, often ways underneath a building, use covered=* in place of tunnel=*. One exception are landslide/avalanche protectors on mountain roads which are tagged as tunnel=avalanche_protector.

Where the water from a smaller stream, drain or even cattle crossing passes under a way structure or a building consider using tunnel=culvert in place of the tunnel=yes used for accessible and larger tunnels for roads or railways.
When the waterway=* runs underground for a considerable distance, you can use tunnel=flooded especially when the duct isn't designed to be safely accessible in operation or man_made=pipeline for sections built with tube assemblies.

Power cables (power=cable) or pipelines (man_made=pipeline) buried underground should not be tagged as tunnels. The location of a buried cable may optionally be tagged as location=underground or location=underwater.
However if the cable or pipeline is located inside a self-supporting tunnel it may be tagged as tunnel=yes. Such dedicated utilities tunnels are sometimes found in large cities.

How to map

Showing a tunnel that continues to the junction on the left (wrong) and that is terminated before the junction on the right (correct).
  • split the way in question at the points were the tunnel starts and ends and add the tunnel tag. It is best to avoid having a tunnel continue to a junction that is not in a tunnel by splitting the way prior to the junction.
  • most tunnels should be tagged with layer=-1 or another suitable negative value (exception: tunnel=building_passage). For metros/subways or other very long ways it is often convenient to use layer=-2 to accommodate underground passages for pedestrians between the tunnel and the surface.
  • Where the approach to the tunnel is in a cutting this can be identified with cutting=yes. Note that a layer=* tag is not desired on a cutting or embankment unless there are several layers of objects that need to be differentiated.

tunnel=building_passage should not normally have a layer assigned as there is no clear above/below relation to the building but a layer may be required when there are several layers of building passages.

It may also be useful to add maxheight=* and maxwidth=* if there are publicised restrictions and use access=* if there restrictions on use by certain classes of vehicle or user.

If the tunnel has a name this can be specified using tunnel:name=* although there is still some debate on the best method to include a name of the tunnel as discinct from the road/railway etc that goes through it. lit=* can be included to provide information about any lighting in the tunnel (or not).


The following values are now considered in OpenStreetMap according to classification upside:

LOADING TAG LIST... (If you do not see this tag list, you need to enable Javascript)

This table is auto-generated. See Taginfo/Taglists for a documentation on it.

Additionally, the following values are in use with waterways:

LOADING TAG LIST... (If you do not see this tag list, you need to enable Javascript)

This table is auto-generated. See Taginfo/Taglists for a documentation on it.


tunnel=yes, tunnel=building_passage and covered=yes are rendered by the default OpenStreetMap styling.

See also