Imagine a site that's available in multiple languages. The language is detected automatically by looking at the IP or the browser header. But that's not bulletproof, so a few users might end up on a page in language they don't understand.

I am wondering what the best way is to present the language selection?


download bmml source – Wireframes created with Balsamiq Mockups

Q: Should the languages in the language selection be listed

  1. translated into current language, used to display the site in (good if the detected language was correct)?
  2. native name of the language, so everybody looking for their language could see it in the very same language (good if the detected language was not correct and users don't know the current language)?
  3. always in English assuming most users would understand this?

Feel free to add if I missed something!

  • 46
    This is an interesting question. For the language guessing, looking at the browser headers is good, looking at the IP address is bad. The language depends on the user, not on the user's location. I cannot read japanese, and even if I take my computer with me in Japan I cannot read japanese. A contrario, I can read german, although I am in France. Commented Mar 25, 2013 at 15:50
  • 1
    Remember: Automated translation should be optional Commented Mar 25, 2013 at 20:55
  • 20
    Option 1 is terrible. How would you find your language if it's all in characters you don't know (like arabic in my case)? The only option is to pick one by chance until you get an alphabet you can understand. Commented Mar 26, 2013 at 6:55
  • 2
    @Iconoclast — What the browser sends is not so meaningless. By default, the browser usually sends the primary language of the OS. Safari does that. Firefox is particular, coming in different flavours, and he sends the language of its version. I mean : when you download Firefox you choose the Firefox in french, for instance ; then by default Firefox sends french. Commented Apr 2, 2013 at 15:07
  • 2
    This question deserves a +1 just for the title! Fair effort!
    – Möoz
    Commented Sep 14, 2014 at 22:29

13 Answers 13


Option 2 is the best option, because you'll recognize your own language regardless of your knowledge of other languages (be sure to also provide character sets if you support for example Japanese)

Problems with options 1 and 3

Option 1. If you don't speak / understand the current language you may not recognize your own language. In the example Germans would have it the most difficult.

Option 3. English is the easiest to implement because as you mention most people will understand English. However if your website has translations available, you probably expect visitors with poor English skills..

You could also make a dropdown with a combination of the list in options 2 and 3. eg. German / Deutsch

  • 41
    100% agree! Or reverse the scenario a bit, as an English Speaker imagine if you were prompted to select a language, and all you saw for English was 英語. Keep it native and there will be no confusion. Commented Mar 25, 2013 at 13:08
  • 17
    My daughter fiddled around with her DS and changed the menu language to Japanese. Imagine how much fun I had finding which menu was for language selection. I think they had selected option 1 for the language screen so it was a lot of trial and error to get back to English. Commented Mar 25, 2013 at 17:46
  • 4
    I once had the joy of resetting an old Nokia 3210's language from an Arabic script to German. Nokia chose option 1 at that time. I had to use a second identical phone in parallel to even only find the language selection... So @Mike, I know what you mean Commented Mar 25, 2013 at 20:58
  • 13
    Be sure you have language names written correctly. It is NOT sufficient to run them through the automatic translator/online dictionary. Few things jar more than the name of your mother tongue written with an ugly typo. Commented Mar 26, 2013 at 8:21
  • 2
    I have always wondered why there ever exists a solution in using the current language to name other languages. Especially if the default is already not your native language. I figure it to do with the programmers having a list of translations for every language, and their code just pulls the list of selectable languages AFTER translating it for the current view... I can think of no situation Option 2 is not the most preferred solution.
    – deed02392
    Commented Mar 26, 2013 at 12:18

Option 2 is the way to go as you should always show languages listed by the way they are written in that language. It is the way both Wikipedia and most companies that deal in many languages do it. Here is how Apple handle it:

Option 2 example

Problems with the other options
Option 1 is a headache to maintain as you need to have the name of every language in every other language. It also doesn't help someone to find their language as they have to first try to translate the name of their language into the language of another language that they may not even speak.

Let's say you were in China, and the site language was Chinese. How helpful would this list be to you?

Option 1 example

It's a list of languages names written in Chinese, which you probably didn't even realise. This just illustrates why you shouldn't consider option 1.

Option 3 is just an English-focused version of option 1, and should be avoided for the same reasons. English to a Chinese person is the same as Chinese to an English person.

  • 3
    The sort order of the second list is tricky. Korean is between Italiano and Nederlands. Why? It can't be sorted by hidden English name, because "Nederlands" would sort as "Dutch", before "Italian". It can't be sorted by Unicode code point order, as I and N are both ASCII and sort before anything non-ASCII.
    – MSalters
    Commented Mar 25, 2013 at 16:07
  • 12
    @MSalters: It likely sorts according to an IETF ISO 639-* langage tag. With the 2 letter tags, ignoring language variants, the list becomes {da, de, en, es, fi, fr, it, jp, kr, nl, no, pl, pr, ru, sv, zh} Commented Mar 25, 2013 at 17:37
  • 5
    @JeanHominal: interesting observation, but not obvious at all. I think it is a bad idea to sort on something you don't show. To a user, it might as well be a random order.
    – André
    Commented Mar 26, 2013 at 9:03
  • 3
    No, it's not a list of languages, FYI. It's a list of countries and territories, and the second-to-last actaully means "Antarctica".
    – ithisa
    Commented Mar 28, 2013 at 11:13
  • 5
    @EricDong Seeing as nobody before you pointed that out, I think it's safe to say that it is meaningless to show the list like that to someone that may not speak the language.
    – JohnGB
    Commented Mar 28, 2013 at 15:49

Option 2 is the best, since user can always recognize its own language.

There's is a small pitfall though. If you present language selector as dropdown, user won't see any values except current auto-detected language, unless he clicks it. And if user doesn't understand currently selected language - say, already mentioned Chinese, he might won't even notice that you have a language selector at all!

Therefore you'll either need to have clearly visible non-dropdown list of languages if you have enough free space on some side bar, "confirm auto detected language" splash screen or, if you still choose to use dropdown, some universally understood caption near it (English "Language" seems to be least evil, most people should recognize at least this world even if their English is otherwise bad).

  • 10
    +1 Agree on the pitfall. Guess that's why so many sites use flags to represent languages. Tried to get around with the globe icon but I'm aware not all users would understand. Commented Mar 25, 2013 at 15:13
  • 6
    @greenforest and unfortunately step on toes in doing so. language simply does not equate to flags/nations. Many nations have multiple languages and many languages are spoken in different nations. Commented Mar 25, 2013 at 18:16
  • 2
    @MarjanVenema I know :) w3.org/TR/i18n-html-tech-lang/#ri20040808.173208643 and countless posts on why not to use flags to represent languages Commented Mar 25, 2013 at 18:41
  • Option 2 with a reference to the selection box with the current language's flag is probably the best combined solution.
    – deed02392
    Commented Mar 26, 2013 at 12:21
  • 1
    @deed02392, what's the "flag" of English? Or Spanish? Or Arabic? Some systems use a "speech bubble" icon to indicate the language selector; I think that's becoming a convention. Commented Dec 7, 2016 at 10:28

