Hreflang Missing Return Links: Causes and Fixes
What 'hreflang missing return links' means, why Google reports this error, and step-by-step instructions to fix it.
"Missing return links" is one of the most common hreflang errors -- and one of the most misunderstood. Here's what it actually means and how to fix it.
What a return link is
Hreflang operates on mutual agreement. If your English page declares that a French page is its French alternate, that French page must also declare the English page as its English alternate. Each page has to "return" the link.
Think of it as a contract: both sides have to sign. If only one page acknowledges the relationship, Google ignores it.
Here's what correct bidirectional hreflang looks like:
English page (/en/about):
<link rel="alternate" hreflang="en" href="https://example.com/en/about" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/about" />
French page (/fr/about):
<link rel="alternate" hreflang="en" href="https://example.com/en/about" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/about" />
Every page in the cluster carries the complete set of <link rel="alternate"> tags. If the French page only listed itself and not the English version, that's a missing return link.
Why this error is so common
Partial implementation. The most frequent cause -- hreflang was added to some pages but not all. Someone added hreflang to the English site and forgot to update the French templates.
Newly added languages. You launch a Spanish version and add hreflang to your Spanish pages pointing to the English site, but forget to update the English pages to include Spanish alternates.
Removed pages. A page was deleted from one language version, but the other language versions still reference it in their hreflang tags. The deleted page can no longer return the link.
URL mismatches. The URL in your hreflang tag doesn't exactly match the URL on the target page. If your English page's hreflang says https://example.com/fr/about but the French page's hreflang self-reference says https://example.com/fr/about/ (with a trailing slash), those are different URLs and Google doesn't see the match.
CMS content sync issues. In multilingual CMS setups, pages sometimes get created in one language but the hreflang configuration isn't propagated to linked translations.
Find missing return links automatically
Hreflang Generator audits your full hreflang cluster and flags every missing return link.
How to audit for missing return links
Manual method for small sites:
- Open your English page and note all hreflang target URLs
- Visit each target URL
- On each target page, view source and find the hreflang tags
- Confirm that target page's hreflang cluster includes the original English page URL
- Repeat for every page and every language
This is tedious but works for sites with a handful of pages.
Screaming Frog method:
- Crawl your site with Screaming Frog
- Go to Hreflang > All in the top navigation
- Filter for "Non-Reciprocal Return Links" -- this shows every hreflang relationship that's missing its return
Sitemap-based check:
If your hreflang is in an XML sitemap, you can parse the sitemap and cross-reference the <xhtml:link> entries to verify every URL-language combination appears as both a source and a target.
How to fix missing return links
The fix is always the same: update the templates or CMS configuration so every page in the cluster carries the complete set of hreflang tags.
Identify all pages in the affected cluster
Get a complete list of URLs for every language version of the content. This is your source of truth for what the hreflang cluster should look like.
Confirm the correct URL format
Decide on trailing slash / no trailing slash, www / non-www, HTTPS vs HTTP. Pick one and use it consistently. A mismatch in URL format is enough to break the return link relationship.
Update templates to output the full cluster
Every page should dynamically output hreflang tags for all language alternates, including itself. If you're using a CMS with multilingual support, this is usually a configuration option. If you're outputting tags manually, update every template.
Handle deleted pages
If a page was removed from one language version, either remove the references to it from all other language versions' hreflang tags, or restore the page (even as a redirect target isn't good enough -- the page must return a 200).
Validate the fix
After deploying, re-crawl affected pages and confirm the return links are present. Check both directions -- the original page and the target page.
Partial fixes create new problems
If you fix return links for some pages but not others, you haven't fixed the issue -- you've just shifted which pages have it. Update all templates at once rather than page by page.
A note on sitemap hreflang
If you're implementing hreflang via XML sitemaps rather than HTML, the same return link requirement applies. Every <url> entry must have <xhtml:link> tags pointing to all alternates, and every alternate URL must itself be a <url> entry with its own complete set of <xhtml:link> tags.
Partial sitemap hreflang is easier to spot and fix than partial HTML hreflang -- the sitemap is a single file you can check in one pass.
Related Articles
Part of Boring Tools -- boring tools for boring jobs.
Generate perfect hreflang tags
Create and validate hreflang markup for your multilingual site. Free.