I would like community feedback on a proposed review of numbered English-name
tags such as name:en1, name:en2, name:en3, etc. in the main affected
OSM bbox around this community
This proposal is about changing nonstandard key structure while preserving the
name information. It is not a proposal to remove Hebrew, Arabic, English, or
other names from objects. It is also not a proposal to choose or standardize
English spellings.
The Israel forum appears to be the best primary venue because this tag family
is mostly local to this community’s historical workflows.
Process references:
- Israel discussion and communication guidance
- OSM automated edits code of conduct:
- Israel forum discussion about using the forum, not Telegram, for durable
community discussion:
https://community.openstreetmap.org/t/telegrams-scope/130330
Summary
Many objects in and around Israel currently use tags like these:
name:en=Yavneel
name:en1=Kefar Yamma
name:en2=Yabneel
name:en3=Yabniel
name:en4=Yamah
name:en5=Yamma
name:en6=Yavniel
The numbered keys are not standard OSM language-name keys. Standard
language-specific names use name:<language-code>, for example name:en.
en1, en2, etc. are not language codes.
Most of these numbered values appear to be alternate Latin-script or English
transliterations. For that case, the normal OSM tagging target is
alt_name:en, using semicolons when there are multiple alternate names.
The example above would become:
name:en=Yavneel
alt_name:en=Kefar Yamma;Yabneel;Yabniel;Yamah;Yamma;Yavniel
The proposal is to handle these numbered tags in stages, starting with the
lowest-risk duplicate cases and discussing any wider migration before upload.
Scope
The proposed scope is the main affected area:
south=29.3
west=34.2
north=33.5
east=35.9
This bbox contains almost all current global uses of exact name:en[0-9]+
keys.
Current counts checked against Taginfo and Overpass:
Taginfo data timestamp: 2026-05-11T00:59:45Z
Overpass checks: 2026-05-12
Global exact name:en[0-9]+ tags: 81,624
Tags inside the proposed bbox: 81,280
Share inside proposed bbox: about 99.58%
Affected objects inside bbox: 46,813
The high-volume keys are:
name:en1 45,869 globally
name:en2 19,494 globally
name:en3 9,353 globally
name:en4 4,645 globally
name:en5 1,588 globally
name:en6 596 globally
There are small numbers of name:en7 through name:en14.
I am not proposing to include the remaining small number of objects outside
this bbox in the first edit, because they may have different local context.
Background
The numbered keys appear to have two main origins.
First, some place-name objects appear to have received variants from GNS
data, for example objects with source=GEOnet Names Server (gns).
Second, a local Israel street-name cleanup workflow used spreadsheets and bulk
editing around 2012-2015. Older forum discussions explicitly mention columns
like name:en, name:en1, name:en2, etc. as a way to keep multiple
searchable street-name variants.
Relevant older discussion:
- https://community.openstreetmap.org/t/street-names-in-israel-have-several-fundamental-problems/62170
So these tags should not be treated as random junk. They contain useful names.
The problem is the key format, not the values themselves.
Why Change This?
name:en1, name:en2, etc. are not documented OSM language-name keys and
are not valid name:<language-code> keys.
The usual tagging model is:
name:en=main English name
alt_name:en=alternate English names
old_name:en=historical English name
official_name:en=official English name, if different from common name
short_name:en=short English name
For multiple alternate names, semicolon-separated alt_name:en is the
documented pattern:
alt_name:en=Name One;Name Two;Name Three
Moving existing alternate transliterations from numbered name:enN keys to
alt_name:en would make the data easier for mappers and data consumers to
understand without losing the alternate names. It would not invent new
translations or choose between competing spellings.
Relevant tagging guidance:
- OSM Wiki, multilingual names
- OSM Wiki,
namekey - Israel naming guidelines
Value Length Limit
OSM tag keys and values have a maximum length. The OSM API v0.6 documentation
says each tag key and value can be up to 255 Unicode codepoints, not bytes.
This matters because the proposal may combine several numbered values into one
semicolon-separated alt_name:en value. I checked the current affected bbox
against this limit.
Result:
OSM base timestamp checked: 2026-05-12T17:28:14Z
Existing numbered values over 255 codepoints: 0
Existing alt_name:en values over 255 codepoints: 0
Merged alt_name:en values over 255 codepoints: 0
Longest current numbered value: 71 codepoints
Longest existing alt_name:en value: 105 codepoints
Longest proposed merged alt_name:en value: 127 codepoints
So the proposed migration is not currently blocked by value length. The edit
tool should still check the final alt_name:en value before upload and skip
or send to human review any object where the result would exceed 255 Unicode
codepoints.
Consumer Checks
The main current consumer found for the numbered keys is Nominatim.
Nominatim currently indexes broad name:* keys, which means it can pick up
nonstandard keys like name:en1. Nominatim also indexes alt_name:* and its
tokenizer splits semicolon-separated name lists. Public Nominatim tests
confirmed that semicolon-separated alt_name:en values are searchable.
Examples checked:
alt_name:en=Elath;Elat;Ilat
search "Ilat Israel" finds Eilat
alt_name:en=Athlit;Athlith
search "Athlith Israel" finds Atlit
alt_name:en=Al Qubeiba;El Qubeiba;El Qubeibe;Kafr Hanagid;Qubayba;Qubaybah;Qubeiba
search "Qubaybah Israel" finds Kfar HaNagid
Other checked consumers did not show a confirmed user-facing benefit from the
current name:enN format that would be lost by moving to alt_name:en.
Pelias, Photon, and Organic Maps source checks did not show support for
name:en1 as a valid English-name key. OsmAnd was tested with a small
generated .obf; address/street search did not find a synthetic street by
name:en1, and also did not find it by alt_name:en. That means OsmAnd may
still need separate improvement for alt_name:en, but the test did not show
that current name:en1 is preserving OsmAnd street search today.
Proposed Stages
Stage 1: Low-Risk Duplicate Removal
Remove numbered tags only when the value is already preserved on the object.
Rule 1:
if name:en1 == name:en
remove name:en1
The same applies to name:en2, name:en3, etc.
Rule 2:
if name:enN is already present as an exact semicolon-separated value in alt_name:en
remove name:enN
Confirmed low-risk duplicate-removal scope inside the bbox:
Exact duplicates of name:en: 3,401 tags
Already present in alt_name:en: 4 tags
Total low-risk removable numbered tags: 3,405 tags
This is about 4.19% of numbered English-name tags in the bbox.
I think this stage is suitable for a small mechanical edit if the local
community agrees.
Stage 2: Review or Approved Migration to alt_name:en
For objects where name:enN contains a distinct alternate English name or
transliteration, migrate the values into alt_name:en and remove the numbered
keys.
The rule would be:
- Keep
name:enunchanged. - Read existing
alt_name:en, if present. - Split existing
alt_name:enon semicolons. - Read
name:en1,name:en2, …,name:en14in numeric order. - Skip empty values.
- Skip values that exactly equal
name:en. - Skip values already present in
alt_name:en. - Append remaining values to
alt_name:enin numeric order. - Check that the final
alt_name:envalue is no more than 255 Unicode
codepoints. - Remove the numbered
name:enNkeys.
Example:
before:
name:en=Nahariyya
name:en1=Nahariya
name:en2=Naharija
name:en3=Naariya
after:
name:en=Nahariyya
alt_name:en=Nahariya;Naharija;Naariya
Example with existing alt_name:en:
before:
name:en=Shefa-Amr
alt_name:en=Shefaram;Shfaram;Shefa-'Amr
name:en1=Shafa Amr
after:
name:en=Shefa-Amr
alt_name:en=Shefaram;Shfaram;Shefa-'Amr;Shafa Amr
If this full migration were applied inside the bbox, the estimated effect
would be:
Objects with at least one numbered English-name key: 46,813
Numbered name:enN tags removed: 81,280
Objects where alt_name:en would be created: 44,319
Objects where alt_name:en would be updated: 108
Distinct values added to alt_name:en: 76,873
Net tag-count reduction: 36,961
This stage is large enough that I do not think it should be uploaded without
explicit local community agreement. If people prefer, it could instead be
published first as a QA task for human review.
Cases to Skip or Send to Human Review
The proposed edit should skip or require human review for cases where:
- there is no
name:en; - the numbered value looks historical and may belong in
old_name:en; - the numbered value looks official and may belong in
official_name:en; - the numbered value is an abbreviation and may belong in
short_name:en; - the object is a GNS-derived place-name object where the variant may not be a
simple alternate transliteration; - the value is not actually English or Latin-script;
- the object has recent dispute or complicated multilingual naming history;
- the proposed final
alt_name:envalue would exceed 255 Unicode codepoints; - the value differs only by punctuation, casing, or whitespace, unless that
normalization rule is separately discussed.
The first mechanical edit, if any, should probably only handle exact
duplicates. The broader migration can be reviewed separately.
What Would Not Change
The edit would not change:
name;name:en;name:he;name:ar;- route, address, or highway tags;
- the mapped geometry;
- the actual name strings, except for moving them from numbered keys into
alt_name:en.
The intended result is preservation of alternate names in standard OSM tags,
not removal of names.
Changeset Plan
If the community agrees to a mechanical edit, I propose:
- small geographically scoped changesets;
- changeset comment such as:
Review numbered English-name keys: remove duplicates or migrate agreed variants
- changeset tags including:
mechanical=yes
bot=no
discussion=<forum topic URL>
- upload only after a published before/after sample has been reviewed;
- keep a machine-readable before/after log for rollback;
- stop immediately if local mappers report a problem.
This would follow the OSM automated edits code of conduct.
Questions for the Community
- Is the local community comfortable with removing exact duplicate
name:enNtags where the value already equalsname:enor is already in
alt_name:en? - For distinct alternate transliterations, should these be migrated to
alt_name:en, or should they first be presented as a QA task for manual
review? - Are there known local tools, apps, QA workflows, or data consumers that
currently depend onname:en1,name:en2, etc. specifically? - Are there object classes that should be excluded from any mechanical edit,
especially GNS-derived place nodes? - Is
alt_name:enthe right target for these alternate Latin-script
transliterations, or should some subset use a more specific key such as
old_name:en,official_name:en, orshort_name:en?
Notes on the Evidence
The counts above were checked directly against Taginfo and Overpass. The
history examples and old discussions are linked in the relevant sections above.
The main Overpass query pattern was:
[out:json][timeout:180];
(
nwr["name:en1"](29.3,34.2,33.5,35.9);
nwr["name:en2"](29.3,34.2,33.5,35.9);
nwr["name:en3"](29.3,34.2,33.5,35.9);
nwr["name:en4"](29.3,34.2,33.5,35.9);
nwr["name:en5"](29.3,34.2,33.5,35.9);
nwr["name:en6"](29.3,34.2,33.5,35.9);
nwr["name:en7"](29.3,34.2,33.5,35.9);
nwr["name:en8"](29.3,34.2,33.5,35.9);
nwr["name:en9"](29.3,34.2,33.5,35.9);
nwr["name:en10"](29.3,34.2,33.5,35.9);
nwr["name:en11"](29.3,34.2,33.5,35.9);
nwr["name:en12"](29.3,34.2,33.5,35.9);
nwr["name:en13"](29.3,34.2,33.5,35.9);
nwr["name:en14"](29.3,34.2,33.5,35.9);
);
out tags meta;
Counting method:
- Count every exact key matching
^name:en[0-9]+$as one numbered tag. - Count each OSM object once for the affected-object total, even if it has
multiple numbered keys. - For duplicate removal, compare each numbered value exactly against
name:en. - For the existing
alt_name:encheck, splitalt_name:enon semicolons,
trim surrounding whitespace, and compare exact values. - For the hypothetical migration count, preserve existing
alt_name:en
values first, then append missing numbered values in numeric order.