hreflang is one of those things that looks simple in the documentation and causes real problems in production.
We manage multiregional websites across the US, Polish, and Ukrainian markets. hreflang implementation issues are the most common reason why international sites lose rankings after migrations, CMS updates, or region expansions. The errors are usually not random - they cluster around the same five patterns.
Here they are, with what actually happens when each one occurs.
1. Missing self-referencing hreflang
Every page in an hreflang set must include a reference to itself.
If your English US page has hreflang tags pointing to French and German versions but does not include hreflang="en-US" pointing to itself, Google treats the self-reference as absent. The page may not be correctly associated with its own language+region signal.
The fix: every page in the set must have a complete hreflang list that includes itself.
<!-- On the en-US page, include ALL of these: -->
<link rel="alternate" hreflang="en-US" href="https://example.com/en-us/page/" />
<link rel="alternate" hreflang="pl-PL" href="https://example.com/pl/strona/" />
<link rel="alternate" hreflang="uk-UA" href="https://example.com/uk/storinka/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en-us/page/" />
2. Inconsistent canonical + hreflang pairing
hreflang signals must point to the canonical version of a page.
If page A has canonical="B" and page B has hreflang pointing back to page A, Google receives contradictory signals. The canonical says "B is the real page" but hreflang says "A is the regional version." Google will typically follow canonical and may ignore the hreflang.
This happens frequently after CMS migrations where URL structures change but hreflang tags are copied from the old sitemap without updating to match new canonicals.
What to check: for every URL in your hreflang set, confirm the canonical tag on that page points to itself (or to the URL you specified in hreflang). If the canonical differs from the hreflang URL, one of them is wrong.
3. x-default pointing to a redirecting URL
x-default is supposed to handle users who do not match any specific language. Most implementations set it to the homepage or the English version.
The problem: if x-default points to a URL that redirects (e.g., /en/ redirects to /en-us/), the signal degrades. Google follows redirects, but a redirect chain in the hreflang set is a reliability issue, especially on sites with complex redirect logic.
Set x-default to the final destination URL after all redirects resolve. Run a crawler periodically to confirm that hreflang URLs in your sitemap return 200, not 301.
4. hreflang implemented in sitemap but not in page HTML
Google accepts hreflang signals from three sources: HTTP headers, page HTML <head>, or XML sitemap.
Sitemap implementation is common because it centralizes management. The problem: if the sitemap is not fetched recently or has errors, the signal disappears entirely for affected pages.
Page HTML <head> implementation is more resilient because the signal travels with the page on every crawl.
For large sites where HTML implementation is impractical, use both: sitemap as the primary source and spot-check a sample of high-priority pages to confirm HTML <head> implementation matches.
5. Language codes that do not match actual page content
hreflang="ru-PL" tells Google: "this page is in Russian, intended for users in Poland."
If the page is actually in Polish (not Russian), the signal is wrong. Google's language detection on the page content will not match the hreflang declaration, and the signal will be partially or fully discarded.
This happens when teams copy hreflang templates across regions and forget to update the language code. It also happens when multilingual sites serve pages in a fallback language (e.g., English) for regions where a local translation does not exist, but still declare hreflang for the local language.
If a full translation does not exist for a region, either do not include that region in the hreflang set, or serve actual content in the declared language. Placeholder or template content in the wrong language is worse than no hreflang signal.
Practical audit process
Before auditing hreflang, pull all URLs from your sitemap and confirm each one returns 200. Any 301 or 404 in the hreflang set invalidates signals for all pages in that group.
Then check three things per page:
- Self-reference present in hreflang
- Canonical URL matches the hreflang URL for this page
- x-default URL returns 200 with no redirect
For sites with 10+ regional versions, automated crawlers handle this better than manual audits. Screaming Frog and Sitebulb both have dedicated hreflang reports. Run them after any URL structure change, CMS migration, or sitemap rebuild.
hreflang is not the most technically complex thing in SEO. But it is one of the highest-leverage things to get right for international sites. A misconfigured hreflang set can split ranking signals across regional versions for months without any obvious diagnostic signal in Google Search Console.
The five patterns above cover roughly 80% of the hreflang issues we find in site audits. Check these first before looking for more exotic causes.
Alexander Todosuik is the founder of YoSiteUP, an SEO agency working across the US, Polish, and Ukrainian markets: yositeup.com
Top comments (0)