All posts
Web design & development

Language Switcher UX: Best Practices and Examples

Language switcher UX done right: where to put it, how to label it, why flags mislead, and how to avoid auto-redirect traps, with real examples.

By Mehdi Hassan7 min read

The short answer

A good language switcher is easy to find in the same place on every page, lists each language in its own name (Deutsch, not German), takes visitors to the same page in the new language, and never forces a redirect based on location. Flags belong to countries, not languages, so use text labels instead.

Key takeaways

  • Label languages in their own script and name: Deutsch, Français, 日本語, not German, French, Japanese.
  • Don't use flags for languages. Spanish, English and Arabic are each spoken in many countries.
  • Switch to the equivalent page, not the home page, so visitors keep their place.
  • Suggest a language based on browser settings, but never auto-redirect someone who chose a URL.
  • Put the switcher where people look for it, usually the header, with a copy in the footer.

What makes a good website language switcher?

A good website language switcher is findable, honest and respectful of choice. Findable means it sits in a predictable spot on every page. Honest means it labels languages the way speakers recognize them. Respectful means it never overrides what the visitor picked or the link they clicked.

The switcher is a small component, but it's the one place where a multilingual site either feels considerate or feels broken. When it fails, visitors who can't read the current page often can't read the instructions for fixing it either. It sits within the bigger structure and SEO decisions in our multilingual website guide, and it depends on each language having its own URL.

Where should the language selector go?

Put the language selector in the header, usually at the right end of the navigation (the left in right-to-left layouts), and repeat it in the footer. Those are the two places visitors scan when they're looking for it, and someone who can't read the page will look by position, not by reading labels.

  • Header for any site where a meaningful share of visitors may arrive in the wrong language, such as from shared links or search results in another market.
  • Footer as a reliable second location. Many visitors scroll to the bottom expecting settings there.
  • Mobile menu near the top of the menu, not buried after every navigation item.
  • Same spot on every page, including blog posts, legal pages and checkout steps.

A globe or language icon next to the current language's name helps people recognize the control without reading. The icon alone is ambiguous, because it can also mean region, currency or a world map, so pair it with text.

Why shouldn't you use flags in a language switcher?

Flags represent countries, and languages don't map to countries. A British flag for English is wrong for Americans, Australians and Indians; a Spanish flag for Spanish is wrong for most Spanish speakers; and some countries have several official languages. Flags make visitors feel excluded at the exact moment you're trying to welcome them.

Flags only make sense in a country selector, where the choice really is a country: shipping destination, local pricing, local legal terms. Many sites need both choices, which is why patterns like "Canada (Français)" exist. If you need both, show them as two separate things, or as combined labels, but don't let a flag stand in for a language.

How should languages be labeled in a language picker?

Label every language in its own name and script, because a person looking for their language recognizes its native name instantly. A German speaker scans for Deutsch, not German; a Japanese speaker scans for 日本語. The visitor's language is the one label that matters, and it should never be translated into the current page's language.

  1. Use the language's own name (endonym): English, Deutsch, Español, Français, 日本語, العربية.
  2. Add a regional variant only when you actually offer different versions, such as Português (Brasil) and Português (Portugal).
  3. Mark the current language clearly, with a check or a bold label, and don't link it to itself.
  4. Set the lang attribute on each option so screen readers pronounce it correctly, and add hreflang on the links.
  5. Order the list consistently, alphabetically by native name or by audience size, and keep the order identical on every page.

What should happen when someone switches language?

When someone switches language, they should land on the same page in the new language, keeping their place. Sending everyone back to the home page is the most common switcher failure, and it punishes the people who arrived deep in the site from search.

That means the switcher has to know each page's equivalent URL in every language, which is the same data you use for hreflang tags. Build both from one map. When a page doesn't exist in a language, either hide that option on that page or show it with a note that it'll go to the closest page, such as the section index. On a Next.js site, our guide to Next.js i18n shows how routes, the switcher and hreflang share one locale list.

