Hreflang Return Tag Errors: How to Find and Fix Them

You've done everything right. Every page has hreflang tags, the codes are correct, the URLs are absolute. Then Search Console shows it anyway: a warning that a chunk of your pages have "no return tags," and Google is quietly ignoring the annotation you spent hours adding. This is the single most common way hreflang fails, and it usually has nothing to do with the tags being wrong — it's about them not matching up.

This guide walks through exactly what a return tag error is, the specific ways it sneaks into a site that looks correctly configured, and how to audit and fix an entire cluster instead of chasing one broken pair at a time.

Quick Answer

A return tag error occurs when one page in an hreflang set references another page as an alternate, but that second page doesn't reference the first one back. Hreflang is only considered valid when the relationship is confirmed in both directions across every page in the cluster, including a self-referencing tag on each page. When a return link is missing, Google typically disregards the annotation for that pair rather than guessing which page was correct.

What is a return tag error, exactly?

Hreflang isn't a one-way pointer. When Page A declares that Page B is its Spanish equivalent, Google requires Page B to declare Page A back as its English equivalent before it will trust the relationship. This is what's called a return tag, and it applies to every single pair inside a language or region cluster — including each page pointing back to itself.

✕ Broken — one-directional
<!-- On example.com/en/ -->
<link rel="alternate" hreflang="en" href="https://example.com/en/" />
<link rel="alternate" hreflang="es" href="https://example.com/es/" />

<!-- On example.com/es/ -->
<link rel="alternate" hreflang="es" href="https://example.com/es/" />
<!-- en tag missing here — no return link -->
✓ Correct — both pages reference each other and themselves
<!-- On example.com/en/ -->
<link rel="alternate" hreflang="en" href="https://example.com/en/" />
<link rel="alternate" hreflang="es" href="https://example.com/es/" />

<!-- On example.com/es/ -->
<link rel="alternate" hreflang="en" href="https://example.com/en/" />
<link rel="alternate" hreflang="es" href="https://example.com/es/" />

With three or more pages in a cluster, the same rule multiplies fast — every page needs a complete list of every other page in the set. Miss one entry on one page, and that specific pair is broken, even if the other nine pairs in a ten-page cluster are fine.

📊 Why Google is so strict about this A one-directional hreflang claim is unverifiable — Google can't tell whether Page A genuinely has a Spanish counterpart or whether someone added a stray tag by mistake. The return link is the confirmation step, which is exactly why a single missing entry voids the whole pair instead of triggering a soft warning.

Why return tag errors happen even when tags look correct

Most of the time, this isn't a case of forgetting to write the tags. It's a mismatch somewhere that makes two technically-present tags fail to recognize each other.

1. URL format mismatches

Google matches hreflang href values as exact strings. https://example.com/es/ and https://example.com/es (no trailing slash) are different URLs to a crawler, even though they load the same page to a human. The same applies to http vs https and www vs non-www versions of a domain.

2. Redirected URLs used as hreflang targets

If the href in your hreflang tag points to a URL that 301-redirects somewhere else, Google generally won't follow the redirect and count the final page as fulfilling the return tag. The tag should always point straight at the final, canonical destination.

3. Cached or stale page versions

Some CDNs and full-page caches serve an older snapshot of a page for a while after it's updated. If a new page in the cluster was added but a cached version of an older page (without the new return link) keeps getting served to Googlebot, the error will persist until the cache clears — even though the live source code is already correct.

4. Partial rollout across templates

On larger sites, hreflang is often injected via a template or component. If that component was only updated on some page types (product pages, say, but not category pages), you get a cluster where some pages have full return links and others are missing entirely — a very common source of a "some pages pass, some don't" pattern in Search Console.

5. New pages added without updating the existing cluster

Launching a fourth regional version of a page means the three existing pages all need their hreflang block updated to include it. It's easy to publish the new page correctly and forget the older three still don't know it exists.

