Hreflang for Multilingual Sites: How to Write the Tags, Regional Pages, and Common Mistakes
1. What hreflang actually does: a hint, not a command
Let’s clear up the most common misunderstanding first: hreflang does not force Google to show a given version to users in a given region. It only tells Google “these URLs are the same content in different languages, so pick the one that best matches the user’s language.” Google may still choose what it considers a better fit based on other signals (search terms, links, local authority). hreflang just improves the odds of getting it right.
For B2B companies going global with multilingual sites, hreflang solves two specific problems: when a German user searches in German, don’t show them the English page; when a French-speaking Belgian user searches in French, don’t show them the France French or Canadian French page. The classic failure looks like this: a German user sees an English title in the SERP, clicks, and gets 301-redirected to the German page. That redirect costs you half your click-through rate.
| Common Misconceptions | Actual behavior | Consequence |
|---|---|---|
| hreflang forces regional display | It’s only a hint; Google has discretion | Mistakes don’t affect indexing, only matching |
| Once you have hreflang, you don’t need translations | Content must be genuinely translated; machine translation doesn’t count | Google detects automatically translated content |
| You can just put hreflang in the footer | It must go in the head, an HTTP header, or the sitemap | The footer isn’t crawlable |
| One domain per language | One domain can host multiple language versions | Split languages by subdirectory or subdomain |
Quality gates for multilingual sites are stricter than for single-language ones. If your translation quality isn’t up to standard, it’s better not to launch at all. See Quality Gates for Launching Multilingual Content. Multilingual strategy in the GEO era goes beyond English. See Multilingual GEO Goes Beyond English.
2. URL Structure: Subdirectories Beat Subdomains Beat Standalone Sites
Pick your URL structure before you touch hreflang. Get this wrong and you’ll spend the rest of the project patching holes.
| Structure | Example | SEO Authority Flow | Maintenance cost | Use cases |
|---|---|---|---|---|
| Subdirectory | example.com/de/, example.com/fr/ | Concentrated on the main domain, strongest | Minimum | The default choice for most B2B websites |
| Subdomains | de.example.com, fr.example.com | Split, each needs its own authority | Medium | When you already run a separate brand per country |
| Independent Site | example.de, example.fr | Fully independent, each needs its own backlinks | Highest | Heavy localization needs, dispersed teams |
| Parameter-based | example.com?lang=de | Not recommended, high duplicate content risk | Low but risky | Don’t use |
90% of B2B teams going global should use subdirectories. Why: authority concentrates on the main domain, hreflang is simpler to maintain, and you only configure one set of CDN and HTTPS certificates. Subdomains are only worth it if you’ve already built a separate brand and backlink profile for a specific country market. Standalone sites only make sense if you have a real local entity, local team, and local content production in Germany or France. For where country landing pages end and doorway pages begin, see Country Landing Pages vs. Doorway Pages: The Red Line.
3. Markup: Three Ways to Implement It
There are three ways to implement hreflang. Pick based on your situation.
| Method | Where It Goes | Best for | Priority |
|---|---|---|---|
| HTML link tag | In the head of every page | Dozens to hundreds of pages | First choice |
| XML sitemap | Add xhtml:link in the sitemap | Thousands of pages or more | Best for large scale |
| HTTP response header | Server returns a Link header | Non-HTML documents like PDFs | Supplementary |
The standard HTML link tag setup: in the head of every language version, list all versions (including itself) and x-default. Take English, German, and French versions as an example. The English page’s head must contain:
link rel=”alternate” hreflang=”en” href=”https://example.com/”, link rel=”alternate” hreflang=”de” href=”https://example.com/de/”, link rel=”alternate” hreflang=”fr” href=”https://example.com/fr/”, link rel=”alternate” hreflang=”x-default” href=”https://example.com/”. The German and French pages must carry the same complete list, with URLs matching exactly.
Use ISO 639-1 two-letter language codes, plus an ISO 3166-1 country code when needed: en for generic English, en-GB for British English, de-AT for Austrian German, zh-CN for Simplified Chinese, zh-TW for Traditional Chinese. Don’t use incomplete codes like cn or zh.
4. Checklist of Five Common Mistakes
90% of hreflang failures come down to these five mistakes. Check them one by one.
| Mistake | How to check | Consequence | Fix Timeline |
|---|---|---|---|
| One-way reference | The English page points to German, but the German page doesn’t point back | The whole group stops working | Fix the same day |
| Missing x-default | No fallback page found | Users with unknown languages may see the English version | Add it the same day |
| Wrong language code | cn should be zh-CN; zh is too broad | Matching errors | Correct it the same day |
| Missing self-reference | A page doesn’t list its own hreflang | That version drops out of group selection | Add it the same day |
| Inconsistent URLs | http/https, trailing slashes, inconsistent capitalization | treated as different URLs, breaking the group | Rewrite after normalization |
| Circular reference error | A points to B, B points to C, C points to A, but A doesn’t point to C | Google can’t form the group | Rewrite the whole group |
One tool helps you check this fast: Search Console’s International Targeting report lists every error within 7 days of launch, including “no return tag” and “return tag not found.” Export the error list and fix page by page until the report shows zero. On multilingual sites, number and table localization has to stay in sync with hreflang, see Multilingual number, table, and unit localization. Consistent glossary management is a prerequisite for translation quality, see MTPE glossary workflow.
5. The line between regional pages and multilingual versions
B2B companies going global often confuse two things: multilingual versions (the same content in different languages) and regional landing pages (content written specifically for a region).
| Dimension | Multilingual versions | Regional landing pages |
|---|---|---|
| Content | Translated from the same source | Written specifically for the local market |
| URL | Language subdirectories like /de/, /fr/ | Regional subdirectories like /us/, /mena/ |
| hreflang | Required | Can use x-default or a region code |
| Risk | Poor translation quality | Doorway page penalty |
| Example | English product page translated into German | “Buying Guide for Middle East Buyers” |
Key red line: regional landing pages must have genuinely localized content (local certifications, local case studies, local payment methods) — not just an English page with a swapped headline. For how doorway pages are judged and where the red line sits, see Country Landing Pages vs. Doorway Pages: The Red Line. For market priorities, start with English, the EU, the Middle East, and Latin America, see Go-to-market priorities English EU Middle East North Africa Latin America.
6. Launch checks and monitoring cadence
| Steps | Tools | Timeframe | Pass criteria |
|---|---|---|---|
| Local code review | Check the head template by template | Before submitting | All three language versions reference each other completely |
| URL normalization | canonical and hreflang match | Before submitting | No http/https conflicts |
| Verify after deployment | Rich Results Test or an hreflang tool | Launch day | All 4 tags complete in each group |
| Search Console | International Targeting report | Days 7 and 14 | Zero errors |
| Quarterly spot check | Check in sync when new pages go live | Every release | New templates inherit the hreflang logic |
During a site migration or redesign, hreflang is the part new templates most often drop, so regression-test it together with Migration 301s and SEO preservation. When new pages go live, build hreflang output logic into the dev template — don’t rely on ops to add it by hand.
FAQ
Final thoughts
hreflang for a multilingual site is classic “the details make or break it” work: one wrong character or one missing reciprocal link and the whole set fails, and by the time you see it in Search Console it may be two weeks after launch. Make it a templated process. Have your developer build the hreflang output logic into the template, so when ops adds a language they just fill in the URL list instead of relying on memory.
Three steps to get there: this week, audit your existing multilingual templates against the checklist of five error types; next week, confirm zero errors in the International Targeting report in Search Console; the third week, add an hreflang check to your new page launch process. Once those three steps are done, your multilingual site will finally start serving buyers in every country.
One line worth remembering: hreflang is a translation index for Google. List every version, point them at each other, and add a fallback, and only then will it send German buyers to the German page.
