
How what3words addresses work in Left-to-Right (LTR) and Right to Left (RTL) scripts
what3words addresses offer a simple way to communicate location – each address is made up of three dictionary words, and always starts with three forward slashes (
///
). For example, an English address for a specific spot in Hyde Park, London is
///line.trade.deed
In any language, the format remains the same:
///word1.word2.word3
with no spaces, all lowercase (assuming the writing script differentiates between lowercase and uppercase letters). This consistency makes what3words easy to read, type and share across the globe.
However, when it comes to right-to-left (RTL) languages like Arabic or Hebrew, there are some nuances in how these addresses are displayed. In this blog, we’ll explain how what3words addresses are formatted and interpreted in both left-to-right (LTR) and right-to-left scripts, with examples and tips for developers and product teams.
The anatomy of a what3words address (LTR basics)
The three forward slashes ‘///’ are the consistent prefix of a what3words address – they’re not a web protocol or a typo; they signal that you’re looking at a what3words location (for example, ///filled.count.soap).
Let’s break it down:
///
– the three forward slashes that are the standard prefix for a what3words addressfilled
– first word (always lowercase)-
.
– dot (period) used as a separator (no spaces around it) count
– second word (always lowercase).
– another dot separatorsoap
– third word (always lowercase)
In left-to-right scripts like Latin, Cyrillic or Greek, the entire address is written and read left-to-right, so the
///
appears at the leftmost side, immediately before the first word. Because the format uses common characters and no spaces, it’s easy to recognise a what3words address in running text. The what3words team recommends always including the
///
when displaying or sharing a what3words address. The /// prefix also helps computer systems or validation scripts identify it as a what3words address, even though word.word.word is often sufficient. Both
///word.word.word
and
word.word.word
are accepted by the what3words API and other products.
Right-to-Left (RTL) scripts and what3words
Now, what about languages that are written right-to-left? Languages such as Arabic (العربية), Hebrew (עברית), Persian (فارسی), and Urdu (اردو) are among the languages supported by what3words that are written RTL. At first glance, an RTL what3words address might look a bit perplexing if you’re used to the English format – the
///
appears on the
right-hand
side of the address when displayed. Let’s unpack what’s happening: in an RTL script, text flows from right to left. A what3words address in an RTL script is still logically composed in the same order to the reader. The triple slash is still a prefix – it comes before the three words in the address string. The apparent reversal on-screen is simply due to how browsers and apps render RTL text. In essence, the
///
remains at the start of the address, but because the words that follow are RTL, the whole group is displayed right-to-left.
For example, consider an address in Arabic. Suppose we have the Arabic what3words address where “الممتاز” is the first word, “قاعة” the second, “صحيحة” the third. The
///
is typed first. If you were to type this into a text field that supports Arabic, it is entered in this logical order. Visually, the three words appear on the left of the slashes.
It’s important to stress: in all languages, the /// is a prefix, not a suffix. It appears on the right side for what3words addresses in RTL scripts because it will be read from right to left. You should always include the
///
at the start when writing out a what3words address, regardless of language. This ensures the address is properly recognised by computers.
Language Name | ISO code | what3words API language code | what3words Locale code | Script | Writing Direction | /// marker logical position | /// marker visual edge |
Afrikaans | af | af | Latin | ltr | prefix | left | |
Amharic | am | am | Ethiopic | ltr | prefix | left | |
Arabic | ar | ar | Arabic | rtl | prefix | right | |
Bahasa Indonesia | id | id | Latin | ltr | prefix | left | |
Bahasa Malaysia | ms | ms | Latin | ltr | prefix | left | |
Bengali | bn | bn | Bengali | ltr | prefix | left | |
Bosnian | bs | oo | oo_cy | Cyrillic | ltr | prefix | left |
Bosnian | bs | oo | oo_la | Latin | ltr | prefix | left |
Bulgarian | bg | bg | Cyrillic | ltr | prefix | left | |
Catalan | ca | ca | Latin | ltr | prefix | left | |
Chinese | zh | zh | zh_si | Han (Simplified) | ltr | prefix | left |
Chinese | zh | zh | zh_tr | Han (Traditional) | ltr | prefix | left |
Croatian | hr | oo | oo_cy | Cyrillic | ltr | prefix | left |
Croatian | hr | oo | oo_la | Latin | ltr | prefix | left |
Czech | cs | cs | Latin | ltr | prefix | left | |
Danish | da | da | Latin | ltr | prefix | left | |
Dutch | nl | nl | Latin | ltr | prefix | left | |
English | en | en | Latin | ltr | prefix | left | |
Estonian | et | et | Latin | ltr | prefix | left | |
Finnish | fi | fi | Latin | ltr | prefix | left | |
French | fr | fr | Latin | ltr | prefix | left | |
German | de | de | Latin | ltr | prefix | left | |
Greek | el | el | Greek | ltr | prefix | left | |
Gujarati | gu | gu | Gujarati | ltr | prefix | left | |
Hebrew | he | he | Hebrew | rtl | prefix | right | |
Hindi | hi | hi | Devanagari | ltr | prefix | left | |
Hungarian | hu | hu | Latin | ltr | prefix | left | |
isiXhosa | xh | xh | Latin | ltr | prefix | left | |
isiZulu | zu | zu | Latin | ltr | prefix | left | |
Italian | it | it | Latin | ltr | prefix | left | |
Japanese | ja | ja | Hiragana | ltr | prefix | left | |
Kannada | kn | kn | Kannada | ltr | prefix | left | |
Kazakh | kk | kk | kk_cy | Cyrillic | ltr | prefix | left |
Kazakh | kk | kk | kk_la | Latin | ltr | prefix | left |
Khmer | km | km | Khmer | ltr | prefix | left | |
Korean | ko | ko | Hangul | ltr | prefix | left | |
Lao | lo | lo | Lao | ltr | prefix | left | |
Malayalam | ml | ml | Malayalam | ltr | prefix | left | |
Marathi | mr | mr | Devanagari | ltr | prefix | left | |
Mongolian | mn | mn | mn_cy | Cyrillic | ltr | prefix | left |
Mongolian | mn | mn | mn_la | Latin | ltr | prefix | left |
Montenegrin | me | oo | oo_cy | Cyrillic | ltr | prefix | left |
Montenegrin | me | oo | oo_la | Latin | ltr | prefix | left |
Nepali | ne | ne | Devanagari | ltr | prefix | left | |
Norwegian | no | no | Latin | ltr | prefix | left | |
Odia | or | or | Oriya (Odia) | ltr | prefix | left | |
Persian | fa | fa | Arabic | rtl | prefix | right | |
Polish | pl | pl | Latin | ltr | prefix | left | |
Portuguese | pt | pt | Latin | ltr | prefix | left | |
Punjabi | pa | pa | Gurmukhi | ltr | prefix | left | |
Romanian | ro | ro | Latin | ltr | prefix | left | |
Russian | ru | ru | Cyrillic | ltr | prefix | left | |
Serbian | sr | oo | oo_cy | Cyrillic | ltr | prefix | left |
Serbian | sr | oo | oo_la | Latin | ltr | prefix | left |
Sinhala | si | si | Sinhala | ltr | prefix | left | |
Slovak | sk | sk | Latin | ltr | prefix | left | |
Slovene | sl | sl | Latin | ltr | prefix | left | |
Spanish | es | es | Latin | ltr | prefix | left | |
Swahili | sw | sw | Latin | ltr | prefix | left | |
Swedish | sv | sv | Latin | ltr | prefix | left | |
Tamil | ta | ta | Tamil | ltr | prefix | left | |
Telugu | te | te | Telugu | ltr | prefix | left | |
Thai | th | th | Thai | ltr | prefix | left | |
Turkish | tr | tr | Latin | ltr | prefix | left | |
Ukrainian | uk | uk | Cyrillic | ltr | prefix | left | |
Urdu | ur | ur | Arabic | rtl | prefix | right | |
Vietnamese | vi | vi | Latin | ltr | prefix | left | |
Welsh | cy | cy | Latin | ltr | prefix | left |