How a well-behaved switcher handles the edge cases

For example, suppose a visitor reads an English blog post that only exists in English and German, on a site that also has French and Spanish.

The switcher shows all four languages. English is marked as current. Deutsch links straight to the German version of the post. Français and Español are shown in a quieter style with a short note that the post isn't translated, and link to the French and Spanish blog index pages instead.

When the visitor picks Deutsch, the choice is stored in a cookie. Next time they land on the English home page, a small banner offers the German version rather than redirecting them. If they follow a shared link to an English page, they see that English page, because a URL is an explicit choice.

Which language switcher examples get it right?

The strongest public language switcher examples share the same habits: text labels in native names, consistent placement, and a clear split between language and country when both matter. The patterns below are publicly visible on each site at the time of writing; sites change often, so check them yourself before copying a detail.

Site

Pattern

What it does well

Wikipedia

List of languages by native name, per article

Links to the same article in each language and only lists languages where it exists

Airbnb

Globe icon opening a language and region panel

Recognizable icon plus native names; separates language from currency

Apple

Country or region link in the footer, to a full list page

Treats it as a country choice, with each country's language shown

IKEA

Country chooser at the root domain

Asks once at the entry point rather than guessing, since ranges and prices differ by country

Stripe

Locale selector in the footer

Combines country and language for a business where both affect the content

The common thread is that each site matched the switcher to what actually changes. If only the language changes, a language list is enough. If prices, products or legal terms change by country, the choice is a country, and the language follows from it. Decide which you are before designing the component; our guide to multilingual web design covers the rest of the layout.

How do you make a language switcher accessible?

Make a language switcher accessible by building it as a real button that opens a list of real links, reachable and operable by keyboard, with a clear accessible name and correct language attributes. Many custom switchers fail here because they're built as styled divs or auto-navigating select menus.

  • Use a button with an accessible name such as "Language: English", which announces both what it is and the current state.
  • Make each option a link, so it can be opened in a new tab and works without JavaScript.
  • Avoid select menus that navigate as soon as the value changes; keyboard users trigger them by accident while arrowing through options.
  • Keep visible focus states and enough contrast, as covered in our guide to accessible web design.
  • Close the menu with Escape and return focus to the button.

Frequently asked questions

Should the language switcher be a dropdown or a list?
For a handful of languages, a short visible list or a small menu both work well. For a long list, use a menu or a dedicated page with all options, grouped by region if it helps. Whatever you choose, build options as links, keep them in a consistent order and label them in native names so people can scan quickly.
Should I detect the visitor's language automatically?
Detect it, but use it only to suggest. Reading the browser's language preference is a reasonable signal, so offering "View this page in Deutsch" in a dismissible banner is helpful. Redirecting automatically is not, because it overrides links people chose and can hide pages from search engines. Store the visitor's choice once they make one.
What's the difference between a language switcher and a country selector?
A language switcher changes the language of the same content. A country selector changes the market: prices, currency, shipping, products or legal terms, with language following from the country. Many global sites need a country selector; most B2B and SaaS sites only need a language switcher until they price or sell differently by country.
Does a language switcher affect SEO?
Indirectly. Search engines rely on hreflang and on crawlable links between language versions, and a switcher built from plain links to each equivalent page provides those links. Switchers that change language with JavaScript at the same URL, or redirect by location, can stop crawlers from discovering some versions at all.
Should I use an icon for the language switcher?
An icon helps recognition, especially for visitors who can't read the current language, but it shouldn't be the only label. A globe or language icon paired with the current language's native name works well. Avoid using only a flag, which signals a country rather than a language.

· CEO & Design Director

Copywriter, designer and developer, and founder of Designify Studio. Over five years, 60+ projects across 14+ industries, for startups that have raised $300M+.

Want this done for you? Website, $8,000.

A multi-page marketing site, designed by us, developed in Next.js and animated. $8,000, one-time, up to 6 pages. Book a free 30-minute call to see if it fits.

Schedule Call