Skip to content
Go To Agency

Multilingual Sites Where the hreflang Is Actually Correct

We run this site in eight languages, with native content, translated slugs and reciprocal hreflang clusters. Every mistake described below is one we made and fixed on our own codebase, which is a different kind of expertise from having read the documentation.

Written reply within 24 business hours4.9/5 from 35 reviewsAsync by default, no calls required

Translated, indexed, and still invisible

The expensive failure in multilingual SEO is not translation quality. It is a technically broken cluster: alternates that do not point back, an x-default sending everyone to the wrong language, or per-locale pages that all declare the same canonical. The translation budget is spent and the pages never compete.

8
Languages we run in production on this site
Reciprocal
hreflang alternates must be
Never
Locales sharing a single canonical

What a correct multilingual setup requires

Routing decided before content

Subdirectory, subdomain or separate domain. Each has consequences for authority and operational overhead, and changing your mind later means a redirect map.

Reciprocal hreflang, including self-reference

Every version links to every other version and to itself. Missing the self-reference is the most common defect we find, and it invalidates the whole cluster.

Translated slugs, grouped by a stable key

Native slugs outperform a translated site living on English URLs. Once slugs differ, the URL can no longer group the cluster, so versions need an explicit translation key.

x-default pointed somewhere defensible

It serves every visitor whose language matches none of your alternates. Defaulting it to your home market hands them a page they cannot read.

Per-locale metadata and structured data

Titles, descriptions, canonicals and schema all localised. Emitting one market's business details across every language contradicts the page being read.

Native content, not machine translation

A page written for its market outperforms a translated one. We will tell you which pages justify that investment and which do not.

How a multilingual build runs with us

< 24h
Reply to your brief
100%
Scope agreed in writing before we start
4.9/5
Client rating
100%
Projects delivered remotely

Multilingual engagements

Audit

On quote
  • hreflang cluster validated end to end
  • Canonical and routing review
  • Per-locale indexation analysis
  • Findings ranked by impact
Send your project
Recommended

Build

On quote
  • Locale routing and middleware
  • Translated slugs with cluster keys
  • Per-locale metadata and schema
  • Sitemap and x-default
  • Content workflow for your team
Send your project

Expansion

Custom
  • Adding locales to an existing site
  • Redirect plan for URL changes
  • Native content production
  • Post-launch indexation monitoring
Send your project

The multilingual mistakes we made ourselves

Every item here was live and wrong on our own eight-language site before we caught it. We publish them because a supplier who has only read the specification will not warn you about any of them.

x-default pointing at the home market

Ours pointed at French for months. That tag exists for visitors whose language matches none of the declared alternates, so a reader in Japan or Brazil was being handed French. English was the sensible fallback all along: it is the version most likely to be understood outside the declared set, and it carried most of our measured traffic. The fix is one line, and noticing the problem at all takes a deliberate look, because nothing is broken and nothing reports an error.

One set of business details across every language

Our structured data declared the same city and service area on every page in every language, so an American reading the English site received markup stating that the business serves a small French city. The visible page said one thing and the machine-readable layer said another. Structured data that contradicts the page is worse than none, and this pattern is nearly universal on multilingual sites because the schema usually lives in a shared layout that has no notion of locale.

Eight home pages claiming to be one entity

All eight of our home pages emitted an identical schema identifier, URL and name. The canonicals and hreflang were correct, and the structured data contradicted them by declaring a single entity where eight distinct pages existed. It is easy to introduce, because the schema object is written once and reused, and the locale variable sits right there in scope without ever being used.

Interface strings hardcoded in the template

Our article table of contents and summary boxes were written in French directly in the component, so a German reader saw German prose surrounded by French navigation labels. This is the most visible defect on this list and the easiest to miss internally, because the people reviewing the site read the default language and never encounter the mismatch.

A translation key that exists in no language

Our footer referenced a key absent from all eight message files. The framework fell back to displaying the raw key, so six languages showed a camelCase identifier as a visible link label on every page of the site. French and English happened to be unaffected, which is precisely why it survived: everyone checking the site was reading the two versions that looked correct.

Subdirectories for almost everyone. One domain accumulates authority across all languages, operations stay simple, and there is one certificate and one deployment. Subdomains split authority for little benefit unless the markets are genuinely separate businesses. Country domains make sense when you need local trust signals or have legally distinct entities per market, and you should expect to build authority for each one independently, which is a far larger commitment than it looks.

Yes for commercial pages, where the slug carries a term the market actually types. Once you do, the URL stops identifying which pages belong to the same cluster, so you need an explicit key linking the versions. That is a small implementation detail which is very difficult to retrofit onto a large site, so decide it before publishing rather than after.

No, and pretending otherwise is how translation budgets get wasted. Declare alternates only for pages that genuinely exist in that language, because declaring a version that 404s or redirects breaks the cluster. It is entirely reasonable to run a full site in two languages and only the commercial pages in six others. What is not reasonable is publishing thin machine translations to fill in a matrix.

At whichever version best serves a visitor whose language matches none of your alternates. Many sites point it at their home market by reflex, which hands a reader with no other option a page they cannot read. On this site it points at English, because English is the version most likely to be understood by someone outside our declared languages and it carries most of our measured traffic.

Usually yes, and the difficulty depends entirely on how the current site is built. A site already using a proper internationalisation framework is straightforward. A site where the language was hardcoded throughout means extracting every string first, which is frequently the larger part of the work. We assess this before quoting, because the two cases differ by a wide margin and you should know which one you are.

We build the system, and we can produce native content for the languages we cover or integrate with translators you already work with. What we will not do is wire up machine translation and call the site multilingual. It ranks poorly, it reads as machine output to the people you are trying to sell to, and it wastes the technical work underneath it.

4.9/5 sur 35 avis clientsRead what our clients say

Send the site and the languages you want

Existing site or new build, and which markets matter. You get an assessment of the technical work involved and an honest read on which languages justify native content.

Request a quote
Free quote