murattunalı.

Two B2B sites, seven languages each — what hreflang taught us.

Murat Tunalı PUBLISHED: READING: 3′ FIELD NOTE SEO · Multilingual

Translation opens a page to people; hreflang connects the right language to the right search. Two B2B sites we run are live in seven languages each — and both follow the same rule: the set is complete, or it doesn’t exist.

  1. fersantekstil.com → tr en it ru de fr es
  2. karcem.com.tr → tr en de nl ru it ar
  3. # counted from hreflang tags · 2026-08-21

Three rules, no exceptions

One: the set is bidirectional — if the Italian page points to Turkish, the Turkish page must point back to Italian; a one-way tag is ignored. Two: every set includes itself. Three: x-default is the door a search that cannot decide on a language falls through — usually the primary language, and always a deliberate choice.

The third rule is the most often skipped. x-default is not merely a fallback but a decision: which version should a user with no clear language preference see? For a Turkey-based studio, Turkish is the right answer; for a global SaaS it would be English. Omitting the tag is also an answer — just a silent one that hands the choice to the search engine.

Adding a language is not adding a line

On a seven-language site, every new page means seven URLs and forty-nine tag relationships. The maths is unforgiving: the relationship count grows as n squared. Nine in three languages, forty-nine in seven, one hundred in ten. That is why the set comes out of the generator, not out of a person — hand maintenance rots at the first forgotten tag, and nobody notices, because the page still looks perfectly fine.

On this site the set is generated from the route map, and the verification suite walks all fifty-one routes one by one: it measures whether every language pair is reciprocal and whether every canonical points at itself. The last run found zero problems across fifty-one routes — a result you would not expect from a hand-maintained site.

Four common breakages

One: confusing the language code with the region code. hreflang="tr" means the language itself; hreflang="tr-TR" means Turkish in Turkey — writing the second and losing every Turkish speaker in Germany is a common loss. Two: a hreflang set that contradicts the canonical — if a page declares a different canonical, its hreflang tags are ignored.

Three: tagging a page that has no translation. The set must only cover languages that genuinely exist; a tag pointing at a missing page casts doubt on the whole set. Four: using relative instead of absolute addresses — hreflang requires absolute URLs, and a relative path is silently discarded.

And one subtle trap

Alternates are for pages only. Do not put hreflang on the RSS feed’s alternate link; if you do, it contaminates the language-set count and validators report an incomplete set. Our own suite caught this — the rule is now a test. When counting the set, that test deliberately excludes the RSS alternate.

One last note: hreflang is not a ranking signal, it is a matching signal. Completing the set will not lift the Italian page up the results; it shows the right language to the right user. Confusing those two is why multilingual projects so often look for improvement in the wrong place.

Being multilingual is not a claim; it is keeping forty-nine relationships intact.

Murat Tunalı

Founder. Twenty years of enterprise IT infrastructure + web development.

Next post →

SOURCES

SCHEMA: BLOGPOSTING + PERSON + BREADCRUMBLIST — AUTHOR, DATE AND READING TIME FEED THE SCHEMA