How to find every broken pair in your cluster

  1. Open the International Targeting report in Search Console. It lists specific URLs with hreflang issues, generally flagging missing return tags separately from invalid language codes.
  2. List every page you believe is in each cluster. Don't rely on memory — pull the actual set of language/region variants for each piece of content from your CMS or sitemap.
  3. Compare hreflang blocks side by side. For a small cluster, open each page's source and check that every other page in the set appears, including the self-reference.
  4. For larger clusters, use a crawler or validator tool that can pull the hreflang block from every URL in one pass and cross-reference them automatically, rather than opening dozens of pages by hand.
  5. Check the exact string, not just the page. Confirm trailing slashes, protocol, and domain format match precisely between the href value and the page's actual canonical URL.
Skip the manual cross-checking The Rebrixe Hreflang Generator builds a complete, return-tag-safe set for every page in your cluster automatically.
Generate Hreflang Tags →

Step-by-step: fixing a broken cluster

  1. Rebuild the cluster list from scratch. Write down the canonical URL for every language/region variant of the content, exactly as it resolves after any redirects.
  2. Normalize the URL format first. Decide on trailing-slash, protocol, and www conventions before writing a single hreflang tag, so every href you write already matches the site's actual canonical format.
  3. Generate the full tag set for every page at once rather than editing pages individually — this is where most return tag errors get introduced in the first place.
  4. Paste the matching block into each page, confirming each page includes every other page in the cluster plus itself.
  5. Re-validate before publishing with a validator tool to catch mismatches before Googlebot does.
  6. Request indexing on the affected URLs in Search Console to speed up recrawling, rather than waiting for the next natural crawl cycle.
  7. Recheck the International Targeting report after a few days to confirm the specific pairs have cleared, not just that new errors haven't appeared.
💡 Pro tip Whenever you add a new page to an existing cluster, treat it as an edit to every page in that cluster, not just a new page launch. The new page's hreflang block is only half the job — the older pages need updating too.

Common causes compared

A quick reference for diagnosing which cause you're actually dealing with.

Cause How it looks in GSC Fix difficulty How to confirm it
URL format mismatch Consistent errors on the same pairs every crawl Easy Compare href strings character by character
Redirected hreflang target Error persists despite tag looking correct Easy Check if the href URL returns a 301/302
Caching / CDN staleness Error appears, then clears without any code change Moderate Compare live HTML source vs cached response headers
Partial template rollout Some page types pass, others in same cluster fail Moderate Check if affected URLs share a template or component
Cluster not updated after new page added New URL's error mentions older, established pages Needs full audit Confirm older pages' hreflang blocks list the new URL

Generate a return-tag-safe cluster right now — free

The Rebrixe Hreflang Generator builds a complete set of hreflang link tags for every page in your cluster in one pass, including the self-reference and x-default, so there's no page left out and no pair left one-directional. No account, no watermark.

Free Hreflang Tag Generator Add your pages and codes, copy the complete, return-tag-safe set.
Open Hreflang Generator →

Frequently asked questions

A return tag error happens when Page A declares Page B as an hreflang alternate, but Page B does not declare Page A back. Google requires the relationship to go both ways, so a one-directional link is treated as invalid and is typically ignored for that pair.
Google generally disregards the specific pair that lacks a confirming return tag rather than the entire cluster, but if most pairs in a set are broken, the practical effect is that hreflang stops functioning for that group of pages almost entirely.
This usually means the tags exist but don't match exactly: a trailing slash, http vs https, www vs non-www, or a different domain between the two pages will all cause Google to treat the return link as missing, even though a tag is technically present.
Yes. If a cached or stale version of a page is served without its updated hreflang block, Googlebot can crawl an old version that never declares the return link, producing an error that looks like a code mistake but is actually a caching issue.
Since the fix depends on Googlebot recrawling and reprocessing every page in the cluster, clearance is tied to your site's normal crawl frequency and can take anywhere from a few days to several weeks, though requesting indexing on the affected URLs can speed this up.
Yes. The return tag requirement applies regardless of whether hreflang is declared in HTML link tags, HTTP headers, or an XML sitemap — every method still requires each page to be referenced back by its alternates.
A dedicated hreflang validator or generator tool that crawls the full set of URLs at once will surface every missing return link in one pass, which is far faster than manually opening each page's source code and cross-checking it against every other page.

Fix your hreflang cluster in seconds

The Rebrixe Hreflang Generator builds a complete, return-tag-safe set of hreflang markup — no account, no watermark, just a ready-to-paste tag set for every page in your cluster.

Launch the Hreflang Generator →
← Back to blogs