The problem hiding in plain sight
Your navigation contains a flag emoji. Someone arrives on your site, they need to change the language, and they see it sitting there looking helpful. They click it. Except it is not a language selector. It is a country selector. They have just selected the wrong thing entirely, and now they are confused, frustrated, and slightly less inclined to buy anything from you.
This is one of the most common navigation mistakes in digital design. It has been a known problem since the early days of web usability. It is still everywhere.
What flags are actually for
A flag represents a country. That is it. That is the whole job. When you use a flag emoji in a navigation element, it carries that meaning with it whether you want it to or not.
🇬🇧 United Kingdom
🇺🇦 Ukraine
That works. It is clear, it is correct, and it is accessible. Flag emojis are written in unicode, which means a screen reader will interpret them correctly as a country of origin. The code and the intent match.
Where it breaks down
The moment you use a flag to represent a language, you introduce a mismatch between what the icon says and what the label means.
🇺🇸 English
Read that again. The flag says "United States." The label says "English." Those are not the same thing. English is spoken in dozens of countries. The United States flag does not represent the English language. It represents one country that happens to use it.
Users do not read navigation, they scan it. When they are scanning, they clock the flag first and draw a conclusion before they reach the label. That conclusion is wrong. Now they have either picked the wrong option, or they have caught themselves, stopped, and had to work out what you actually meant. Either outcome is a bad experience, and bad experiences erode trust.
The accessibility problem on top
There is a second issue that goes beyond confusion. Screen readers interpret flag emojis as countries of origin because that is what they are coded to do. If you use a flag to mean "English," the screen reader will announce it as a country, not a language. Your users who rely on assistive technology are now working with incorrect information.
You can work around this with a code change, but that is extra step to fix a problem you created yourself. The simpler answer is not to do it in the first place.
What to do instead
If you need a language selector, use text. A clear, visible label stating the language name is unambiguous, scannable, and accessible without any additional intervention. If you want to add a visual element alongside it, use a text abbreviation such as EN or FR, not a flag.
Country selectors are different. If you are genuinely asking someone to select their country, a flag works well alongside the country name. The icon and the label agree with each other. No confusion, no workaround needed.
The short version
Use flags to mean countries. Use text to mean languages. Keep the two separate, and your navigation will be clearer for everyone using it.
It sounds obvious when you put it that way. The fact that it keeps appearing in the wild suggests it is worth saying out loud.
If your navigation is sending mixed signals, it's worth finding out where else that's happening. Get in touch if you'd like to talk through what a diagnostic might look like for your site.
▶ Know someone who’d love this? Forward it their way.
▶ Was this email forwarded to you?

