Technical SEO · Guide

What Is Hreflang in SEO?

The most error-prone thing in this section and the one fewest readers need. If your site has one version for one market, you can stop after the first block. For the few who cannot, the rest is rigorous, because a half-implemented version is worse than none.

Updated: August 2026
Written by: Andrew Odgers, Managing Director
Reading time: 14 minutes
Opening by sending most readers away

Most Sites Do Not Need This

This applies only to sites with versions of the same content for different languages or different countries. A business serving one market in one language has no use for it. Implementing it unnecessarily creates problems rather than preventing them.

Who it is for. Genuinely duplicated markets.

A site with the same page in English and in German, else separate versions for the United Kingdom and Ireland. The content exists more than once, deliberately, for different audiences.

Who it is not for. Almost everybody.

A UK business with UK customers and one version of each page. There is nothing to declare, because there are no alternatives to point at.

Why implementing it anyway is harmful. It makes claims.

Declaring alternatives that do not exist, else that are not genuinely equivalent, states something untrue about your site. That is worse than the silence it replaced.

The version we see most. A single page declaring itself.

Somebody adds a declaration to a site with one language, naming only itself. It achieves nothing. It also suggests somebody was following a checklist rather than assessing the site.

Why the warning is stronger here than elsewhere. The failure is silent.

Most mistakes in this section announce themselves eventually. This one produces no error, no symptom and no notification, which is block ten.

If you are stopping here. That is the right outcome.

Nothing below applies to a single-market site. The rest of the technical SEO guide is more likely to be useful.

For those who remain

What It Actually Does

It tells a search engine that several pages are alternatives of each other, intended for different audiences. It is about serving the right version rather than about position.

What it declares. A set of equivalents.

These pages contain the same thing for different people. Here is which audience each one is for. That is the entire statement.

What it is meant to prevent. The wrong version.

A German customer reaching your English page, else an Irish customer reaching your UK page with the wrong prices. The content is right and the version is wrong.

What it does not do. Improve position.

It does not make any version rank better. It influences which of your existing versions is presented to a given person, which is a different benefit entirely.

Why that distinction matters. It sets expectations.

A business implementing this expecting improvement will be disappointed, because a correct implementation changes who sees which page rather than how well any of them performs.

What it also prevents. Versions competing.

Without it, near-identical pages in the same language for different countries can be treated as duplicates, with one chosen and the others set aside. Declaring them as alternatives is how you avoid that.

The single most important technical point here

It Is Reciprocal, And That Is Where It Breaks

Every page must reference every alternative, including itself. A one-sided declaration is ignored, which is why partial implementations achieve nothing at all rather than achieving something partial.

What reciprocity requires. Agreement from both ends.

If your English page names your German page as an alternative, the German page must name the English one in return. Each page in a set declares the whole set, itself included.

Why it works that way. Anyone can claim anything.

Without the return reference, any site could declare itself an alternative version of any other. Requiring both ends to agree is what makes the declaration trustworthy.

What happens when it is one-sided. Nothing.

The unconfirmed declaration is disregarded. This is the third place in this section where a site says something only half of it agrees with. The same thing happens each time.

Why that is worse than a partial result. No gradual failure.

Half the redirects working still helps. Half the declarations agreeing helps not at all, because each unmatched pair is discarded rather than partially honoured.

Where it goes wrong in practice. Scale.

Five markets means every page declaring five alternatives, maintained across five sites. The arithmetic grows quickly. A single omission removes that page from the arrangement.

What that implies for the decision. Do it fully or not at all.

There is no useful minimum viable version. Either every page in every version declares the full set, else the effort produces nothing.

Ordered by how often we find each

Common Mistakes

Four failures account for nearly all of it. Every one is silent, which is what makes this subject unusually punishing.

Missing return references. The commonest by a distance.

One version declaring the others without the others declaring back. Usually because one market's site was built by a different team, else a version was added later and the existing pages were never updated.

Wrong or invented codes. The improvised one.

Codes for language and region are drawn from defined standards. People assume they can be guessed from the country name, which produces values that look plausible and mean nothing.

Pointing at addresses that redirect. The stale one.

Declarations naming addresses that now send visitors elsewhere. The declaration should name the address that actually serves the content rather than one that bounces to it.

Conflicts with canonical nominations. The subtlest.

A page declaring alternatives while nominating a different page as authoritative. Block five covers this, because it is the reason correct-looking implementations achieve nothing.

