SEO-05

Hreflang inconsistent or missing x-default

WarningStructure

What the check measures

On pages that declare any hreflang at all, three things are checked. The finding is raised when at least one holds:

  1. No x-default: the entry saying where to send a visitor whose language matches none of your versions.
  2. No return link. Page A points at B as its language version, but B does not point back at A.
  3. An invalid language code: anything that does not look like BCP 47. cz instead of cs, or en_US with an underscore instead of a hyphen.

Reciprocity is only verified among pages we actually fetched. A target outside our sample is skipped silently: it cannot be verified, not that it is wrong. The shape of a code, by contrast, can always be verified: it is a property of the declaration itself, not of the site's state.

What the check does not do: it does not look at hreflang in HTTP headers or in the sitemap (HTML only), it does not verify the target page is really in the declared language, and it does not report a missing hreflang on a multilingual site that has none at all. The finding is page-level; severity is warning.

How strong the evidence is

Effect not demonstrated

We recommend it because it does no harm or has some other benefit, but we promise nothing about whether it makes language models cite you. Nobody has demonstrated that yet.

For visibility in AI answers we have no documented effect, hence “effect not demonstrated”. For classic search, though, Google documents hreflang and the reciprocity requirement is there verbatim: if two pages do not both point to each other, the tags will be ignored. So it is not a courtesy, it is a condition of the thing working at all.

What hreflang does: it helps a search engine pick the right language version for a given user. What it does not do: improve your ranking, or substitute for translation. Nine versions of a page in machine translation are not nine pages; they are one page nine times.

Where we are stricter than Google: we report a missing x-default as a defect, but Google merely suggests considering one: it is optional, and by its documentation it works best on language-selector pages. We recommend it because without it you have not said what should happen to a visitor outside your languages, not because its absence breaks anything.

The practical conclusion: fix invalid codes and missing reciprocity: both mean your declaration does not work. Add x-default when you have visitors outside your declared languages.

How to fix it

The full set for a page that exists in three languages looks like this, and the same set must be on all three pages, including the self-reference:

<link rel="alternate" hreflang="cs" href="https://example.com/cenik" />
<link rel="alternate" hreflang="en" href="https://example.com/en/pricing" />
<link rel="alternate" hreflang="de" href="https://example.com/de/preise" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/pricing" />
  • Language codes per BCP 47: cs, en, en-GB. A hyphen, not an underscore. Czech is cs, not cz: cz is a country code, not a language, and it is the single most common mistake in this area.
  • The self-reference must be in the set. Without it the set is incomplete.
  • Absolute URLs including the scheme.
  • The set must be identical on every page: generate it from the template; by hand it will not survive a dozen pages.
  • x-default points where you send an unmatched language: typically English or a selector page.

And the thing people confuse most often: hreflang is not a redirect. It sends nobody anywhere and does not replace a language switcher. It only tells a search engine which URLs are versions of the same content.

What the report says about it

Finding description

The page [url] declares language variants (`hreflang`), but either `x-default` is missing or a target variant does not link back. Search engines may then fail to recognize the variant pairs correctly. This is a standard recommendation for classic search engines (Google/Bing); we have no evidence it affects visibility in AI assistant answers.

Recommendation

Add `hreflang="x-default"` and verify that EVERY language variant links to all the others (including itself): reciprocally, not one-way.

Sources

Text verified 2026-09-12