What's up with the crossing_ref tag?

A mapper from out of town arrived and changed the tagging on a few marked crossings from crossing=zebra

In the past this tag combo came across my mapping plate in ID Editor and then in I stopped somewhere when coming to JOSM and noticing in the preset the ‘(UK)’ suffix to the crossing_ref field

The crossing_ref wiki does not encourage me at all with the lead in:

There is currently no consensus as to whether or not it is acceptable to use this tag to describe types of crossing markings on their own, as opposed to implying how the crossing is controlled by lights or signals.

(emphasis mine)

The tag sampling is specific to Canada, USA and UK, no actual global “Common values”.

In one town I find now 16 times crossing_ref=zebra and 159 times crossing=zebra. So, what is the standing on this today where TagInfo simply gives the descriptive on crossing=zebra as " crossing=zebra “A zebra crossing”… totally KISS to me. Is it “whatever tickles your fancy”?

Edit: Notice the JOSM preset has the =zebra value in the drop down pick list under (Pedestrian) crossing= , in fact a whole slew of zebra:* values under the subtag markings, but then also is accepted in the (UK) suffixed field i.e. ‘take your pick’.

My understanding: in the UK everyone knows what a zebra crossing is. It has zebra markings, Belisha beacons, cyclists technically have to dismount, there are zigzag markings on the approach to say you can’t park there, and a give way line just before the crossing. There are never traffic signals. All this is implied by the value zebra whether this is in crossing= or crossing=ref.

The problem is this approach doesn’t work internationally, for example in Germany zebra crossings do not have Belisha beacons or give way lines or zigzag markings. There are crossings that have both traffic signals and with zebra markings. In the US there are crossings that function like our zebra crossings but have markings that look completely different.

So the advantage of a tag like crossing=zebra or crossing_ref=zebra is that it’s locally unambiguous (KISS), but it does mean something slightly different in different countries. Tagging the same thing as crossing=marked crossing:markings=zebra crossing:signals=no and a bunch of other tags, some of which haven’t even been invented yet (e.g. crossing:beacons=yes/no?) is unambiguous globally but also more work.

I don’t have an opinion on the matter, except: if the German community decided that crossing=zebra or crossing_ref=zebra is unambiguous in Germany, and what exactly it means, then it would probably be helpful to put that on the Wiki.

As you said the Wiki pages currently give off the false impression that zebra is a UK-specific term (like toucan is).

1 Like

“Unfortunately” UK has solely zebra stripe marked crosswalks on public roads (I suppose they can be found on private roads in UK as well) that are not legally powered zebra crossings

Older examples

Studies and other courtesy crossing designs for reference:

And these courtesy crossings may be =zebra:double ? But they are towards the border, not centered in the enclosed area The rules around Newland Avenue's confusing courtesy crossings - Hull Live

I prefer adopting crossing:light= from railway= over using flashing_lights= .

Just to confuse matters, when the zebra crossing is on a cycle track, Belisha beacons are not required and there are no zigzag markings (zigzag restrictions on stopping and overtaking only apply to motor vehicles). These are quite common at bus stop bypasses in London.

1 Like

In Nederland ‘a zebra’ or ‘zebrapath’ means just the straight striping. All other things may or may not be present. Legally it means priority for pedestrians (including dismounted cyclists). Not sure about priority for horses, though.
crossing=zebra says it all and is by far the simplest way of mapping this.


Before the introduction of crossing:markings I used crossing_ref=zebra on crossing=uncontrolled / crossing=traffic_signals to indicate, that there are zebra stripes on the ground. crossing:markings provides a much cleaner way to map that. Speaking as continental European, capital of country gave name to Vienna Convention.


The term “zebra crossing” isn’t used here in America but the first time I heard it I was able to figure out that it comes from the black and white stripes you see on the road at crossings. To me it doesn’t imply anything else about the crossing.

Here we have crossings with traffic signals but no stripes on the ground, crossings with stripes but no signals, and every other configuration you can think of. It seems best to me to explicitly describe what is there, avoiding any differences or defaults between regions or highway types.

As long as the term “zebra” is used, different people will assume it means different things.


As for the crossing:markings=zebra in JOSM, these refer to only the paint on the ground and not any of the other information about the crossing (which crossing_ref gives but as has been mentioned before, regionally specific). Personally I would completely deprecate crossing_ref and crossing=zebra in favor for the crossing:* subkey scheme and would like to see JOSM remove it from the preset field, but of course I am not an international mapper so take my USA-centric opinion accordingly.

1 Like

Whatever your preferences on how to tag zebra crossings, one thing is clear: crossing_ref is used internationally. Taginfo confirms this, only 4% of uses are in the UK. Over half are in France alone. This needs documenting on the Wiki, which currently only documents UK- and US-specific values, and a bug ticket in JOSM. A better label might be “Crossing type name (local)” or “Local name for crossing type”

Edit: I’ve updated the Wiki page for crossing_ref to explain that zebra is also used in Germany and France, among others.

