International SEO and Hreflang: The Mistakes That Actually Break Rankings
Hreflang is one of the few SEO mechanisms where the failure mode is almost entirely self-inflicted — get the syntax wrong or the pairing incomplete, and Google’s own documentation is explicit about what happens: it just ignores the tag.
What Google’s documentation actually requires
Google’s Search Central guide on localized versions lays out the mechanics plainly. Return tags are mandatory and reciprocal: if page X links to page Y via hreflang, page Y has to link back to page X, or Google states it will ignore the pairing entirely. Every localized page needs to list itself along with all other language and region variants — self-referencing isn’t optional. The x-default value is an optional fallback for when no other hreflang value matches a visitor’s browser settings, generally recommended for language-selector pages specifically. And the code format has to use a hyphen, not an underscore — en-US, never en_US or a reversed us-en.
The detail that trips people up most: Google’s own documentation states directly that hreflang is not used to detect a page’s language — that’s handled by separate algorithms. Hreflang is a hint about which version to show, not a directive Google is obligated to follow.
Hreflang doesn’t tell Google what language your page is in. It tells Google which version you’d prefer shown to a given visitor — and Google’s own documentation is explicit that it can and does override that preference when its own signals disagree.
John Mueller confirmed this recently, with a specific example
In a case reported by Search Engine Journal in May 2025, an SEO asked Mueller why fr-be pages were surfacing in French (fr-fr) search results despite hreflang tagging. Mueller’s response: hreflang doesn’t guarantee indexing, and when two versions are functionally the same — his example was fr-fr and fr-be — Google commonly picks one as canonical regardless of the hreflang setup, though hreflang will often still swap which URL displays even as reporting stays tied to the canonical version. It’s a real, useful confirmation that hreflang influences display, not the underlying indexing and canonicalization decision.
The actual error rates, from real audits
The most commonly cited hreflang statistic — a 2017 Semrush audit of 20,000 multilingual sites — found 58% had source-code conflicts (96% of those specifically missing self-reference tags), 37% had incorrect hreflang links, and 32% had inconsistent language sets across pages. That study is nine years old at this point, so treat it as historically informative rather than a current-state number.
A more recent, independently verifiable study is more useful here: Dan Taylor of SALT.agency, working with NerdyData, published research on Search Engine Land in April 2023 analyzing 18,786 sites with hreflang present, using Screaming Frog, HreflangChecker.com, and Visual SEO Studio. The findings: 31.02% of multilingual sites had conflicting hreflang directives, and 16.04% were missing self-referencing tags entirely. Those numbers are the ones I’d actually cite if you need a current, sourced figure — a lot of the “31%” statistics circulating trace back correctly to this study specifically.
The mistakes that actually show up in practice
- Non-reciprocal return tags — the single most common issue in both studies above, and the one Google’s documentation states most explicitly gets ignored outright.
- Invalid ISO codes — Google’s own docs flag examples like a bare, non-standard code or a malformed combination as explicitly invalid; using
en-ukinstead of the correcten-gbis a common real-world version of this mistake. - Hreflang conflicting with canonical or noindex tags on the same page — sending contradictory signals about which version matters.
- Incomplete variant sets — a page listing some but not all of its language/region siblings.
- Misusing
x-defaulton a locale-specific page rather than reserving it for a genuine language-selector or global landing page. - Sitemap-versus-HTML-head inconsistency — declaring different hreflang values in your XML sitemap than in the actual page head, which creates a direct conflict between two supposedly authoritative sources.
What I’d actually check
Run a dedicated hreflang audit tool against your actual live pages, not just your CMS settings — the SALT.agency methodology (Screaming Frog plus a dedicated hreflang checker) is a reasonable model to follow. Specifically verify: every pair is reciprocal, every page self-references, your codes match ISO format exactly, and your sitemap and page-head declarations agree with each other. Given that even a well-resourced, recent sample of nearly 19,000 sites showed a 31% conflict rate, assume your setup has at least one of these issues until you’ve actually checked — this is a mechanism where “I set it up once” and “it’s currently working correctly” are genuinely different claims.