Draft:Foundation/Local Chapters/United States/Pedestrian Working Group/Guide
| PWG Draft Page: Continually open work-in-progress page for proposed changes for the next release. Edits are welcome, after discussion on the corresponding Draft Talk (Guide, Schema) page and/or during PWG meetings. |
| This guide document is still under active construction - consider other Wiki pages to be more authoritative in cases of conflicting information! |
This is a work-in-progress draft of a quick-start guide for pedestrian infrastructure mapping developed by the Pedestrian Working Group.
A work-in-progress draft of a full tagging schema for pedestrian infrastructure mapping is available here.
Questions? Email pedestrian@openstreetmap.us!
Anatomy of a Sidewalk
Our end-goal is mapping the pedestrian network for navigation as it exists in the real world.
Tiers
A tier-based system is used to communicate which features and tags are possible with various resources and necessary for which use cases, as follows, with further details below:
If, for example, you want to map pedestrian infrastructure so that it can be used for basic everyday routing and only have low-quality aerial imagery available, you would include only the features and tags marked with a Bronze Tier symbol.
If you have access to high-quality imagery and want to map pedestrian infrastructure so that it can be used by accessibility-focused routers, you would include all features and tags marked with a Bronze Tier symbol or a
Silver Tier symbol.
Mapping Guidelines
Bronze tier:
The pedestrian network is composed of many different kinds of objects and representing all of this information can get complicated fast. Mapping all of this information can get even more complicated if the sources you have access to in the area do not show enough of what you are trying to map, like if the aerial imagery isn't high enough resolution. Since something is far better than nothing, mapping what you can to the best of your ability is better than not doing so, so if you are new to all of this (including if you have experience mapping other features but not the pedestrian network) or are working on an area with aerial imagery with low enough resolution that mapping with too much detail is impossible without survey or just want the data now this is the perfect place for you. In Bronze tier the goal is to add the bare minimum to have a useful pedestrian network in a way that is doable even if the sources available aren’t the best. I will note though that just because a tag or way starts in silver tier or above doesn’t mean that you cannot add it in Bronze tier your self, for example if you want to add the surface of pedestrian features while you are mapping are area to bronze feel free, there is nothing stopping you; The point of the tiers is the minimum tags required to meet that standard but nothing more or less.
So then, what goes in Bronze tier, well, to be able to successfully get from A to B using separately mapped pedestrian infrastructure you need to know where you can walk, essentially where the different footways are and where you can cross roads. So in bronze tier we map sidewalks, crossings and stair cases because those are the bare minimum needed to properly get around, everything else is just more details past this point. So let's start with sidewalks, what is the bare minimum we need to know about a sidewalk for it to be useful? Well all we really need to know about a sidewalk is that it exists, aka its shape/position since while more information is helpful it is not required to get from one point along the sidewalk to another. So in OSM terms all we need is a centerline way tagged as highway=footway + footway=sidewalk. Since if the quality of the aerial imagery is not good enough further information like surface=* or lit=* can be essentially impossible to determine so we cannot reliably assume we would be able to add more tags with the source requirements for this tier. As a note, it is advisable to also add other paths when you see them, such as the walking path inside of a park.
For crossings to be useful, as with sidewalks, we need to know where they are located, essentially we need a way connecting one sidewalk to another so we know where we are allowed to cross roads. As with sidewalks in OSM terms this means that you need a way connected to sidewalks or other crossings on each end of the crossing (aka you don’t have to add the connector ways between a sidewalk and the road, but the crossing should be connected to the sidewalk or a different crossing way) tagged as highway=footway + footway=crossing and a vertex shared between the road and crossing way at the point where they intersect tagged as highway=crossing. Since bronze tier should be achievable with lower quality imagery while you may not be able to tell exactly what the markings on a crossing are you would usually be able to tell that there is some kind of marking there so should be able to set crossing:markings=yes or no (whether or not a crossing has markings to indicate where you should cross tagged as yes and no, more specific values are added in silver), same with signals, you should be able to set crossing:signals=yes or no (whether or not a crossing has signals tagged as yes or no, more specific values are added in diamond). crossing:markings=* and crossing:signals=* are also really essential information about a crossing so are important to have to any capacity. Below I have put two example images of mapping some sidewalks and crossings to bronze tier:
| Tags | Example Image |
|---|---|
| The sidewalk:
The crossing way: The crossing node: |
| Tags | Example Image |
|---|---|
| The sidewalk:
The crossing way: The crossing node: |
The two examples above are the most common you will see while mapping pedestrian features, or at least some combination of the two.
As mentioned at the beginning of bronze tier when mapping to bronze tier and you come across a staircase you should also map that staircase as a separate way tagged as highway=steps. Below is an example of some steps mapped to bronze tier:
| Tags | Example Image |
|---|---|
| The Stair way: |
Silver Tier:
Because in silver tier it is assumed that you have access to aerial imagery that is of a higher quality and will have some amount of experience mapping pedestrian features you will usually be able to tell where kerb cuts are so crossing ways should be separated from the sidewalk centerline (unless the sidewalk just ends at a road) with a connector in between the crossing way and the sidewalk centerline tagged the same as the sidewalk centerline (though surface may vary and the exact tagging for these has not been fully settled yet). In silver tier sidewalks are tagged as highway=footway + footway=sidewalk + surface=*. In silver tier crossing ways should be mapped from kerb vertex (kerb cut) to kerb vertex, essentially only within a road’s area. As with bronze tier, silver tier ways are tagged as highway=footway + footway=crossing and vertices are tagged as highway=crossing. Since silver tier assumes decent quality aerial imagery and low quality streetside imagery you should be able to tell what the markings on a crossing are so for both crossing ways and vertices you should start to tag crossing:markings=* that are more specific than yes (for cases where the bronze tier tag is yes). In silver tier you tag surface=* on crossing ways and tactile_paving=* on vertices. In silver tier we also start to tag the kerb vertices as barrier=kerb + kerb=** + tactile_paving=**. Below is shown the two examples of intersections from Bronze tier but mapped to silver tier:
| Tags | Example Image |
|---|---|
| The sidewalk:
The crossing way: The crossing node: The kerb vertices: |
| Tags | Example Image |
|---|---|
| The sidewalk:
The crossing way: The crossing node: The kerb vertices: |
In silver tier crossing islands should also be mapped as separate geometry meaning that crossing:island=* should be tagged on crossing ways and vertices as either separate (when the traffic island is mapped separately) and no. The crossing island way should be separated from the crossing way and tagged as highway=footway + footway=traffic_island along with surface=*. The following is an example of bronze tier vs silver tier crossing with a traffic island:
| Tags | Example Image (bronze) | Example Image (silver) |
|---|---|---|
| Crossing way (bronze):
Crossing way (silver): Traffic island (silver): All other tags are the same as previous examples |
For staircases the geometry does not significantly change when moving to silver tier from bronze but you get many more tags to add. The tags added in silver tier to staircases are surface=*, incline=* (indicates the incline of the staircase, in silver we only tag if you are going up or down along the staircase, not percent), ramp=*(just yes and no, indicates whether or not a staircase has a ramp, separate is in gold) and handrail=* (just that the handrail exists on any side, specifying the side is gold tier). Below is an example of what the example from Bronze tier of a staircase looks like on the ground (a photo of it taken at ground level) and how to tag it at silver tier:
| Tags | Example Image |
|---|---|
| the staircase way: |
In silver tier access aisles also get mapped, access aisles do not have to be mapped in bronze tier but do for silver. Along with highway=footway + footway=access_aisle to specify that a way is an access aisle, silver tier also requires surface=* and access_aisle:markings=* (indicates the type of markings present on an access aisle) for silver tier. Below is an example of access aisles being mapped to silver tier:
| Tags | Example Image |
|---|---|
| Access aisle:
As a note, ideally the access aisle way is mapped within the painted markings, since there is a clear connection between the two access aisles they are connected by an unmarked crossing ( |
![]() |
For roads, you should tag which side of road you have added separately mapped sidewalks, or that there isn't any sidewalk on a particular side of a road, tagging that a particular side of a road doesn’t have a sidewalk is actually important because like that others using and analyzing the data in an area can know for certain that there is non and not that it just hasn’t been mapped. To tag the side of a road that has a sidewalk tag it with sidewalk:(left|right|both)=*, as an example in the following image the roads would be tagged as sidewalk:left=no + sidewalk:right=separate (where right is R and left is L):

Elements
Included below are the Bronze Tier and
Silver Tier tags, which represent a good level of detail to aim for while balancing the amount of work required to map pedestrian infrastructure in detail.
For a full listing of tags and their tier classifications, refer to the full schema here.
Sidewalks
Crossings
highway=crossing- Indicate crossing locationtactile_paving=*- Specify tactile paving presence at curb nodestactile_paving=yes- Tactile paving is present at both curbstactile_paving=partial- Tactile paving is present at only one curbtactile_paving=no- Tactile paving is not present at either curb
crossing:markings=*- Specify presence and type of markingscrossing:markings=no- No markingscrossing:markings=yes- Markings present, type unspecifiedcrossing:markings=zebra- Zebra markingscrossing:markings=lines- Lines markingscrossing:markings=*- Any other applicable value
crossing:signals=*- Specify presence and type of signalizationcrossing:signals=no- No signalscrossing:signals=yes- Signals present
crossing:island=*- Presence of pedestrian island
surface=*- Crossing surface material
Curbs
tactile_paving=*- Specify tactile paving presencetactile_paving=yes- Tactile paving is presenttactile_paving=no- Tactile paving is not present
Islands
highway=footway+footway=traffic_island- Indicate traffic island location
Access Aisles
highway=footway+footway=access_aisle- Indicate access aisle locationaccess_aisle:markings=*- Specify presence and type of markingsaccess_aisle:markings=no- No markingsaccess_aisle:markings=yes- Markings present, type unspecifiedaccess_aisle:markings=zebra- Zebra markingsaccess_aisle:markings=ladder:skewed- Skewed ladder markingsaccess_aisle:markings=*- Any other applicable value
surface=*- Access aisle surface material
Roadways
highway=*- Indicate roadway locationsidewalk:side=*(sidewalk:left=*|sidewalk:right=*|sidewalk:both=*)
In-editor Examples


footway=access_aisle way ends where painted markings end, it is valuable here to connect the access aisles with an unmarked crossing to denote this navigable route.

surface=concrete rather than surface=paving_stones where appropriate.



PWG Guide and PWG Schema Releases
| PWG Guide Releases | ||
|---|---|---|
| Latest | Permanent link to latest version: osm.wiki/PWG_Guide | |
| Draft | Permanent link to latest draft: osm.wiki/PWG_Guide_Draft | |
| Compare | Permanent link to compare latest version and draft: osm.wiki/PWG_Guide_Compare | |
| Talk | Permanent link to talk page: osm.wiki/PWG_Guide_Talk | |
| Version | Date | Changelog |
| 1.0.1 | 2026-01-30 | • Fix inclusion of footway tag on crossing nodes |
| 1.0.0 | 2025-11-19 | • Initial release |
| 1.0.0-beta | 2025-05-23 | • Initial pre-release |
| PWG Schema Releases | ||
|---|---|---|
| Latest | Permanent link to latest version: osm.wiki/PWG_Schema | |
| Draft | Permanent link to latest draft: osm.wiki/PWG_Schema_Draft | |
| Compare | Permanent link to compare latest version and draft: osm.wiki/PWG_Schema_Compare | |
| Talk | Permanent link to talk page: osm.wiki/PWG_Schema_Talk | |
| Version | Date | Changelog |
| 1.0.1 | 2026-03-28 | • Fix inclusion of surface and width tags on crossing nodes |
| 1.0.0 | 2025-11-19 | • Initial release |
| 1.0.0-beta | 2025-05-23 | • Initial pre-release |