1 Like

The earlier mentioned 16 in Overpass filtered town using crossing_ref=zebra v 159 of crossing=zebra it appears the 16 were by ID Editor and StreetComplete. Now latter is driven by a German language programmer where the German wiki translation says something quite different than the root English one which suggests the tag could be used in other countries. The German is just blunt


so guess what happens if a German tourist of which many are coming to Italy trying to be helpful with the “Usual Value, International”?

Drifting, inconsistently, seems even within region capital town, some cycle crossings have a row of painted blocks left and right of the crossing path i.e. cyclist has to be given right of way same as with zebra, totally disrespected by drivers… cross with angel on each shoulder. The latest 4 lane road now even has at traffic calming raised tables stop signs, for the cyclist at both ends… no right of way. They declared themselves last week Ciclopolitana, kind of cycle capital


… a joke in progress.

Would you please mention that there is crossing:markings=zebra there? Editor support is in, both iD and JOSM I think. It is new-fangled, yet quite a bit more concise, IMO & perhaps that of others?

It has been my understanding that crossing_ref=zebra means far more than crossing:markings=zebra. The latter is only describing the looks, the former a legal situation. Anyone can paint zebra markings on their private way, but that doesn’t make it a zebra crossing.

So what I’m saying is that I don’t see what one has to do with the other. If I were to write a router, I would want to ignore things like crossing:markings, and if I were a mapper, I’d only use them, where they deviate from the derived default. Hoping it makes sense.

This is why using crossing:signals goes hand in hand with crossing:markings. For a new mapper unfamiliar with the animal terminology that’s used in crossing_ref I feel like it is easier to understand the crossing: subkey scheme than have to wrap their head around what a zebra or pelican means when those are not global terms. Is it marked? If so, what type of markings? Is it signalized? You don’t need to have familiarity with the animal terminology and what that means per-country to understand this. Again, my perspective comes from a country where crossings have practically no standardization- there’s at least four different marking types in my city alone, sometimes different at the same intersection.


I totally get that. But usually, if something is known as “X” in a country, or region of the world, it doesn’t make sense to map each and all derived implications. in OSM. Something is an advanced stop line? Tag it cycleway=asl. Adding surface:colour=red + surface:markings=pictograms doesn’t tell a data consumer what it is, just what it looks like. A zebra crossing is a crossing that gives priority to the pedestrians (and in some countries to bicyclists as well). Whether OSM calls that a zebra-crossing, or a crossing=pedestrian-priority, I don’t care. The looks of the crossing, though, be it zebra stripes, rainbows or unicorn pictograms, should not matter and just be “on top”.
Anmother example would be highway=give_way. We don’t map traffic_sign:shape=triangle + traffic_sign:border=red. So while I totally get that zebra-crossings aren’t a thing everywhere (or any of the other animals), I would prefer to have a crossing=*-tag that’s country-neutral and a country-specific crossing_ref=*. So while I’m opposing crossing=zebra (and would favor crossing=priority or the likes), I’m all for crossing_ref=zebra to specify in one little word what the crossing looks like and have a table that translates to “In country XYZ, crossing_ref=zebra implies crossing:markings=zebra + crossing:beacons=shiny and bright”. And so on. But yeah, crossings could use some work :wink:

This warning was added last year to rebut a different warning from the previous month claiming that crossing_ref is purely about signs and signals rather than markings.

The source of all this confusion is the original proposal to move the zoo animals from crossing to crossing_ref. In addition to misusing the term “uncontrolled”, it defines crossing_ref as a “traditional, region-specific reference” without defining “reference” – is it a number? Kidding aside, it’s most commonly understood as a typology for the overall crossing configuration. Most of the configurations entail a particular marking pattern, even if they aren’t technically about markings.

crossing_ref wasn’t meant to be UK-specific; otherwise the rest of the world wouldn’t have to put up with the crossing=uncontrolled misnomer either. Rather, the proposal gave a few examples from the UK, which JOSM apparently misinterprets to mean that the entire tagging scheme is UK-specific. But other countries started using crossing_ref for their own regional crossing typology, as the proposal explicitly called for.

In the U.S., we only have two precomposed, named configurations for crossings: the pedestrian hybrid beacon (HAWK) and the exclusive pedestrian phase (scramble). Otherwise, anyone building a crossing can mix and match treatments arbitrarily. So the closest thing we have to a typology would be the variety of allowed marking patterns, which we historically put in crossing_ref. The note about “no consensus” probably refers to the fact that this usage conflicts with crossing_ref=hawk. Later, crossing:markings was approved, allowing us to use crossing_ref only for hawk without any conflicts.

Now that crossing:markings is approved and relatively well established, I don’t think the warning is necessary anymore.

