Does the oneway=* attribute on a main road way also apply to a separately mapped, parallel cycleway or not?


Small debate I’m having with another contributor for which we couldn’t find a previous consensus, so we’re asking for the community point of view on this.

Let’s say you have a street mapped with two way, a main one, and on its left side a separately mapped cycleway:

  • the main one (for example highway=residential) has all vehicle traffic going oneway (so tagged oneway=yes). To reflect the separately mapped cycleway, a tag cycleway:left=separate is added
  • on the cycleway (highway=cycleway) that is on the left side, one can cycle at least in the direction opposite to the one of the main way (so either oneway=no or oneway=yes but with an opposite direction vs the main way)

Question: should the main way be tagged oneway:bicycle=no?

Arguments pro:

  • data consumers that are interested in less level of detail know still the cycleway situation without doing a spatial fuzzy search for nearby highway=cycleway (otherwise there would be no reason for separate, we could just put cycleway=no)

Arguments against:

  • having a separate cycleway with a flow going in the opposite direction doesn’t make the main/larger/central/cars way two-ways for bicycles (agree that there should be a way to summarise detailed street mapping into a single big way, but don’t think this should be done this way)

This can lead to a broader debate: should access restrictions refer to always streets as a whole or to individual OSM ways?

Thanks for your inputs on this!

1 Like

No, because you also have bicycle=use_sidepath, which means bicycles aren’t allowed to ride on the carriageway. oneway:bicycle=no means that bicycles are allowed to ride in both directions of the carriageway, which would contradict each other.

When you map cycle ways as separate ways, the only thing about bicycles that goes on the carriageway is bicycle:<direction>=use_sidepath.

Update: everyone please ignore this brainfart of mine.

There was no reference to bicycle=use_sidepath in the original question. For me it depends on whether cyclists are allowed to use the main carriageway as well. That can vary from country to country.


@RobJN Let’s assume that cyclists are not allowed on the roadway because it is a oneway and nothing to the contrary is signed for the street. Cyclists can only go in contra-flow of the street using the bike path.

To express the starter question in tags:


highway = residential
oneway = yes
cycleway:left = track
cycleway:left:oneway = -1
bicycle:oneway = no

is modified so that the bike path is mapped separately (cycleway:left=separate), should bicycle:oneway=no be removed from the road, too?

Sorry, I must have had a brainfart. Even in Germany, my answer would be invalid :laughing:

Anyway, let me take another stab at answering the question:
Putting oneway:bicycle=no on the highway=residential that is oneway=yes means that bicycles are allowed to use the that OSM way in both directions. If you map the cycleway separately, you have to remove this tag. But @_Mathieu came to the same conclusion already:

If bicycles are only allowed to go in both directions on the cycleway, then cycleway:left:oneway=no / cycleway:left:oneway=-1 would probably be the tag to keep. Certainly not bicycle:oneway=no, because this would allow routing over the highway=residential.

So the interesting problem is whether to keep the cycleway:left:oneway=*

None of the tagging on this highway=residential has any effect on the highway=cycleway. But I can see the point why it could be interesting for some data consumers to know the direction of that separately tagged cycleway is reversed/both directions. So in theory, you could put cycleway:left:oneway=no / =-1 along with cycleway:left=separate on the highway=residential. The only problem I see with this is the duplication of tags. Should this ever change, you will have to change it on both ways. Other than that, I certainly wouldn’t remove such an additional tagging. The bicycle:oneway=no, I would remove, because it’s technically wrong.

So in short: Remove the bicycle:oneway=no, but if you want to, keep the cycleway:left:oneway=no / =-1

This post was proudly checked for brainfarts 3 times.


Depends on the signage, local laws and the reason why the road was originally marked as oneway:bicycle=no. Any oneway with a separate contraflow cycleway in an area where cycling against oneways is generally forbidden very likely won’t have an explicitly signposted exception for bicycles anyway, so the only reason why it would be tagged as oneway:bicycle=no is if the cycleway is not mapped separately and is combined with the road.
In a case like this, the oneway:bicycle=no tag could be removed from the main road when the separate cycleway is added because it only existed in the first place because of the (incomplete) mapping.

However, this is not valid if

  • local laws generally allow cycling against oneways unless explicitly forbidden (unsure if this exists)
  • cyclists aren’t required to use the separate cycleway and could also use the main road (explicit or implied bicycle=optional_sidepath)

Since this question originally came up because of StreetComplete, I am strongly against removing/discarding oneway:bicycle=no in a (semi) automated way.

1 Like

I would not expect Way: ‪Armii Krajowej‬ (‪297817277‬) | OpenStreetMap to be marked as oneway:bicycle=no just because its associated cycleway/footway also traffic in both directions.

The same for Way: ‪Śląska‬ (‪294972662‬) | OpenStreetMap (though I added dual_carriageway:bicycle=yes to mark that this pair of oneway bicycle routes forms two-way road for bicycles)

In general, I would not expect it to be possible to parse bicycle routing network based solely on tags on car roads without processing cycleways and footways with allowing cycling.

1 Like

in cases of oneway road allowing traffic in both direction on the main carriageway AND having separately mapped cycleway it would require creating note in SC (and anyway, is it existing anywhere?)

5 posts were split to a new topic: When does StreetComplete remove oneway:bicycle=yes?

Please continue the SC specific bits of the discussion in the above linked thread, I’ll move any more recent posting that concern SC there once things have calmed down.

Tags on a way apply to the way object itself and not any other sidepaths that would somehow have to be inferred by data consumers. I.e. this:

Substantial discussion is already here and this question only came up because of SC, so I think it’s appropriate.

Anyway, speaking as someone who’s had to fix several cycleways recently because someone using StreetComplete removed the oneway:bicycle=no tag, please make doubly sure that whatever SC ends up doing doesn’t lead to more (unintentional) breakage.

(removed as discussion this post referred to was moved to a different topic)

Anyway, regarding the topic, it seems that the notion that oneway:bicycle or for that matter any other tag related to access restrictions may be applicable to “the whole road including separately mapped cycleway” is not advocated by anyone.
Even though interest in this topic was limited so far, I will document in the wiki that such properties always refer to the OSM way and not any broader interpretation. Will post the link to the changes here.

Er - not really. Someone asked a question here (not related to StreetComplete per se) and someone else replied to that, and also linked somewhere else (the StreetComplete github) where a similar discussion was happening about how things should be tagged. It doesn’t read to me like an “attack on StreetComplete” in any way, and " I will not respond to any wrong claims…" was perhaps a little unnecessary.

Thanks for that - that will definitely help to clarify things.

I edited the following two articles:

Feel free to improve the wording, I sometimes tend to formulate things in an overly convoluted manner.

1 Like

Please use a short concise topic when you are starting a new subject.