One thing to remember is that languages can be common across countries but they might be spoken differently. For example, Spanish in Spain will be a little different from the Spanish spoken in Mexico. A recommended way to handle this would be to go with the approach Microsoft has which allows the user to select the language based upon the country and the language of that country.

enter image description here

That said, I would recommend going with option 2 as that allows the user to determine which language he wants to translate to and can also quickly associate with the language transalation.

  • 2
    This list is weird, and lacks consistency. Surprising, from Microsoft ? ;-) Commented Mar 25, 2013 at 17:54
  • 5
    Most regions are written in the language of their item, but Microsoft definitely has a problem with Maghreb. We have “Algeria - Français”, “Tunisia - Français” and “Morocco - Français”, but “Algeria”, “Tunisia”, “Morocco” are not french. In french one says “Algérie”, “Tunisie”, “Maroc”. Commented Mar 25, 2013 at 17:58
  • 1
    A contrario, Microsoft knows how to speak french for “Suisse”. But I find really weird that “Suisse” and “Schweiz” are not together. Commented Mar 25, 2013 at 18:00
  • 1
    Having only english for Cyprus is weird too. Microsoft has greek for Greece. So Microsoft has greek. I am not aware of any difference between the greek language written in Cyprus and the greek language written in Greece. If there are differences, they would be tiny. This is the same language. Commented Mar 25, 2013 at 18:09
  • 3
    You need to make sure that this list doesn't make localization decisions as well. (Example, an English speaker living in France) Any non-native speaker should have the ability to see the site in their translated language, if it is available.
    – Zoot
    Commented Mar 25, 2013 at 18:43

My vote goes for option #2. If you're looking to change the language because you don't understand whatever the default is, it will be a lot more effective to see the choices in a language you do understand. That's kinda the point, right?

