hreflang: the errors that make Google serve the wrong country
hreflang tells Google which URL to serve to which language and country, but it only works if every annotation has its matching return tag and the language and region codes are valid. At scale, hand-maintained, it rots fast: it's the source of the "no return tag" error that fills Search Console and makes Google ignore the annotations and serve the wrong URL to the wrong country. The fix is to generate and validate hreflang continuously, not to hand-write it.
Where hreflang breaks
- 1Annotation with no reciprocal return tag
- 2Invalid language or region codes
- 3hreflang hand-maintained at scale
- 4Missing x-default
hreflang is a reciprocal system, not a tag.
hreflang is the piece of international SEO most people implement wrong without noticing, because when it fails it doesn't blow up. It just serves the wrong page to the wrong country, silently, and you only find out from a conversion drop in one market. I've worked on international sites at scale, and the lesson is always the same: hreflang isn't a tag you stick on, it's a reciprocal system you maintain. Treat it as a tag and it rots.
What hreflang does (and doesn't)
hreflang tells Google which version of a page serves each language and region (pt-PT, pt-BR, en-GB) so it serves the right one to the right user. What it does not do: it's not a ranking signal, it doesn't force indexing, and it doesn't fix duplicate content on its own. It disambiguates versions that already compete with each other. If you mistake it for a ranking lever, you're solving the wrong problem: the base is still solid technical SEO.
The #1 error: missing reciprocal return tag
It's the error that fills Search Console and the one that costs most. hreflang has to be reciprocal: if page A points to B as another language version, B has to point back to A. Without that return tag, Google treats the annotation as invalid and ignores it. Once the annotation is ignored, it goes back to deciding on its own which URL to show each country, often the wrong one. The "no return tag" warning in Search Console isn't cosmetic. It's Google telling you it's wasting your hreflang.
Invalid language and region codes
The second most common error is using codes that don't exist. Language follows ISO 639-1 and region ISO 3166-1 Alpha 2, and the mix-up is fatal: en-UK doesn't exist (it's en-GB), pt-PT is Portugal and pt-BR is Brazil. An invalid code isn't half-valid. It's ignored entirely. And beware the temptation to segment by language when you meant to segment by country: language isn't country, and an en site shared by several markets needs region signals beyond the language.
Hand-maintaining hreflang at scale guarantees errors
On a ten-page site, you write hreflang by hand. On a ten-thousand-page one, with products coming and going, hand-written hreflang rots in the first week: a new page with no annotation, a removed one still referenced, a reciprocity lost in a migration. So at scale, hreflang is generated from a single source of truth and validated on every build, with a crawl. That's how I kept it in an international context, and it's the only way that holds.
x-default and the country left out
The x-default is the safety net: it tells Google which URL to serve to anyone who matches none of the declared versions. Without it, a user from a country you don't cover lands on a random version. It's cheap to add and it stops you serving Portuguese to someone searching in German. Few use it, and it shows.
How to validate (what I do)
Validating hreflang isn't opening a page and seeing the tag. It's confirming reciprocity across the whole scale. I use Screaming Frog to cross-check every annotation and catch the ones with no return tag, invalid codes and orphan pages; the international targeting report and the hreflang warnings in Search Console to see what Google has already detected; and a staging check before any migration, because that's where hreflang breaks most. It's the same base rigor that avoids the international expansion mistakes I've documented.
Sources
- Google Search Central - localized versions and hreflang
- Google Search Central - managing multi-regional and multilingual sites
Frequently asked questions
Is hreflang a ranking factor?
No. hreflang makes Google serve the right version of a page to each language and region; it doesn't raise rankings or force indexing. It resolves ambiguity between versions, not competitiveness. See technical SEO →
What does the 'no return tag' error in Search Console mean?
It means your annotations aren't reciprocal: one page points to another as a language version, but that one doesn't point back. Google ignores non-reciprocal annotations and may serve the wrong URL per country. It's fixable - almost always a generation and validation problem, not a strategy one. International expansion mistakes →
Should I segment by language or by country?
It depends on your business. Language isn't country: an en site shared by the US, UK and Australia needs region signals beyond the language. Decide by your reality, and use x-default for whoever's left out. International SEO →