Are your hreflang tags actually pointing at each other?
If you sell in more than one language or country, hreflang tells Google which version to show whom. The rule people miss is reciprocity: every version must link back to the others, or the whole cluster is discarded.
Reads the hreflang alternates on your home page and confirms the versions link back. Saved to your account if you are signed in to a paid plan.
How this check works
Shipwork reads the hreflang alternates declared on your home page, then fetches the pages they point at to confirm each one links back with its own hreflang. It flags dead alternates, missing return links and duplicate language codes: the three failures that void an international cluster.
What the hreflang checker inspects
The checker reads the alternate language declarations on your home page: each language or region code and the URL it points at. If the home page declares none, the check reports nothing, because not using hreflang is not an error. When it finds declarations, it reports how many, then looks for duplicate language values, which make a cluster invalid.
It then samples up to six of the declared alternates, requests each URL, and reads its declarations. If the alternate does not load, that is reported. If it loads but does not list the original language back, the return link is reported as missing. It does not validate the format of every code, and it reads the home page, not every page on the site.
How to read an hreflang finding
A duplicate-value warning means two declarations use the same language or region, so one of them is ambiguous. A dead-alternate warning means a URL in the set does not return a page. A no-return-link warning means reciprocity is broken: the set says these pages are alternates, but one of them does not confirm it.
A clean sample means the home page declared alternates, the sampled codes were distinct, and the sampled pages returned and linked back. It does not prove that every pair is reciprocal, that the codes are correct, or that the content is truly equivalent. Reciprocity is confirmed only on the pages sampled.
Why broken hreflang costs the right visitors
Hreflang tells a search engine which language or region a page serves, so the correct version is shown to the correct audience. When a return link is missing, the engine can ignore the pair and may show a French page to a German searcher, or the wrong regional page to a buyer who expects local pricing.
Duplicate values and dead URLs are common after a site adds a market, changes a URL structure or renames a locale folder. A dead alternate weakens the whole cluster, not just that page, because the set is read as a group. A generator can write the tags but cannot confirm they point at live, reciprocal pages.
Fix and verify the tags
For a missing return link, add the full alternate set to the page that does not link back, including a reference to itself and to every other version in the cluster. For a dead alternate, point it at the live equivalent URL or remove it from the set. For duplicate values, give each version a unique language or region code.
Publish the same set on every version, and choose one implementation, either page tags or sitemap entries, then keep it synchronized. To write the tags, use hreflang generator. To compare declarations that live in the sitemap, use hreflang sitemap check. Re-run the checker after a change to confirm the sampled pages link back.
When to use the generator or the sitemap check
Use this checker when you already publish hreflang and want to know whether the alternates resolve and link back. If you have no tags yet, start with hreflang generator. If your alternates are declared in the sitemap rather than the page head, hreflang sitemap check compares those declarations with the pages.
The guide hreflang not reciprocal covers the common return-link failure, and migrate check is useful when a domain or URL change has moved your language versions. If you serve one language and no regions, you do not need hreflang at all.
Errors this check finds, and their fixes
- Hreflang not reciprocal: Why a hreflang cluster only works when every version links back
Questions
What is hreflang?
Why does reciprocity matter?
Do I need hreflang if I only sell in one language?
How do I check hreflang on my website?
Why does hreflang have to be reciprocal?
Does the hreflang checker validate language codes?
Should hreflang go in the page head or the sitemap?
Keep reading
What this reads
- Reads public pages from outside your network, the way a crawler does.
- No signup, and nothing is stored on the free checks.
- One of 83 checks across discovery, content, markup, trust and catalogue data.
Cool, just ran an audit and got some insights! Let’s see if I can fix them :)
Whoah! this site is crazy, nothing to roast at all
cool as heck, tried it on my blog and the insights it gave are helpful and not bluff.