hreflang tells search engines which version of a page serves which language or region. When it is correct it is invisible. When it is wrong the effect is specific and damaging: the wrong version ranks in a market, so visitors arrive at a page with the wrong currency, the wrong availability or the wrong language.
Structural choices are covered under international website structure. This page covers what breaks.
The errors that actually occur
Missing return links
The most common error by a wide margin. hreflang must be reciprocal: if page A points to page B, B must point back to A. Where the return link is missing, the annotation is ignored entirely, so the whole set fails rather than degrading gracefully.
- Every version must reference every other version, including itself.
- A three-market setup means each page carries three annotations.
- Adding a fourth market means updating all existing pages, which is where sets break.
Wrong or invented codes
Language codes are ISO 639-1, region codes ISO 3166-1 Alpha-2. Invalid codes are ignored silently.
en-zais valid.en-sais not, because SA is not South Africa’s code.en-ukis a frequent error. The code isen-gb.- Language alone is valid:
en. Region alone is not. - Ordering is language first, then region.
Pointing at non-canonical URLs
hreflang must reference canonical URLs. Pointing at a URL that redirects, or one that canonicalises elsewhere, produces a conflict between two signals and the annotation is usually disregarded.
Conflicting with canonical tags
Each version should be self-canonical. A common and serious error is canonicalising all regional versions to one master version, which tells search engines the others should not be indexed at all, defeating the entire purpose.
Missing x-default
Not an error exactly, but worth having. It specifies the fallback for users whose language or region matches nothing, and without it the choice is arbitrary.
Where to implement it
- In the HTML head: simplest, and appropriate for most sites.
- In the XML sitemap: better for large sites, since it avoids adding many tags to every page.
- In HTTP headers: for non-HTML files such as PDFs.
Pick one. Implementing in two places produces conflicts when they inevitably drift out of sync.
Diagnosing it
- Crawl the site and extract hreflang annotations, then check reciprocity programmatically. Manual checking does not scale past a handful of pages.
- Verify every referenced URL returns 200 rather than redirecting.
- Confirm each page is self-canonical.
- Check for a self-referencing hreflang on each page, which is required and frequently omitted.
- Test with the market you care about, since the symptom is the wrong version ranking somewhere.
Frequently asked questions
Does hreflang affect rankings?
Not directly. It determines which version is shown where. Getting it wrong means the wrong page ranks, which affects conversion rather than position.
Do I need hreflang for the same language in two countries?
If the content differs meaningfully, such as pricing or availability, yes. Where the pages are near-identical, consider whether both need to exist rather than annotating duplicates.
Why is the wrong version ranking?
Usually broken reciprocity, or regional pages canonicalising to a master version. Check both before anything else.
Should I use x-default?
Where you have a sensible fallback, yes. It handles users matching none of your specified versions, which otherwise resolves arbitrarily.
Consulting CTA
If the wrong regional version is ranking in your markets, book an SEO consultation for an hreflang audit.