Self referencing hreflang
Each version should declare itself and the other versions. A missing self-reference is an annotation gap to fix; it is not proof that Google discarded the entire cluster.
This is the most common mistake: teams declare only the "other" versions, assuming the current one is implied. It is not — the annotations describe the whole cluster, not a one-way "from here to there" relation.
<link rel="alternate" hreflang="pl" href="https://example.com/pl/cennik">
<link rel="alternate" hreflang="en" href="https://example.com/pricing">
<link rel="alternate" hreflang="de" href="https://example.com/de/preise">
<link rel="alternate" hreflang="x-default" href="https://example.com/pricing">Return tags
Annotations must be reciprocal. If page A names B as its English version, B must name A back as the Polish version. A missing return tag makes the declaration one-sided, and it is dropped.
Reciprocity is a safeguard against hijacking: without it any domain could declare itself a language version of somebody else’s page.
HTTP status, indexability and canonical
Check separately: absolute URL, HTTP 200 response, absence of noindex, crawl access, canonical alignment and return annotation. A noindex page can return 200. A redirect or 404 is different from an indexing exclusion; assess specific relationships without assuming the entire set failed.
Hreflang URLs also need to agree with your canonicals. Each language version should self-canonicalize; canonicalizing language versions onto a single URL defeats the purpose of hreflang.
x-default
x-default names the page for users whose language or region matches none of the declared versions — typically a language selector or an international edition. It is optional, but useful once you run several regional versions of one language.
What hreflang does not do
Hreflang is not a ranking signal and will not lift positions. It also does not consolidate signals across versions the way a canonical does — each version ranks on its own. Its only job is to swap the result for the version that suits the audience.
Hreflang does not force indexing either. A noindex page will not start being indexed because an annotation points at it.
How to verify hreflang today
Collect annotations from HTML, headers or sitemaps and compare both sides of each language pair using a crawler or manual inspection. URL Inspection helps check fetching, indexing and canonical selection; it is not a dedicated hreflang validator.
Link: <https://example.com/pl/raport.pdf>; rel="alternate"; hreflang="pl",
<https://example.com/report.pdf>; rel="alternate"; hreflang="en"Each version should declare itself and the other versions. A missing self-reference is an annotation gap to fix; it is not proof that Google discarded the entire cluster.
No. Hreflang is not a ranking signal. It helps swap the result for the version matching a user’s language or region, but it does not lift positions or consolidate signals between versions.
Check separately: absolute URL, HTTP 200 response, absence of noindex, crawl access, canonical alignment and return annotation. A noindex page can return 200. A redirect or 404 is different from an indexing exclusion; assess specific relationships without assuming the entire set failed.
No. The lang attribute on the <html> element describes the language of the current document and is an accessibility requirement. Hreflang maps relationships between separate language-version URLs. The two signals complement each other but do not substitute.
Collect annotations from HTML, headers or sitemaps and compare both sides of each language pair using a crawler or manual inspection. URL Inspection helps check fetching, indexing and canonical selection; it is not a dedicated hreflang validator.