# hreflang

> What hreflang decides, why every set has to point back at itself, and the three mistakes that make an implementation do nothing at all.

Source: https://netweft.com/glossary/hreflang
Updated: 2026-09-12

**An annotation that tells a search engine which language and region a page is meant for, and which other URLs are its equivalents. It does not translate, rank or consolidate anything; it selects between pages that already exist.**

hreflang answers one question: given several URLs that say the same thing in
different languages or for different markets, which one should this searcher be
shown. It does not merge their signals, it does not stop them competing for
other reasons, and it is a hint rather than a directive.

**Every set has to be reciprocal.** If page A names page B as its German
equivalent, page B must name page A back. A one-way annotation is discarded
entirely, not partially honoured, which is why a partly-migrated site often
gets no benefit at all rather than a proportional one.

**It has to agree with the canonical.** A page whose canonical points at
another URL while its hreflang set names it as the canonical version of a
language is giving two contradictory instructions, and the canonical wins. The
usual result is an entire language folder that self-canonicalises away.

**The third mistake is x-default.** It is not "English" and it is not a
fallback for missing translations; it names the page a searcher should get when
no listed language matches them. Omitting it is fine. Pointing it at a language
page rather than a selector or a global page is the mistake.

A [site audit](/features/site-audit) reports pages whose hreflang set is not
reciprocal, because that is the failure that silently produces nothing.