I also ran across this article from 456 Berea Street where the author prefers a combination of your options 1 and 2, (although he/she doesn't really state why).

The name of the language as text in the language itself, possibly followed by the name of the language in the language of the current page.


The only valid option is #2, as it's the only one that ensures a visitor is going to recognise a language name.

In the other two scenarios you're assuming the visitor is going to understand a second language, and that's a big assumption.


Option 2 is definitely the best way to go. No flags, please!

I'm a native Czech speaker. I work in English and understand basically several different languages. I was doing localization from English to Czech (including typefaces) since 1993. This means I'm a total geek, however since I was a kid, I'm trying to focus on my (read: user) experience.

Borrow someone's cellphone, switch it to Chinese and then let him fix it back. If he'll be successful, the UX is correct.


Interesting question.

The way to go is : native.

Thus, a person speaking only chinese — there are millions of them — is able to choose chinese. This is not possible if you write only “chinese”.

Here is the choice Apple made : the first dialog in Mac OS X.

Here is how the UN welcome us : www.un.org.

It is nice when you have items in non-latin characters in the list of languages, it makes the site cosmopolitan. I like seeing exotic characters, it gives me a good impression of the site. In addition, when the list of languages has items in non-latin characters, this list has a UI role : it attracts my eye, and when I want to change the language I know instantly that this is the place to go, without reading.

  • 3
    I find it somewhat amusing that the list of languages on the UN web page is sorted by the English-language name of the languages. So: Arabic, Chinese, English, French, Russian, Spanish. I can only imagine the extensive meetings required to come up with that ordering... Commented Mar 25, 2013 at 19:10
  • 1
    @MarkBessey It was easier than randomizing the sort order for each page display...
    – user
    Commented Mar 26, 2013 at 10:23
  • 1
    @Mark — The Vatican's site has a mysterious ordering of languages. Why chinese first ? Why german before english ? God works in mysterious ways. Commented Mar 31, 2013 at 12:13

I like the way Wiki did it. They are using Native name of the language, also in alphabetical order. Alphabetical order is dynamic, so the list will change depending on the language being used. For example in English it's ABC and in Russian its АБВ (ABV) so the list of language will change respectively.

I prefer this way because its easy to find a language, its easer to spot the Russian characters, also by using dynamic alphabetic order I don't have to switch, my brain, between Russian and English.


It's very important to understand the real needs of your actual users. For example, the assumption that "people will recognise their own language" may not be true - I've found cases where a proxy user is involved, providing assistance to people with limited literacy in both English and their native language. In such a situation, dual labels - in both English and the native language - are needed.

Overall, there are so many practical and cultural factors in play that you MUST test with properly representative users to validate and refine your design. Don't look for abstract principles or some magic "best practice" formula here - see what actually works.

  • Using two language names does cover the case you brought up. But what if that user doesn't know English? How many extra languages should we add on?
    – Liggliluff
    Commented Mar 13, 2019 at 0:12

Anyway while what others have answered is good, it doesn't get to the larger picture. I will give you what I think is the IDEAL answer.

Basically, this answer provides MULTIPLE clues (rather than just a single clue) for language selection.

First is the name of the language, (as per the answers above), as it provides a basic interface for any english literate person.

Second is the name of the language in it's own native script, for a basic native language literate person. e.g. enter image description here

Third is a flag for the country. For languages spoken in Dialects and common countries one can use the Country of origin, or the country of speech. E.g. ENGLISH (should have UK Flag), ENGLISH UK, ENGLISH US (should have their respective countries flag). A visual clue bypassing the thinking part of the brain.

Below is a poor screenshot of such an example, from the website http://blog.myheritage.com/2009/06/small-changes-big-differences-new-header-and-footer/ enter image description here

Many applications I've seen have implemented this correctly, and I urge the rest to follow this.

Some other features required are quick filtering of displayed languages by keyboard, like what listary does for lists, to narrow down results. Like if searching specifically for English (Singapore).

Furthermore the placement of the language switcher matters a lot. It should be ideally located above the fold (i.e. on the first page itself) somewhere. The general practice is the top right corner, below any Profile info you might have. IT IS A MUST for first time visitors, it can be hidden for repeat visitors (i.e. the site is already in their preferred language) and accessible via the second location. The second common location is at the bottom of the page, either centered or left aligned. Though I think it should always be available at first glance. The same applies for applications.

Ahhh this is one pet peeve of mine!! For example see Chrome! (I know it's an application, but bear with me) It has the most awful UX for changing the language to english from an unknown language for the user. It requires an inordinate amount of clicking and utter confusion!!

  1. Menu icon
  2. Settings menu item (no icon!! to identify it clearly/easily when using an unknown language)
  3. Click on Show Advanced Settings text.
  4. Click on Language (absolutely no way to find it in an unknown language)
  5. Click Add
  6. Select your language
  7. Move it to the top of the screen.
  8. Click on the button on the right to make it the default chrome language. (Some languages cannot be done this way either, and can only be used for spelling! They should just separate out these dialogs, and not combine the spelling and Language selection dialog!, as the most common case is presumably language selection, and a very distant one is spelling checker selection).
  9. Restart chrome!

Some interesting links I found with contrary views and other useful resources. http://flagsarenotlanguages.com/blog/best-practice-for-presenting-languages/ http://commons.wikimedia.org/wiki/Linguistic_flags http://commons.wikimedia.org/wiki/Category:Flags_of_languages

  • 11
    Never mix flags with languages. German for example is spoken in Austria and many other countries too, and they are not to belong to Germany anymore. You would need a dozen flags for most languages in your list. The English name is meaningless to most users, so don't put that first.
    – fuxia
    Commented Mar 26, 2013 at 18:58
  • Yes, and that's why I said country of origin for a particular language as it is the most commonly used symbol for a language. While I agree that there is ambiguity here, this additional clue does help most average users. It might not be clean, or efficient but it works, as it is a common idiom.
    – Vijay
    Commented Mar 28, 2013 at 3:37
  • 4
    Please, don't use flags... I'm Austrian and we speak German, as people in Switzerland, Luxembourg, Lichtenstein do. Then there're people like the Sudetendeutschen in the Czech Republic, the Heidebodendeutschen in Hungary, the Siebenbürgner Sachsen in Romania, etc. Having one flag to rule them all can easily be an offense.
    – kaiser
    Commented Apr 29, 2013 at 10:15
  • ok. ok. You guys have convinced me not to use flags, even though they are so pretty and colorful! Maybe we should design new flags for languages? I remember there was some initiative that did that.
    – Vijay
    Commented Apr 30, 2013 at 3:51
  • English is by far my best language, but occasionally I might want to use an application in Spanish instead. Everyone who speaks Spanish, including me, knows that "español" means Spanish. I don't see any reason at all for a menu item to say "Spanish - español" instead of just "Español". I admit that including the English name is useful if I want to switch to a language that I can't read--but that's not very often! Commented Jan 13, 2014 at 2:46

We work with embedded systems where space is always very limited. For this reason we use the 2nd option in the native script.

My experience is that people tend to skip lines the can't read.

An advantage of this compared to Vijay's solution is that users do not need to look/search for there language between lines they can't read. The user has to scan each line to see if some native script is available as all lines start of in the site's script with the native script behind it.

Using only the native script the user will only really "see" the lines in his/her own script. thus a Chinese will only really "see" the 2 lines in his/her own script and skip all else.

  • “We” ? Who, “we” ? Commented Mar 26, 2013 at 15:17
  • 1
    Our company, our team. just WE
    – Vincent
    Commented Mar 27, 2013 at 14:17
  • 1
    @ Vincent — You mean “my company, my team”. You speak like Louis the Eleventh. Commented Mar 31, 2013 at 21:46

Similar to Vijay's response, using a flag to indicate the country of origin of the language is easy to interpret. You don't need to indicate the English name for the language unless it's English -- use the native name only in all cases. I've seen it used many times, including in written user's manuals. I'm Canadian and have often purchased products with instructions in several different languages. Guess how many times I've seen a Canadian flag for the instructions I could read? Never. In spite of that, I never had difficulty understanding that the UK flag was for the English instructions.

  • 3
    Bad advice. You are too tolerant. If I were you, I would call the manufacturer of the product and say : “You forgot the instructions for me. I am in Canada. I see some flags, but mine isn't there.” Commented Apr 20, 2013 at 13:52
  • 2
    Seriously? You down-vote me for that? I hope you're joking. I call it being practical. Would you seriously expect a flag for every English-speaking country in the world? Like I said, I had no trouble figuring out that the flag was indicative of language and not country.
    – Bill Dagg
    Commented Apr 20, 2013 at 18:38
  • 6
    Bill. You did not get it. Flags are for countries, not for languages. This is simple. It has been discussed a lot in ux.stackexchange.com. Commented Apr 21, 2013 at 6:53
  • 2
    You're bordering on rude, my friend.
    – Bill Dagg
    Commented Apr 22, 2013 at 0:37

Not the answer you're looking for? Browse other questions tagged or ask your own question.