A tunnel is an underground passage for a road or similar.
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 found on mountain roads or ways underneath a building, use covered=* in place of tunnel=*.
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 larger tunnels for roads or railways or canals.
How to map
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. It is also good practice to add a layer=-1 tag in most situations to indicate that it runs below features with a layer tag. Some people consider this to be unnecessary however. For metros/subways 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 levels that need to be differentiated.
tunnel=building_passage should not normally have a layer assigned as there is no clear above/bellow relation to the building but a layer may be required when there are several layers of building passages.
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).
Ways that go through a building and have walls to all sides should be tagged with tunnel=building_passage. The building and the way share the same node at the entry and exit points of the building. The way is split at the entry and exit nodes and only the part covered by the building is tagged with tunnel=building_passage. The layer has to be the same as the building, with the above mentioned exception when several tunnels are passing on different levels. So if the building doesn't have a layer tag, the way doesn't need one either.
When building_passage should not be used: It is not meant to be used for indoor mapping. The walls at both sides (and the top) of the tunnel are considered outer walls of the building, which can have entrances that lead into it (This proposal doesn't cover entrances inside building passages). For indoor mapping indoor=yes can be used. It is also not meant for ways that go through something else than a building.
A variant of covered=arcade is tunnel=avalanche_protector and should be used is in case of tunnels alongside mountains. These constructions stand for themself and are not attached to a building. Their purpose is to protect the highway or railway from avalanches and landslides. Use avalanche_protector:left=open or avalanche_protector:right=open to define which side of the way is open ("open" in case of avalanche protectors means, that light and air can enter on that side).
Actually (June 2013) only tunnel=yes seems to be rendered
Mapnik draws tunnels on highways with dotted outlines and a lighter fill color for the road and with curved color transitions on tunnel entrances.
Osmarender (version 4) renders tunnels as dotted outlines with lines for the abutting face.
- Relations/Proposed/Bridges_and_Tunnels - group multiple tunnel elements with a relation