What is x-default.
x-default is a special hreflang value that declares the default page to show when no language version matches the user’s language.
Picture a trilingual site: Turkish, English and German. When a French-speaking user searches, which version should be shown? The set does not answer that question, because French is not in the set. x-default fills exactly that gap.
The value declares not a language but a role: “if none matches, show this”. It therefore points to one of the pages in the set, and that page continues to carry its own language declaration besides.
Which page to choose
The choice is a strategy decision, and there are three common approaches.
- The widest-reach language — usually English. The highest probability of being understood by an international audience.
- The main market’s language — the language of the site’s core audience. Sensible for locally focused businesses.
- A language-selection page — a separate page letting the user choose. Common on large multinational sites.
The third option is in theory the most neutral, but in practice it adds a layer of friction: the user lands not on the content they searched for but on a selection screen. On small and mid-sized sites the right choice is usually one of the first two.
On this site x-default points to the Turkish root. The rationale is a market decision: the target audience is Türkiye-based, and the English version is a secondary channel. The decision is not a default but a conscious choice.
Is it mandatory
No, x-default is optional. Without it the search engine makes its own decision, and usually a reasonable one. But there is a difference between “usually reasonable” and “the one you chose”, and that difference concerns every user speaking a language not in the set.
There is also a practical benefit: declaring x-default clarifies, while defining the set, which page is the centre. The in-team debate over “which is the primary version” is settled once by this value.
On this site every page carries four links — three languages and x-default — and the verification suite measures on every run that all four are in place. The same link is repeated in the sitemap.
Common misunderstandings
The value is simple but frequently misunderstood on three points, and all three can break the set.
First: x-default is not a language but a role. The page it points to therefore continues to carry its own language declaration TOO. A page can be both “the Turkish version” and “the default”, and both links are written.
Second: there cannot be more than one x-default. There is a single default per set; calling two different pages the default produces a contradiction, and the declaration is counted invalid.
Third: x-default is not a redirect instruction. It tells the search engine which page to show; it tells the user’s browser nothing. It is no justification for building automatic redirection — on the contrary, a correctly built x-default removes the need for automatic redirection.
- Not a language but a role — the page pointed to declares its own language as well.
- One per set — two defaults produce a contradiction.
- Not a redirect instruction — it addresses only the search engine.
- Optional — without it the engine makes its own decision.
- It can be a language-selection page — but that adds friction; usually needless on small sites.
The third item’s practical value is large: a correct x-default is the technical answer to the worry “we should send the user to the right language”. The search engine already shows the fitting version; additionally building a redirect in the browser is both needless and harmful.
As the set grows
On a two- or three-language site the x-default choice is easy. As the set grows — five, seven, ten languages — the question gets tougher, because no language is an obvious default candidate.
At that scale two approaches stand out. The first is still choosing the widest-reach language — usually English — and accepting that for a user who does not know it, this is not ideal but the least bad.
The second is building a language-selection page: the user says which language they want. It adds friction, but on a ten-language site that friction can be less bothersome than landing in the wrong language.
The two B2B sites this studio manages are in seven languages each, and the same principle holds on both: the set is complete, or not at all. The x-default decision is made in that frame too — if a page exists in seven languages, all seven declare one another and the default is single.
And a scale note: as the language count grows, so does the number of links each page carries. On a seven-language site every page carries eight links, and in the sitemap that means eight alternate lines per URL. The file grows fast and becomes unmanageable by hand — a generator becomes a necessity.
A final practical note: the x-default decision should be made once and documented. The in-team “which is the primary version” debate is settled by this value, and if its rationale is not written down, it reopens a year later. The rationale deserves recording as much as the decision itself — especially why the chosen language was chosen.
An implementation detail: the x-default declaration should be repeated both at page level and in the sitemap. Declaring in two places looks redundant but provides an assurance — an error at page level can be compensated by the map.
On this site every page carries its own link set, and the same set is repeated in the sitemap. A URL existing in three languages gets four links, a Turkish-only one two; the total is the sum of those two products. x-default is present in both: even a single-version page needs to say “if nothing else matches, here”.
And a verification note: that x-default points to the right page should be checked by hand. Automated tools check the declaration’s PRESENCE, not whether it shows the RIGHT page. That is a strategy decision, and only a human can verify it.
A reminder to close: this value looks like a small detail, and it is — but being small does not mean being needless. It concerns every user speaking every language not in the set, and its cost is a single line.
One last implementation note: when this declaration is made at page level and in the sitemap together, an assurance forms — an error in one can be compensated by the other. On this site both are generated from the same route map, so they cannot drift apart.