For context, the proposal was originally for crossing:markings=continental, based on a 2005 traffic study funded by the U.S. Federal Highway Administration. The U.S. was relevant because there’s a greater variety of standard crosswalk marking patterns in this country than anywhere else. (In the last year or so, the FHWA has formally adopted the term “longitudinal bars” to describe this pattern, as opposed to “transverse lines”.) Before the proposal came to a vote, this tag was renamed to zebra because mappers in the rest of the world were more familiar with that word, and continental Europe has other marking patterns, such as dots in Germany.

While it’s true that crossing:markings only describes the appearance, the appearance alone can have legal implications depending on the jurisdiction. The FHWA recently published a guide that summarizes some of the legal implications and other real-world consequences of marking crosswalks, including that:

  • States that adhere to the Uniform Vehicle Code grant pedestrians more rights on a marked crosswalk than on an unmarked crossing.
  • In Utah, crossing:markings=zebra means the driver must wait until the pedestrian has fully crossed before proceeding, whereas crossing:markings=lines carries no such requirement.
  • California requires lines in addition to any other markings if the crosswalk is designed for low-vision users.
  • Arizona paints school crossings colour=yellow, implying a 15 mph speed limit. Violations at school crossings (in a school zone or along safe-routes-to-school) can carry additional fines.

These considerations are orthogonal to whether the crossing is signalized or part of a HAWK crossing configuration, so it isn’t appropriate for crossing_ref. Some routers may want to account for this nuance, while others may not, depending on the level of detail they provide.

Even where the markings don’t have legal implications per se, data consumers sometimes rely on heuristics that use tags as proxies for other tags that have less coverage. (For better or worse, the most well-known example is assuming a speed limit based on highway=*.) If a crossing only has crossing:markings=* but lacks crossing_ref=*, the router may choose to treat it like a particular crossing_ref=* out of an abundance of caution. Conversely, if a crossing only has crossing_ref=* but lacks crossing:markings=*, a renderer may infer a crossing:markings=* depending on the surroundings.

1 Like

Sure, I’ve edited the page to mention crossing:markings=zebra.

1 Like

There are 18 800 mappings of crossing_ref=zebra in Austria. How many do you think satisfy all/some of the extras, apart from the bars on the carriageway? Let me tell you the number - it is 0 (zero).

Unfortunately, I cannot do a mechanical edit - I’d have to have up to date aerials to look at each single one, if there actually is something there - so lets us leave that out to StreetComplete users to turn them into crossing:markings=zebra - might take ten years or more, but this is OSM. In the end, some of it will be out-dated by when it is complete, no matter how it gets entered.

It is not so bad, there are no signals (lights, horns) - maybe the term comes from rail?

Hmm, this is much too less prominent. I think I have to create a section “Austria” (sorts alphabetically?) to say, that there is one one way to map Zebrastreifen without ambiguity.

crossing=uncontrolled was first documented for railway=(level_)crossing in 2016, years after the crossing=* proposal. The proposal was based on this 2007 talk mailing list post that suggested replacing crossing=zebra with crossing=uncontrolled. (crossing_ref hadn’t come up yet.) By the time the proposal was approved in 2008, crossing=uncontrolled had been tagged on 66 nodes, including 11 highways, but no railways.

Maybe a pedestrian railroad crossing without lights and barriers could be considered “uncontrolled” in plain English even if there are crosswalk markings (which are common in some parts of the U.S.). But I think the simpler explanation is that this tag was just an early misunderstanding of the term “uncontrolled” in (British) English. Fortunately, that mistake didn’t follow the menagerie over to crossing_ref.

I think you are misunderstanding what I was saying: crossing_ref=* is country-specific and acts as a kind of “preset” for certain crossing-attributes, some of which we currently cannot tag. crossing:markings=zebra has no legal implications (and please, let’s not start misusing it for this). It simply describes what markings are on the road. The implication of the stripes (i.e. who has priority) is captured in crossing=* and crossing_ref=* (even though crossing=uncontrolled has been called a misnomer before). One of the reasons, crossing:markings was invented, was because people were using the markings as values for crossing_ref, not the name of the crossing-type. It’s mentioned in the proposal:

In Austria, it implies zebra markings, plus priority to pedestrians, but not bicyclists on their bike – same as in Germany.

Converting all crossing_ref=zebra to crossing:markings=zebra only makes sense in countries that don’t have “zebra crossings”, but where the zebra markings on the driveway were tagged as crossing_ref=zebra. For these, crossing_ref=* was misused to describe the markings, not the name of the crossing type. But since Austria knows zebra crossings, that doesn’t apply here. Removing crossing_ref=zebra would remove the information that crossing pedestrians have priority here, something we currently have no way of tagging.

I would replace the "may"s with "might"s, but the problem you are describing is a classic OSM dilemma: the more tags we introduce to describe something, the more tagging-mistakes are possible. And we aren’t doing a great job in preventing tagging mistakes by adding more complexion. Personal (heretic) opinion: 1. Common situations should be able to be handled by a simple key=value-preset, uncommon situations should allow for overriding preset-values. 2. crossings need a complete revamp that makes their usage easy and coherent.