What the hreflang checker tests
hreflang tells search engines which version of a page to show for a given language or region. It only works when the whole set is consistent, and the set is spread across several pages, so a single typo or a missing link on one page can quietly disable it for all of them. The checker fetches the page you enter, reads every link rel="alternate" hreflang element and any hreflang entries in the HTTP Link header, and validates each one: the code must have the right shape (a language code, an optional script, an optional region, or x-default), the separator must be a hyphen, the URL must be absolute, and the element must sit inside the head.
It then checks the set as a whole. The page must list itself. Duplicate codes are errors, because one language or region can only map to one URL. A single URL under several codes is reported as a notice, since English and British English may legitimately share a page. An x-default entry is recommended but not required. If the page canonicalizes to another URL or is marked noindex, the annotations are at risk of being ignored, and the tool says so.
Finally, it fetches up to ten of the alternates, four at a time, and verifies the return link: each alternate must list the page you entered. It also records the alternate's status code, whether it redirects, whether it is noindex, and whether its canonical points at itself. Those are the conditions under which Google drops a page from the set.
How to read the result
The summary row shows how many annotations were found, how many are well formed, how many fetched alternates link back, and whether x-default is declared. The evidence list explains each check with its level. The first table lists the annotations on this page with any problems in their codes or URLs; the second lists the alternates that were fetched, their status, return link, canonical and notes, and can be copied as CSV for a spreadsheet.
Fix errors first: malformed codes, relative URLs, missing self-references and missing return links each break the set outright. Then clear the warnings, which are usually alternates that redirect, carry noindex, or canonicalize to another URL. Re-run the check from a different page in the set to confirm the fix in both directions.
Common hreflang mistakes
- en-UK instead of en-GB. The region code for the United Kingdom is GB.
- Underscores.
en_USis a locale format from software libraries, not a valid hreflang value. - Region without language.
gboruson their own are not languages. The language comes first. - Relative URLs. hreflang URLs must include the protocol and host.
- Annotations on redirected or non-canonical pages. Point every entry at the final, canonical URL.
Methodology and limits
Codes are validated by format, not against a full registry of language and country codes, so an unusual but well-formed value passes while obvious shape errors fail. The tool reads server-rendered HTML and headers without running JavaScript, fetches at most ten alternates within a 25-second budget, and does not read sitemap-based hreflang. Sites that block automated requests will show alternates as unfetched rather than broken.
Frequently asked questions
- What does a valid hreflang code look like?
- A two-letter ISO 639-1 language code, optionally followed by a hyphen and a two-letter ISO 3166-1 region code, for example en, en-gb or fr-ca. x-default marks the fallback page. Underscores, en-uk and region-only values are the usual mistakes.
- Why do return links matter?
- Google only trusts a set when every page in it points back. If page A lists page B but B does not list A, the annotation from A can be ignored, so both pages lose the benefit.
- Does the page need to list itself?
- Yes. Each page in a set includes its own URL with its own code. Missing self-references are one of the most common reasons a set is ignored.
- Is x-default required?
- It is optional, but recommended. It names the page to show when none of the listed languages or regions match the searcher, typically a language selector or the global English page.
- Can this tool check hreflang in XML sitemaps?
- Not yet. It reads link elements in the HTML and the HTTP Link header. Sets declared only in sitemaps show as missing here even when they are valid.