Here's the first thing to know about hreflang: if your site is in one language for one audience, you don't need it, and adding it wrong is worse than not having it. Our check treats a single-language site with no hreflang as perfectly fine: no penalty, nothing to fix.
But if you serve the same content in multiple languages or to multiple regions, hreflang is how you tell search engines which version belongs to whom. Get it right and a French searcher lands on your French page and a US searcher on your US one. Get it wrong and everyone gets a confusing mix.
What hreflang does
hreflang is an annotation that links the language and regional variants of a page together and labels each one. It can live in the <head>:
<link rel="alternate" hreflang="en-us" href="https://example.com/pricing" />
<link rel="alternate" hreflang="en-gb" href="https://example.com/uk/pricing" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/pricing" />
<link rel="alternate" hreflang="x-default" href="https://example.com/pricing" />
It tells engines: "these four URLs are the same page in different languages/regions, so show each user the right one." The value is a language code (fr), optionally with a region (en-gb).
The rules that make it work
hreflang is unusually unforgiving, because it's a network of references that all have to agree:
- Use valid codes. Language in ISO 639-1 (
en,fr,de), region in ISO 3166-1 (US,GB,FR).en-ukis wrong; the country code isGB. This is the single most common error. - Make it reciprocal. If your English page points to the French page, the French page must point back to the English one. One-directional hreflang is ignored.
- Include a self-reference. Each page should list itself among the alternates.
- Add an
x-default. This is the fallback for users whose language you don't specifically target. - Use absolute URLs. Same reasoning as canonicals: no ambiguity.
If any link in the network is missing or wrong, engines tend to discard the whole set, which is why "no hreflang" often beats "broken hreflang."
When to use it (and when not to)
Use it when you have:
- The same content in different languages (
/,/fr/,/de/). - Region-specific versions in the same language (US vs UK English, with different pricing or spelling).
Skip it when:
- Your site is one language for one audience. Nothing to annotate.
- Your pages are genuinely different content per region (not translations). That's a different setup.
This pairs with the HTML lang attribute, which declares a single page's language to browsers and assistive tech. They're related but distinct: lang describes one page; hreflang connects the set.
How to check it
Pick a page that should have hreflang and view its source. Confirm: valid codes, a self-reference, an x-default, absolute URLs. Then open one of the alternates and confirm it points back. The reciprocity check is where most setups fall apart. Search Console also reports hreflang errors across your site, which is the fastest way to catch a systemic mistake.
Common mistakes
- Invalid region codes, like
en-ukinstead ofen-gb, the classic. - Non-reciprocal links: A points to B, but B doesn't point to A, so engines ignore it.
- Missing self-reference or missing
x-default. - Relative URLs that resolve inconsistently.
- Adding hreflang to a single-language site: unnecessary complexity that can only introduce errors.
FAQ
Do I need hreflang for a single-language site?
No. If you serve one language to one audience, skip it entirely. There's nothing to annotate, and a missing hreflang is not a problem.
What's the difference between hreflang and the lang attribute?
lang declares the language of one page (for browsers and screen readers). hreflang connects the multiple language/region versions of a page so search engines show the right one. Use both when you're multilingual.
Why is "en-uk" wrong?
The region must be an ISO 3166-1 country code, and the UK's code is GB. So it's en-gb. Invalid codes are silently ignored.
What does x-default do?
It's the fallback version shown to users whose language/region you don't specifically target. Always include one.
Key Takeaways
- A single-language site for one audience needs no hreflang at all, and a missing hreflang is not a problem; adding it incorrectly is worse than leaving it off.
- hreflang must be reciprocal: if your English page points to the French page, the French page has to point back, or engines ignore the one-directional reference.
- Region codes follow ISO 3166-1, so the UK is
en-gb, noten-uk; invalid codes are silently ignored, and this is the most common hreflang error. - A complete hreflang set includes a self-reference on each page and an
x-defaultfallback for users whose language or region you do not specifically target, all written as absolute URLs. - hreflang and the HTML
langattribute are distinct:langdeclares a single page's language for browsers and screen readers, while hreflang connects the set of language and region versions for search engines.
Running a multi-language site and not sure your hreflang is valid and reciprocal? Run a free audit. We check it (and flag when it's safely absent). More in the SEO explainers.