Why guessing codes is so tempting. They look obvious.

The codes for common markets resemble abbreviations anybody would invent, so the pattern seems inferable. It is not. This is why we do not publish a partial list: people copy what is there and improvise the rest.

The conflict worth its own block

Canonicals And Hreflang Fight Each Other

A page nominating a different page as authoritative while also declaring itself an alternative for a particular audience is contradicting itself. It says it is not the real version and asks to be served anyway.

What the contradiction is. Two incompatible claims.

The nomination says treat something else as the definitive page. The declaration says serve this page to this audience. Both cannot be acted on.

How it happens. Reasonably.

Somebody notices near-identical pages across markets and nominates one as the original to avoid duplication. That instinct is right in general and wrong here, because these versions are meant to coexist.

What the correct arrangement is. Each nominates itself.

Every version should nominate itself as authoritative while declaring the others as alternatives. That is the same self-reference principle the canonical pillar describes.

Why it is the subtlest failure. Everything validates.

The declarations are correct, the nominations are correct, then each mechanism is faultless in isolation. The problem exists only in the relationship between them.

What the symptom looks like. The wrong version, persistently.

Customers in one market consistently reaching another market's page, despite an implementation that appears complete. That pattern is the signature of this conflict.

A decision about where they live

Where The Declarations Live

Three places are possible. The choice is architectural rather than technical. Knowing the options lets you ask a developer a sensible question, which is the useful outcome here.

On the page itself. The usual choice.

Each page carries its declarations directly. Straightforward to understand and to inspect, though it means every page must be edited whenever a market is added.

In the sitemap. The one for scale.

Declarations held centrally in the file listing your pages rather than on each page. Far easier to maintain at volume, though less obvious, since nothing appears on the pages themselves.

In the server response. The specialist case.

Sent with the page rather than in it, which is how non-page files such as documents are handled. Rarely relevant unless you publish downloadable material per market.

How to choose. By how often markets change.

A stable set of three markets suits page-level declarations. A growing set, else one changing regularly, makes central management considerably less painful.

What we will not publish. The syntax.

How each is written is specified and a developer implementing it has that specification. Publishing a partial version here is how the invented-code problem in block four spreads.

The international structural decision

Domains, Subdomains And Subfolders

Three ways to separate markets, each signalling something different. A country domain is the strongest signal and the most expensive commitment, which is the trade at the centre of this decision.

Country domains. Strongest and most costly.

A separate domain ending in each country's own suffix. Unambiguous about which market it serves. It also means running what amounts to a separate site with its own standing to build from nothing.

Subfolders. Cheapest and most consolidated.

Each market as a section of one site. Everything contributes to the same domain, which is a substantial advantage for a business without the resources to establish several.

Subdomains. The middle option.

Separate parts of the same domain per market. More separation than a subfolder and less than a distinct domain, which is sometimes exactly right and is often chosen by default.

What makes country domains expensive. Starting again.

Each one begins with nothing and must be established independently. For a business with one strong domain, dividing into several can mean several weak ones.

The recommendation we give. Subfolders, usually.

Unless there is a commercial reason for genuinely separate national businesses, consolidation tends to serve better. That is a preference rather than a rule.

What this page does not cover. The domestic case.

Choosing between a subfolder and a subdomain within a single market is a different question. URL structure carries that comparison. Our advanced material owns the international strategy.

The correction that matters most

Language Is Not Country

Targeting a language and targeting a country are different decisions. Conflating them is the commonest strategic error here, producing implementations that are technically correct and commercially wrong.

What targeting a language means. Anybody who reads it.

A version for speakers of a language, wherever they are. Appropriate where the content is the same regardless of location and only the words differ.

What targeting a country means. A market.

A version for people in a particular country, which may share its language with several others. Appropriate where prices, availability, delivery or law differ.

Where they diverge. Shared languages.

Several countries speak the same language with entirely different commercial conditions. A single version for all of them serves none of them properly.

The error we see. Language used as a proxy.

A business creating one version per language and assuming it covers the countries. Customers then meet prices in the wrong currency and delivery terms that do not apply to them.

The opposite error. Countries without a reason.

Separate versions per country where nothing actually differs between them. That is maintenance for no benefit and creates near-duplicates you then have to declare.

How to decide. Ask what differs.

