How to Build a Multilingual Website the Right Way: hreflang, URL Structure and Common Mistakes
If your website needs to speak more than one language, running the text through a translation tool isn't enough. A clean multilingual setup decides whether Google serves the right language version to the right user - or whether your language versions end up cannibalising each other. We run seven of our own brands in production, several of them multilingual (up to six languages per project), and here we share what actually matters in practice.
Do you even need multiple languages?
The most honest question first: is it worth the effort? A multilingual website doubles or triples your maintenance workload - every new blog post, every price change, every legal notice has to be updated in each language. Only set up the languages you genuinely have demand for and can maintain over the long term.
A poorly maintained second language full of outdated content does more harm than good. When in doubt, one good language beats two half-baked ones. Also draw a clear line between language (German, English) and region (Germany, Austria, Switzerland). Often you only need language versions, not necessarily country versions.
Choosing the right URL structure
There are three common ways to represent language versions technically. All three work with Google - what matters is that you commit to one and stay consistent:
- Subdirectories (example.com/de/, example.com/en/): The best choice for most SMEs. One domain, consolidated authority, easy to manage and cheap to run.
- Subdomains (de.example.com, en.example.com): Technically clean to separate, but Google tends to treat subdomains as standalone sites - so your authority gets spread out.
- Country domains / ccTLDs (example.de, example.fr): A strong regional signal, but expensive and labour-intensive, because you have to build up each domain individually. Only worth it when you genuinely run separate country businesses.
Our clear recommendation for small and mid-sized businesses: subdirectories. They are the easiest to maintain and concentrate all your SEO power on a single domain. The only essential is that each language version has its own stable URL. Switching languages purely via cookie or JavaScript, without the URL changing, is a common and costly mistake - Google can't reliably index versions like that.
What hreflang actually does
hreflang is a signal to search engines that says: "This page has a counterpart in another language or region - please serve the matching version." It doesn't boost your ranking directly; instead, it makes sure the right user lands on the right version and that your versions don't get in each other's way as duplicate content.
You can implement hreflang in three places: in the page's , in the HTTP header or in the XML sitemap. For most projects, adding it in the is the most pragmatic option. Three rules are decisive:
- Return-reference requirement: If page A points to page B, then B must also point back to A. hreflang only works bidirectionally.
- Self-reference: Every page must also point to itself - so the German page also lists its own de version.
- Correct language codes: Use ISO codes, e.g.
de,en, or with a regionde-AT,de-CH. Ideally addx-defaultfor users whose language you don't cover.
The typical mistakes - and how to avoid them
We see these pitfalls again and again, even with technically skilled teams:
- Missing return references: The most common hreflang mistake. A one-way reference without its counterpart is simply ignored by Google.
- Wrong or invented language codes:
en-UKdoesn't exist (the correct code isen-GB), and a language like "English for Germany" rarely makes sense. - hreflang despite only partial translation: If the "English" page still contains German text in half its content, the signal is contradictory. Only point to fully translated counterparts.
- Automatic redirects based on IP or browser language: They lock users (and the Google bot) into one version. Offer a visible, manual language switcher instead.
- Machine translation without review: Pure AI translations quickly come across as unnatural and erode trust - especially in B2B. Have every language proofread by someone who genuinely speaks it.
- Forgotten fields outside the body text: Meta titles, meta descriptions, alt texts, buttons and error messages are often overlooked and left in the source language.
What else to keep in mind
Think beyond the plain text: date, currency and number formats differ from region to region. Legal texts such as your imprint and privacy policy need a correct version for each market. And plan from the outset how you'll keep content maintained - a technically perfect hreflang setup is useless if the content drifts apart.
A multilingual website isn't a one-off project but a long-distance run. If you set it up from the start with a clean URL structure, correct hreflang and a realistic maintenance plan, you'll have the foundation on which international visibility can grow over the long term.