Proposal:Deprecate crossing=zebra in favor of crossing:markings

From OpenStreetMap Wiki
Jump to navigation Jump to search
Deprecate crossing=zebra in favor of crossing:markings
Proposal status: Proposed (under way)
Proposed by: Bauer33333
Tagging: crossing=uncontrolled + crossing:markings=zebra

Draft started: 2024-05-30
RFC start: 2024-06-28


This proposal aims to replace crossing=zebra with the more popular combination of crossing=uncontrolled + crossing:markings=zebra



ID users added crossing=zebra to all kinds of marked crossings over a span of about five years. In a random sample area in the US this led to only 5% of all crossings tagged with crossing=zebra in 2022 to actually have zebra markings. There exist better tags now without this issue and that are also more clear in their definition.

Long version:

Crossings in OSM were originally described by their british animal names. Applying this UK centric tagging scheme in other countries lead to quite some struggle and not really fitting tag selections. Mappers were confused if eg. crossing=zebra describes the markings on the ground, the right of way situation, the lack of traffic lights or something else. A proposal approved in 2008[1] deprecated the crossing animals and introduced crossing=traffic_signals and crossing=uncontrolled to describe the presence of traffic lights in the crossing=* tag only. To handle the country specific configurations and implied additional features crossing_ref=* was introduced. The value would be the region specific name of such a crossing setup, such as zebra crossings in the UK with their implied features. In other areas crossing_ref=zebra was used to describe the markings only due to the lack of a better tag, but the different meanings always stayed locally confined.

While crossing_ref=* started to get some traction, probably not as much as they could due to the lack of documentation of the implied features, the deprecation of the animal values in crossing=* did not and they continued to be used. After an edit war on the crossing=* page they were documented as UK only shorthands, initially with a warning about the deprecation[2] which got lost over the years[3]. The lack of deprecation lead to confused mappers as well, sometimes adding multiple values to a crossing, like traffic signals and zebra.

Then in 2014 iD added a preset for crossing=zebra[4]. This lead to a massive increase in the amount of crossing=zebra:***/crossing/zebra The issue with that was that iD called the preset not "zebra crossing" but "marked crosswalk". So it was used on effectively everything that would be tagged as crossing:markings=yes today. I've found crossing=zebras from that era even on signalized crossings or ones that were only marked by a row of cobblestones. While some countries where the majority of crossings in were in fact zebras could keep that mass mistagging on their few non zebra crossings somewhat under control it was a lost case in areas with multiple marking types.

After this went on for five years iD tried to fix their mistake by giving a deprecation warning in the editor that suggested to retag crossing=zebra with crossing=marked. This got a lot of criticism, on the one hand because crossing=marked had almost no users compared to crossing=uncontrolled, and on the other hand because mappers considered the zebra information lost, ignoring that that info was pretty much lost already, with over 90% of the crossing=zebra worldwide added during the mistagging period completely ruining the meaning of the tag. ID removed the undiscussed deprecation about a year later and hid the preset that contains crossing=zebra. There has been a voting on crossing=marked in the meantime and it got approved.

In 2022 crossing:markings=* got approved and usage of it skyrocketed almost immediatly:***/crossing%3Amarkings/zebra&***/crossing/zebra&***/crossing_ref/zebra As you see the just about one and half a year old crossing:markings=zebra has already about twice the uses of the ten year old crossing=zebra with no visible trend of slowing down. Meanwhile crossing=zebra has seen almost no growth in recent years. In regions without a lot of crossing=zebra the amount seems to decrease, while it roises in areas with almost no crossing=zebra, what is an indicator for mostly new mappers picking that tag from the tag suggestions, since it seems to describe a true zebra crossing better at a first glance if you don't know that with the amount of skunking it means basically the same as crossing=marked in some areas.

For example in Hamilton County, Ohio where only 7 crossings have been retagged to crossing:markings=zebra since late 2022 while 129 got an value describing an other kind of marking[5].

