
Element Code: HR-020
What this issue actually means
Hreflang is a two-way handshake. If page A says "my French version is page B," then page B has to say "my English version is page A" back. The pointers reference each other by URL and by an hreflang value that names a language, optionally a region, using ISO 639-1 for language and ISO 3166-1 Alpha-2 for country. When it all lines up, Google groups the pages into one cluster and serves the right version to the right audience.
This check, "Invalid Incoming," means some other page is trying to complete that handshake with the current URL, but its half of the annotation is invalid. The incoming reference is broken in a way that makes it unusable. Common culprits: a language code that does not exist (a classic is en-UK, when the correct region is en-GB), a made-up or transposed region, or a target URL that does not match the live URL because of a protocol difference, a www difference, a trailing slash, or a redirect in the path. Because hreflang requires an exact, canonical, self-consistent set of URLs, any of these breaks the pairing.
Why this matters for international SEO
Google's own documentation is blunt about this: hreflang annotations must be confirmed from both sides, and invalid or non-reciprocal ones are ignored. "Ignored" is the part people underestimate. It does not silently degrade to partial credit. When the incoming annotation is invalid, the reciprocal link is not confirmed, and the cluster relationship for that pair collapses. Google then falls back to its own guess about which version to show, which is exactly the outcome you built hreflang to prevent.
The real-world symptom is the wrong-language result in search: British users landing on the US page, Spanish users getting the Latin American variant, or duplicate-looking pages competing against each other instead of being consolidated into one localized cluster. On a large multi-region site, a scattering of invalid incoming annotations can unravel a big chunk of your geo-targeting without any single dramatic failure to point at.
The reciprocal handshake, and where it breaks
How to detect it
- Screaming Frog SEO Spider: enable hreflang crawling and read the Hreflang tab. It reports non-reciprocal (unconfirmed) links, missing return tags, invalid language and region codes, and mismatched URLs. The "Non-Reciprocal" and "Incorrect Language and Region Codes" filters are where invalid incoming annotations surface.
- The Merkle / Aleyda Solis hreflang testing tools: paste a URL and they parse every annotation, validate each code against the ISO lists, and flag the malformed ones with the exact bad value.
- Sitebulb: its international hints group hreflang problems by type and severity, which is handy for triaging a large cluster.
- Google Search Console: the legacy International Targeting report is gone, but URL Inspection and coverage data still help you confirm which version Google actually chose, which is your evidence that the relationship is or is not working.
- Manual view-source: on the source page, read the
rel="alternate" hreflangtags directly. Check the exact string of the code and the exact target URL, character for character, against the live canonical.
How to fix it, step by step
The current page is the victim, not the offender. You fix this on whichever source page emits the bad incoming annotation.
- Identify the offending source. Your crawler names the URL whose annotation is invalid. Open its markup or sitemap entry.
- Correct the code. Validate the language against ISO 639-1 and the region against ISO 3166-1 Alpha-2. Fix classics like
en-UKtoen-GB. Language comes first, region second, joined by a hyphen. - Match the URL exactly. The target must be the canonical, indexable, self-referencing URL: right protocol, right host, right trailing-slash convention, no redirect in between. Point hreflang at final destinations only.
- Confirm reciprocity. Make sure the target page points back with a matching code. Both halves must agree or the pair is discarded.
- Include a self-referencing tag. Every page in the cluster should list itself, which is a requirement people routinely forget.
- Re-crawl and validate. Run Screaming Frog again and confirm the pair now shows as reciprocal with valid codes and zero mismatches.
Common invalid codes and their fixes
| Wrong value | Why it is invalid | Correct value |
|---|---|---|
| en-UK | UK is not the ISO region code | en-GB |
| en-EU | EU is not a country in ISO 3166-1 | en or a real region |
| pt-PT-BR | Only one region allowed after language | pt-BR |
| spa-ES | Language must be 639-1, not 639-2 | es-ES |
| http://site.com/fr | Protocol/slash mismatch vs canonical | https://site.com/fr/ |
Good versus broken
- Validate every code against ISO 639-1 and 3166-1
- Point at canonical, final, indexable URLs only
- Confirm both sides reference each other
- Include a self-referencing hreflang tag on every page
- Re-crawl after edits to prove reciprocity
- Invent codes like en-UK, en-EU, or zh-CN-HK
- Point hreflang at a URL that redirects
- Mix http and https or slash conventions across the cluster
- Assume one-directional annotations count
- Target noindex or non-canonical URLs
What "good" looks like
Every incoming annotation that targets this page uses a valid language and region code, points at the exact canonical URL with no redirect, and is matched by a return tag from this page. Your crawler shows the pair as confirmed and reciprocal, and Search Console serves the correct localized version to each audience. When the whole cluster is self-consistent, hreflang does the quiet, boring job you designed it for.
FAQ
The error is on this page's report, so why do I fix a different page?
Can I use a region code without a language?
US is invalid. The one special case is x-default, which marks the fallback page for unmatched users.Does a trailing slash really break it?
Where can I declare hreflang?
<head> link elements, HTTP response headers (useful for PDFs and non-HTML files), and XML sitemaps. Pick one method per set of pages and keep it consistent so annotations do not conflict.We crawl the full hreflang graph, find every broken and non-reciprocal annotation, and hand you a page-by-page repair plan. Book an advanced SEO audit.
Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.
About SEO ProCheck
Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.
Work With Me
Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.







