How to map one way Cycle & Foot Path where only the cycleway is one way

When adding a (segregated) Cycle & Foot Path in iD, there is the option to toggle the One Way field to Yes, which adds oneway=yes However I think it’s quite common (cycle&foot paths on a sidewalk along a busy road) that only the cycleway is one way, and pedestrians can use the sidewalk in all directions.

  1. How will data users interpret a oneway=yes tag on such a way? Will they apply it to both pedestrian and bicycle routing, or only to bicycle routing?

  2. If it is necessary for correct pedestrian routing to specify that the one way is only for bicycles, how do we tag this? Add cycleway:oneway=yes instead of just oneway=yes? Or maybe oneway=yes + foot:oneway=no?

oneway=yes applies by definition only to vehicles. So there should be no problem.
(Else you could not go against the oneway direction in basic oneway streets, which sees very uncommon.)

Whenever I have highway=footway with bicycle=yes I use oneway=yes and oneway:foot=no
If I have highway=path and foot/bicycle=designated I use it mostly.

One way to to find this out is by finding examples with Overpass and looking at how different routers deal with them. The routing profiles on are easiest to test and compare. Unfortunately, they are not perfect and you are just as likely to find a bug as you are to find a consistent implementation of community consensus.

For example, Valhalla seems to interpret the oneway as applying to both pedestrians and bicycles e.g. here the pedestrian profile will go to great lengths to avoid it. From reading discussions on this forum, it is clear that most mappers consider this a bug, so I reported it when I noticed it.

GraphHopper, in the profile on the websites, is happy with sending pedestrians down both ways but honours the oneway for cyclists.

OSRM seems to ignore the oneway tag completely, both for pedestrians and cyclists.

For a more realistic picture, you would have to look at the apps that people actually use. OsmAnd and Komoot, for example, interpret the tags like you would expect (the same as GraphHopper).

I would assume that it applies to both sides.

I would use oneway:bicycle=yes. (
Not sure if this is the right one. There is also cycleway:SIDE:oneway ( but this is for cycleway=lane/track