How what3words supports natural variants across languages (using secondary words)
One of the core goals of what3words is to make using a what3words address feel effortless and natural in any language. This means you shouldn’t need special knowledge of spelling conventions or keyboard input tricks – you can just type or say what feels right, and the address will work.
To achieve this, what3words includes intentional alternative forms for certain words in some languages (called secondary words). These variants are a feature to give users flexibility when typing what3words addresses.
Secondary words are never displayed on our app or online map; they are just different ways of inputting the word you want.
Global uniqueness of what3words address words
Every word used in what3words addresses is unique across all our available languages. By “unique”, we don’t mean in terms of meaning or pronunciation – simply a set of Unicode points typed in a specific order.
For example, the word “table” appears in the English wordlist, which meant it was not then available to us when creating the French list (the French word “table” means the same thing, is pronounced slightly differently, but crucially consists of the same five Unicode code points typed in the same order as the English word). This prevents confusing situations where “///table.table.table” could have referred to one location when using what3words in English, but a different location when using it in French. This confusing situation can never arise given that each word appears only in the wordlist of a single language.
To reiterate, meaning and pronunciation are not taken into account here: because the word “kind” was already present in the English wordlist, the German word “kind” (meaning “child”) was not available to us when creating what3words in German. However, the German word “lieb” ( meaning “kind”) is in our German wordlist.
The same rule applies to alternate forms: once a spelling is accepted as a secondary form in one language, it is blocked from being either a primary or a secondary word in any other language. This guarantees that no matter which language you choose, each what3words address refers to one – and only one – location worldwide.
Let’s take a look at how this works in different languages and patterns.
Vietnamese: compound words
Vietnamese presents a unique challenge for what3words because multi-syllabic words contain spaces.
Many Vietnamese words are compounds of two or more syllables, written with spaces between them. For example, the Vietnamese word for “city” is “thành phố” – two syllables, with a space in between, even though it is parsed by Vietnamese speakers (and what3words) as one word. In a what3words address, “thành phố” might appear as one of the three address words. To a Vietnamese speaker, it looks natural and readable with that space.
Importantly, users have flexibility in how they enter it: to accommodate different typing habits, what3words accepts Vietnamese address words either with spaces (exactly as displayed) or with all the internal spaces removed. So whether you write “thành phố” or “thànhphố”, it’s understood as the same word, as long as the other two words are formatted consistently with it. This ensures that if you are using a keyboard or input method that makes it tricky to add the space, you won’t be led astray. In practice, the addresses are consistently displayed with the proper spaces for clarity, but no special effort is needed on the user’s part to match that format when inputting.
In this case “thành phố” is the technically correct way of writing the word; it is therefore the “primary” word, and this is always what we display on our app or online map. Typing “ thànhphố . thànhphố . thànhphố ” into our search bar will take you to the location ///thành phố.thành phố.thành phố
It should be noted that when Vietnamese what3words addresses appear in URLs, they appear without spaces.
Mongolian: transliteration support
Mongolian is officially written in the Cyrillic script but, through
what3words’ locale support
, address input and display in the Latin script is also supported. However, the Cyrillic to Latin mapping is not always consistent, depending on the individual: for example, the Cyrillic letter ‘
Х’ may be transliterated as ‘h’ or ‘kh’ depending on the preferences of the user (we display it as ‘h’), and ө may be ‘o’, ‘ö’, or ‘u’ (displayed by what3words as ‘o’).
For example: if an address word is
“
харах” (meaning “to see”), a user could type it as
“
kharakh”
or “
harah” depending on their habit – either would match the intended word. Similarly, certain Mongolian vowel letters can be transliterated in more than one way. The letter “ө” (pronounced like a German “ö”) might be written by some as
“
o”
and by others as
“
u”
or
“
ö”. what3words accepts the reasonable variants, so the user doesn’t have to guess. To use another example in Mongolian, if the address contains the word “өмнө”, typing
“
omno” or
“
umnu” (in addition to the perfectly transliterated
“
ömnö”) would still hit the mark. By allowing these natural variations, we avoid a situation where, if a person is unsure if in Mongolian they should use
h
or
kh
, the address works either way.
Other languages and patterns
The examples above cover some of the most notable cases, but what3words has incorporated many patterns of natural variation across different languages. Here are a few examples of how we support various languages’ quirks:
Diacritics and special characters
In languages like German and Norwegian, certain letters have diacritic marks or unique forms (ä, ö, ü, å, etc.). what3words allows these to be entered in a more basic form if needed. For example, if the user is typing on a British keyboard, the German word
“
schön” (“beautiful”) can be typed as
“
schoen” – adding an “e” in place of the umlaut – and it will be understood as “schön”. In Norwegian and Danish, the letter
“
å” can be entered as “aa”, “ø” as “oe”, and “æ” as “ae”. This means if you’re using an English keyboard or you’re not sure how to type
“
ø”, just type
“
oe” and you’ll still get the correct address.
Ligatures and combined letters
Some languages use ligatures – combined letters – like
“
æ” in Scandinavian languages or
“œ”
in French. In what3words addresses, you won’t be tripped up by these. We accept the separated form of the letters as well. For example, a French address that includes
“
cœur” could be found by typing
“
coeur”, and a Norwegian address with
“
vær” could be found with
“
vaer”. Essentially, any special fused letters are unfused for a secondary input option.
Variant spellings
In a few cases, languages have undergone spelling reforms or have alternate spellings for the same word. what3words accounts for these to ensure no one is left guessing. A good example is Malayalam, a language of India: a few decades ago, Malayalam script had an official spelling reform that changed how certain words are written. Our Malayalam wordlist includes the modern forms, but we also allow the previous spellings as valid input. That means if an address word was updated in spelling, an older reader who types the traditional form will still get the correct address. We take a similar approach in any language where such variations exist. Another example: in English, we strive to avoid including words with American and British spelling differences as separate entries.
In all these cases, the guiding principle is the same: we want to accept the way you naturally (or have to, depending on keyboard limitations) input the word. The system has been built to handle it behind the scenes. The what3words address for a location is unique and fixed, but how you input each word can flex a bit to match real-world usage. These patterns cover a wide range of languages and scripts, making the experience smooth for millions of users.
Many languages, no secondary words needed
It’s important to note that most of our supported languages don’t require secondary word forms at all – and that’s by design as well. The variations above are implemented only where necessary. In many languages, the words are straightforward to type and there’s essentially just one way to spell them.
For example , English has no accent marks or alternative scripts to worry about, so an English what3words address is used exactly as-is with no hidden variants (we worked hard to reduce potential homophone pairs in English; however, fully eliminating them, especially across every accent, is unlikely in practice; for instance, in parts of northern England “bucks” is pronounced almost identically to “books”). Likewise, languages such as Spanish, Italian, Bulgarian and Swahili, and many others all use their standard orthography for what3words addresses without any secondary forms.
Every language has its own quirks, and our approach is to embrace that diversity in a user-friendly manner.
| Language Name | ISO code | what3words API language code | what3words Locale code | Script | Does the language have secondary words | Secondary words notes | Does the language allow internal spaces | Internal Spaces notes |
| Afrikaans | af | af | Latin | FALSE | FALSE | |||
| Amharic | am | am | Ethiopic | FALSE | FALSE | |||
| Arabic | ar | ar | Arabic | FALSE | FALSE | |||
| Bahasa Indonesia | id | id | Latin | FALSE | FALSE | |||
| Bahasa Malaysia | ms | ms | Latin | FALSE | FALSE | |||
| Bengali | bn | bn | Bengali | TRUE | Some characters that look identical can be typed in more than one way | FALSE | ||
| Bosnian | bs | oo | oo_cy | Cyrillic | FALSE | FALSE | ||
| Bosnian | bs | oo | oo_la | Latin | TRUE | Note: ‘đ’ can also be inputted as ‘dj’ | FALSE | |
| Bulgarian | bg | bg | Cyrillic | FALSE | FALSE | |||
| Catalan | ca | ca | Latin | FALSE | FALSE | |||
| Chinese | zh | zh | zh_si | Han (Simplified) | FALSE | FALSE | ||
| Chinese | zh | zh | zh_tr | Han (Traditional) | FALSE | FALSE | ||
| Croatian | hr | oo | oo_cy | Cyrillic | FALSE | FALSE | ||
| Croatian | hr | oo | oo_la | Latin | TRUE | Note: ‘đ’ can also be inputted as ‘dj’ | FALSE | |
| Czech | cs | cs | Latin | FALSE | FALSE | |||
| Danish | da | da | Latin | TRUE | Note: ‘æ’ can also be inputted as ‘ae’; ‘ø’ can also be inputted ‘oe’; ‘å’ can also be inputted ‘aa’ | FALSE | ||
| Dutch | nl | nl | Latin | FALSE | FALSE | |||
| English | en | en | Latin | FALSE | FALSE | |||
| Estonian | et | et | Latin | FALSE | FALSE | |||
| Finnish | fi | fi | Latin | FALSE | FALSE | |||
| French | fr | fr | Latin | TRUE | Note: ‘œ’ may be typed as ‘oe’. | FALSE | ||
| German | de | de | Latin | TRUE | Note: ‘ä’ can also be inputted as ‘ae’; ‘ö’ can also be inputted as ‘oe’; ‘ü’ can also be inputted as ‘ue’ | FALSE | ||
| Greek | el | el | Greek | FALSE | FALSE | |||
| Gujarati | gu | gu | Gujarati | FALSE | FALSE | |||
| Hebrew | he | he | Hebrew | FALSE | FALSE | |||
| Hindi | hi | hi | Devanagari | TRUE | Some characters that look identical can be typed in more than one way | FALSE | ||
| Hungarian | hu | hu | Latin | FALSE | FALSE | |||
| isiXhosa | xh | xh | Latin | FALSE | FALSE | |||
| isiZulu | zu | zu | Latin | FALSE | FALSE | |||
| Italian | it | it | Latin | FALSE | FALSE | |||
| Japanese | ja | ja | Hiragana | FALSE | FALSE | |||
| Kannada | kn | kn | Kannada | FALSE | FALSE | |||
| Kazakh | kk | kk | kk_cy | Cyrillic | FALSE | FALSE | ||
| Kazakh | kk | kk | kk_la | Latin | FALSE | FALSE | ||
| Khmer | km | km | Khmer | FALSE | FALSE | |||
| Korean | ko | ko | Hangul | FALSE | FALSE | |||
| Lao | lo | lo | Lao | TRUE | Some characters that look identical can be typed in more than one way | FALSE | ||
| Malayalam | ml | ml | Malayalam | TRUE | Words that were changed in spelling reform have previous spellings as secondary words | FALSE | ||
| Marathi | mr | mr | Devanagari | TRUE | Some characters that look identical can be typed in more than one way | FALSE | ||
| Mongolian | mn | mn | mn_cy | Cyrillic | FALSE | FALSE | ||
| Mongolian | mn | mn | mn_la | Latin | TRUE | Secondary words are created when a Cyrillic character has more than one Latin script equivalent: ‘х’ can also be inputted as ‘h’ OR ‘kh’; ‘ө’ can also be inputted as ‘o’ OR ‘u’ | FALSE | |
| Montenegrin | me | oo | oo_cy | Cyrillic | FALSE | FALSE | ||
| Montenegrin | me | oo | oo_la | Latin | TRUE | Note: ‘đ’ can also be inputted as ‘dj’ | FALSE | |
| Nepali | ne | ne | Devanagari | TRUE | Some characters that look identical can be typed in more than one way | FALSE | ||
| Norwegian | no | no | Latin | TRUE | Note: ‘æ’ can also be inputted as ‘ae’; ‘ø’ can also be inputted ‘oe’; ‘å’ can also be inputted ‘aa’ | FALSE | ||
| Odia | or | or | Oriya (Odia) | FALSE | FALSE | |||
| Persian | fa | fa | Arabic | TRUE | Some characters that look identical can be typed in more than one way | FALSE | ||
| Polish | pl | pl | Latin | FALSE | FALSE | |||
| Portuguese | pt | pt | Latin | FALSE | FALSE | |||
| Punjabi | pa | pa | Gurmukhi | TRUE | Some characters that look identical can be typed in more than one way | FALSE | ||
| Romanian | ro | ro | Latin | FALSE | FALSE | |||
| Russian | ru | ru | Cyrillic | FALSE | FALSE | |||
| Serbian | sr | oo | oo_cy | Cyrillic | FALSE | FALSE | ||
| Serbian | sr | oo | oo_la | Latin | TRUE | Note: ‘đ’ can also be inputted as ‘dj’ | FALSE | |
| Sinhala | si | si | Sinhala | FALSE | FALSE | |||
| Slovak | sk | sk | Latin | FALSE | FALSE | |||
| Slovene | sl | sl | Latin | FALSE | FALSE | |||
| Spanish | es | es | Latin | FALSE | FALSE | |||
| Swahili | sw | sw | Latin | FALSE | FALSE | |||
| Swedish | sv | sv | Latin | FALSE | FALSE | |||
| Tamil | ta | ta | Tamil | FALSE | FALSE | |||
| Telugu | te | te | Telugu | FALSE | FALSE | |||
| Thai | th | th | Thai | FALSE | FALSE | |||
| Turkish | tr | tr | Latin | FALSE | FALSE | |||
| Ukrainian | uk | uk | Cyrillic | FALSE | FALSE | |||
| Urdu | ur | ur | Arabic | TRUE | Some pairs of characters share the same sound. Secondary words allow for this | FALSE | ||
| Vietnamese | vi | vi | Latin | TRUE | Primary words have spaces; secondary words are written with no spaces | TRUE |
Vietnamese orthography allows up to three internal spaces inside a single dictionary word (e.g. ‘thành phố’). In a valid Vietnamese 3-word address this rule is all-or-nothing: if one word contains internal spaces, then all three words do.
|
|
| Welsh | cy | cy | Latin | FALSE | FALSE |