So we end up with a tag which meaning differs depending on the area as well as the time it was added to an object.

Most data consumers can't handle that and internally replace everything that contains zebra as a value just with zebra crossing, even if it was not intended to be one by the mapper back then.

Therefore I'm advocating to deprecate crossing=zebra and use the appropriate value of crossing:markings=* on crossings instead.

Additionally this would reduce the amounts of different tagging schemes, like there are currently three different keys with a zebra value and they can be combined with multiple different crossing=* values as well.


mapping new zebra crossings

Countries with a legal zebra crossing

In regions with a legally defined zebra crossing type the editors would offer a zebra preset containing crossing=uncontrolled + crossing:markings=zebra + crossing_ref=zebra

Countries without a zebra crossing type

In regions without a legally defined zebra crossing type the editors would offer a zebra preset containing crossing=uncontrolled + crossing:markings=zebra

Dealing with already existing crossing=zebras

In the areas where crossing=zebra has even been used to describe all kinds of marked crossings, no matter if they even feature anything remotely similiar to a zebra crossing, automatically adding crossing:markings=zebra would cause more harm than good there. In areas where crossing=zebra has been used on true zebra crossings only retagging them automaticcaly with crossing:markings=yes would lead to a loss of the zebra information.

Avoiding this issue would be just a deprecation warning without an automated replacement leading to a manual review. In case an automatic retagging is wanted instead there would be a need for a list of areas where crossing:markings=zebra is preferred and where crossing:markings=yes is a better way to go. From what I've seen generally speaking areas that use American English suffer more from the missnamed preset than other language areas. For those areas a MapRoulette challenge would be nice as well to figure out which crossing=zebras actually have zebra markings and which have other markings.

The cases where the crossing values conflict have often seen multiple values separated by a semicolon and would need to be manually reviewed as well.

Which crossing=* value to choose?

Instead of crossing=uncontrolled crossing=marked could be used instead, but the former has seen a lot more usage recently:***/crossing/uncontrolled&***/crossing/marked Note that while in normal english crossing markings are usually a kind of crossing control, the OSM definition only includes crossings with traffic lights as controlled crossings.


Here is an overpass turbo query to find crossings currently tagged in the proposed way:


No changes proposed.

Current editor status

adding crossing=zebra adding crossing=uncontrolled/crossing=marked + crossing:markings=zebra encountering a crossing=zebra
iD Search for the preset of a marked crossing. Replace crossing=uncontrolled with crossing=zebra.

Due to the global amount of crossing=zebra it is listed as the fifth value option but not highlighted in blue as a recommended tag.

Search for the preset of a marked crossing. Replace crossing:markings=yes with crossing=zebra.

ID offers a drop down with icons of the different marking styles.

An otherwise hidden preset is shown. No action recommended
Rapid Search for the preset of a marked crossing. Replace crossing=uncontrolled with crossing=zebra.

Same as in ID crossing=zebra is listed as the fifth value option, but crossing=* is not one of the fields shown in the preset, so you need to go down to the actual tags.

There is a preset for crossing=marked + crossing:markings=zebra Adding crossing:markings=zebra is recommended. crossing=zebra is left untouched.
StreetComplete crossing=* is no longer added by StreetComplete. crossing=* is no longer added by StreetComplete. Answering a quest about crossing markings will add crossing:markings=yes. It will not ask a question about crossing markings and leave crossing=* as it is[6].

Features/Pages affected

Taginfo shows some users of this tag[1]

First one is iD, but the preset there is already unsearchable as seen above. Straßenraumkarte Neukölln uses all three zebra tags and converts them to one internally, so they won't see any effect. MapComplete, OSM2World and OSMAnd would need to be looked into, now idea how relevant it is to them.

Wiki pages affected:



External discussions

Forum thread:

UK community forum discussion:

Mailing list:

Historic discussions:

Note that these discussions are older than crossing:markings=*

2 meaning for crossing=zebra:

automated edits seem to remove crossing=zebra drastically:


Please comment on the discussion page.