If only the words differ, target language. If prices, stock, delivery or obligations differ, target country. Our advanced material covers the strategy properly.

The maintenance point

It Breaks During Migrations

These declarations contain addresses, so a restructure breaks the reciprocity silently. Nothing reports it, nothing looks different, then the arrangement simply stops functioning.

Why they break. Written-down addresses.

Each declaration names a specific address in another version. Change any address and every declaration pointing at it is now naming something that no longer serves that content.

Why it is worse here than elsewhere. Reciprocity amplifies it.

A broken canonical affects one page. A broken declaration breaks the pair, so on a site with several markets one restructure can dismantle the whole arrangement.

What makes it silent. Nothing checks.

No error is produced by a set that fails to agree. Reporting can surface some problems. The absence of an alert is not confirmation that anything works.

When it happens. Any address change.

A rebuild, a move to a secure connection, a restructure of one market's site or a platform change. Any of those can break every declaration pointing into that version.

What to do about it. Treat it as part of the migration.

Rebuilding these declarations belongs on the migration checklist rather than being discovered afterwards. Our site migrations material covers that discipline.

The closing recommendation

Get It Checked

This is one of the few areas where a specialist review is genuinely worth the money. Not because it is difficult to understand. It is because the failure mode is silent.

Why silence changes the calculation. You cannot self-correct.

Most technical problems eventually announce themselves through a report or a symptom. A broken set of declarations produces nothing, so it can persist for years while somebody assumes it is working.

What a review actually checks. Agreement.

Whether every page references every alternative, whether every reference is returned, whether the codes are valid and whether anything is nominating something else as authoritative.

Why that is hard to do yourself. Volume.

Verifying agreement across several markets and thousands of pages is not a manual task. It needs something that can compare both ends of every pair systematically.

When to have it done. After implementation, plus after any move.

Once when it is first built, then again after any restructure. Those are the two moments where the silence is most likely to be hiding something.

Why we say this plainly. It is unusual advice from us.

We generally argue that businesses are sold reviews they do not need. This is the exception. The reason is specific rather than general: nothing else here fails without telling you.

Website migrations

Nothing else here
fails without
telling you.

We generally argue that businesses are sold reviews they do not need. This is the exception. A broken set of declarations produces no error and no symptom, so it can persist for years while somebody assumes it is working.

What a review checks:

Every alternative referenced Every reference returned Self-reference included Valid codes throughout Addresses that resolve No conflicting nominations Rebuilt after any move A named owner

If you serve one market in one language, we will tell you to skip this entirely.

The full guide series

Every guide.
One practice.

How search finds and stores a site, what your own files are telling it, addresses and duplication, status codes, mobile, hosting and what a real audit contains.

Questions people ask

International Targeting, Briefly

Do we need this?
Only if you have versions of the same content for different languages or different countries. A business serving one market in one language has nothing to declare, because there are no alternatives to point at. Implementing it anyway states something untrue about your site, which is worse than the silence it replaced.
We implemented it and nothing happened. Why?
Most likely the declarations are one-sided. Every page must reference every alternative including itself. If your English page names your German page without the German page naming back, the unconfirmed declaration is disregarded. Half the declarations agreeing helps not at all, because each unmatched pair is discarded rather than partially honoured.
Everything validates but customers still reach the wrong version. What now?
Check the canonical nominations. A page declaring itself an alternative for one audience while nominating a different page as authoritative is contradicting itself: it says it is not the real version and asks to be served anyway. Each mechanism is faultless in isolation, so the problem exists only in the relationship between them. Every version should nominate itself.
Should we use country domains?
Usually not. A country domain is the strongest signal and the most expensive commitment, because each one starts with nothing and must be established independently. For a business with one strong domain, dividing into several can mean several weak ones. Unless there is a commercial reason for genuinely separate national businesses, subfolders tend to serve better.
Can we just have one version per language?
Only if nothing but the words differ. Several countries share a language with entirely different commercial conditions, so one version for all of them serves none properly and customers meet prices in the wrong currency or delivery terms that do not apply. If prices, stock, delivery or obligations differ, you are targeting a country rather than a language.
Do we need to check this after a rebuild?
Yes. It belongs on the migration checklist rather than being discovered afterwards. These declarations contain written-down addresses, so any change breaks every declaration pointing at them. A broken canonical affects one page, while a broken declaration breaks the pair, so on a site with several markets one restructure can dismantle the whole arrangement.