<link rel="alternate" hreflang="…">

hreflang checker

The check everyone does halfway: not just whether your hreflang codes parse, but whether every declared alternate actually links back. Google's rule is blunt — if page X links to page Y and Y doesn't link back, the annotations may be ignored. This tool fetches your alternates and verifies the return links.

What gets checked

Code validity (language first, optional script and region — a bare country code is invalid), fully-qualified URLs, duplicate codes pointing at different URLs, the self-reference every set must contain, the x-default fallback, and reciprocity: each declared alternate is fetched (bounded, SSRF-guarded) and its own hreflang set is searched for a link back to your page. Header- and sitemap-delivered hreflang is out of scope for an HTML-tag checker — Google supports three delivery methods and this verifies the link-tag one.

Rules last verified against Google Search's localized-versions documentation 2026-08-19

FAQ

Why is Google showing the wrong language version?

Usually broken reciprocity: your English page lists the German one, but the German page's set doesn't list the English page back, so Google discards the pair and guesses. The table above shows exactly which alternates fail the return-link test.

Do I need hreflang for pages in only one language?

No. hreflang exists to disambiguate variants of the same content — translations or regional versions (en-GB vs en-US pricing). A single-language site gains nothing from it, and a wrong implementation is worse than none.

What does x-default actually do?

It names the page for searchers whose language matches none of your declared variants — typically your language-selector or your primary version. Without it, Google picks arbitrarily for unmatched locales.