SEO for Multilingual Websites

SEO for Multilingual Websites: The Complete Guide

A translated website and a multilingual SEO strategy are not the same thing. Plenty of sites run every page through a translation tool, publish it, and still stay invisible outside their home market — because search engines were never told which page serves which audience, and the words on the page don’t match how people in that market actually search.

This guide covers what actually determines whether your translated content ranks: URL structure, hreflang implementation (with the actual code), content localization versus translation, and the market-specific keyword research that a translation tool can’t do for you.

The short version: Multilingual SEO works when three things align — a clean URL structure per language, correctly implemented hreflang so Google shows the right version to the right searcher, and content written for how that market actually searches, not translated word-for-word from your source language.

What is multilingual SEO, and how is it different from regular SEO?

Multilingual SEO is the process of optimizing a website so each language version ranks in its own market’s search results — not just existing, but actually surfacing for the searches people run in that language. It combines three layers that regular single-language SEO doesn’t need to think about: a URL structure that clearly separates languages, technical signals (hreflang, sitemaps) that tell search engines which version serves which audience, and keyword research done separately per market rather than translated from one source list.

The stakes are real: roughly half of all web content is in English, while English is the native language of a much smaller share of internet users worldwide — a gap that represents real search demand nobody’s serving in the visitor’s own language.

Choosing a URL structure: subdirectories, subdomains, or ccTLDs

This decision is close to permanent once you’ve built content on it, so it’s worth getting right before scaling to more languages.

Structure Example Best for
Subdirectory example.com/de/ Most sites — all versions stay under one domain, which simplifies link consolidation, site maintenance, and hreflang setup
Subdomain de.example.com Teams that need a genuinely separate tech stack or CMS per market; Google can associate a subdomain with its main domain, but links and ranking signals aren’t automatically shared between them the way they are within a single domain
ccTLD example.de Brands with a strong country-specific identity or a regulatory reason to localize the domain — each ccTLD needs its own link building, promotion, and technical maintenance, separate from your main domain

Subdirectories win for most sites for a practical reason, not a mystical one: keeping every language under one domain means one site to maintain, one place for links to consolidate, and the simplest possible hreflang setup. A subdomain or ccTLD isn’t penalized for being separate, but it does mean starting essentially every off-page effort — links, citations, local trust signals — again for that version.

Choosing a URL Structure

Hreflang tags: what they actually do, and how to write them

Here’s the detail most guides get slightly wrong: Google doesn’t use hreflang to detect what language a page is written in — it determines that algorithmically from the actual content. What hreflang does is tell Google which of your pages are equivalent versions of each other, so it can serve the correctly matched version to a searcher instead of, say, showing your French page to someone searching in German. Google’s own documentation is explicit about this distinction.

A basic HTML implementation, placed in the <head> of every version, looks like this:

<link rel="alternate" hreflang="en" href="https://example.com/en/" />
<link rel="alternate" hreflang="de" href="https://example.com/de/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/" />

Every version needs the complete set of tags, including a tag pointing to itself — the German page lists the German, English, and x-default tags, and so does the English page.

Language codes versus region codes

A language code alone (en, de) targets everyone who reads that language, regardless of location. Adding a region code narrows it: en-US targets English speakers in the United States specifically, en-GB targets English speakers in the UK. If you serve both a US and UK audience with different pricing or spelling conventions, use the region-specific codes for those two plus a generic en as the catch-all for English speakers elsewhere. Codes must follow ISO 639-1 for language and ISO 3166-1 Alpha-2 for region — reserved or informal codes like “EU” or “UK” (the actual code is “GB”) aren’t valid and get silently ignored.

x-default: the fallback

x-default tells Google which version to show a visitor whose language doesn’t match any version you offer — most useful on a homepage with a language/country selector, pointing unmatched visitors somewhere sensible rather than guessing.

Every implementation needs these three things to actually work:

  • Return tags on every page. If your German page links to the English version, the English version must link back to the German one. Google ignores one-directional hreflang annotations entirely — this is the single most common cause of hreflang “not working.”
  • Valid language and region codes, as above.
  • One consistent method. Hreflang can be declared via HTML tags, HTTP headers, or an XML sitemap — all three are equally valid to Google, but mixing more than one across your site multiplies the chances of the methods disagreeing with each other. Pick one and use it everywhere.
Common multilingual SEO mistake: Adding hreflang tags only on the pages you just translated, without updating the older pages to link back. A missing return tag doesn’t just weaken the annotation — Google discards the whole pair, so both pages lose the benefit.

Hreflang and canonical tags

Each localized page should normally use a self-referencing canonical. The German page should canonicalize to the German URL, while the English page should canonicalize to the English URL. Pointing every translated page to the original English page can cause Google to treat the localized URLs as duplicates and ignore the hreflang signals attached to them.

Only include indexable, canonical URLs in a hreflang cluster. Redirected, blocked, noindex, or non-canonical URLs can prevent the implementation from working as expected.

Hreflang and Canonical Tags

One language per page

A page with translated body text but an English navigation menu, or a comment section mixing three languages, sends a confused signal about what language the page actually is — and it reads just as badly to a human visitor. Keep navigation, footer, pop-ups, and user-generated content in the same language as the page itself wherever you can moderate it. Internal links should point to same-language pages: a German blog post linking to an English resource page breaks the language signal for both the visitor and the crawler.

For the language switcher itself: use language names (“Deutsch”, “Français”) rather than flags, since a flag represents a country, not a language — French is spoken well outside France, German well outside Germany. And make sure switcher links are real, crawlable HTML anchors, not JavaScript-only click handlers a crawler can’t follow.

Translation isn’t localization

A page can be grammatically perfect in the target language and still miss the market — because the words that convert in one language aren’t a direct translation of the words that convert in another. Search behavior itself varies by market: some audiences respond to direct comparisons and specs, others expect more context and social proof before they’ll trust a claim. A literal translation carries the sentences over; it doesn’t carry over which claims the reader actually needs to see first.

In practice, the workflow that scales without ballooning cost is machine translation as the baseline, with human review concentrated on the pages that actually decide conversions — homepage, top category or service pages, and anything ranking for commercial-intent terms. Let the baseline translation cover long-tail content; spend the review budget where it changes outcomes.

Translation Isn’t Localization

Keyword research per market — not translated keywords

Directly translating your best-performing keyword list is one of the most common ways multilingual SEO underperforms, because search volume and intent don’t move together across languages. A term can translate perfectly and still carry a completely different search volume, or point to a different intent altogether, in the target market — sometimes a technically accurate translation is barely searched at all, while a looser, more natural local phrase carries the real volume. The only way to know which is to run keyword research fresh in each target language, using a local-market keyword tool rather than a translated seed list, and to check the actual search results for that term before committing content to it.

Metadata and structured data need translation too

Title tags, meta descriptions, and alt text are exactly what a searcher sees before they click — an untranslated title next to translated body content tells a searcher in one glance that this page wasn’t built for them, and click-through rate reflects that immediately. Character limits also shift by language: German titles routinely need more characters than English to say the same thing, and CJK languages behave differently again, so metadata needs its own pass per language rather than a length check done once in the source language.

Structured data follows the same logic, with one nuance worth being precise about: schema.org property names — name, description, offers — stay in English regardless of page language, since they’re part of the vocabulary itself, not content. It’s the values you assign to those properties that need to match the page: a German product page should have a German product name and description as the value of name and description, not English ones. And keep expectations realistic about what schema can do more broadly — not every schema.org type maps to an actual Google-supported rich result, so check Google’s supported feature list before assuming a given markup will change how a page displays in search.

Technical foundations: sitemaps

An XML sitemap with hreflang annotations is one of three equally valid ways to declare hreflang — alongside HTML tags and HTTP headers — useful mainly when you’d rather manage language signals in one central file than edit every page’s <head>. It doesn’t rank above the other two methods technically; pick whichever fits your site’s setup and stick to it, since running more than one method at once is what usually introduces contradictions between them.

For monitoring, Google Search Console doesn’t split your language versions into separate properties automatically — that’s a setup step you do yourself. For easier per-language monitoring, you can create separate URL-prefix properties for individual language directories or subdomains (one for example.com/de/, another for example.com/en/), which lets you track indexing and performance for each language independently.

Is your hreflang setup actually working?

Klucco can audit your international SEO setup — hreflang, URL structure, and indexing — across every language version, then turn the findings into a prioritized plan.

Explore Klucco SEO Services →

Building authority in each market

Links carry topical and language relevance that doesn’t automatically transfer across markets — a link from a well-known publisher in your home market simply isn’t seen by the same audience as a link from a mid-sized industry site in your target market, and relevance to that market’s readers is what matters for that version’s visibility. Republishing your best-performing content for a new market and pitching it to that market’s own publications, forums, and industry blogs usually earns links a source in your original language never would. Keep hreflang tight while you do this: a page that earns strong local links but sends visitors to the wrong language version through a misconfigured tag wastes the link equity it just earned.

Site speed across every language version

Multilingual sites carry speed risks that single-language sites don’t: extra page weight from translation scripts or plugins, hosting that’s geographically distant from some of your audiences, and localized images that weren’t optimized separately from the source version. Test Core Web Vitals per language version rather than once on the source language — performance can genuinely differ between versions on the same site, especially if a CDN isn’t configured to serve every region equally well.

From our experience: hreflang and bilingual content for DACH and US markets

We handle hreflang implementation and bilingual content structuring for clients operating across both DACH and US markets — two audiences that search differently even in cases where a literal translation would look identical on the page. The recurring pattern we see: sites that treat the German version as a translation pass on the English site consistently underperform sites where the German content was researched and structured as its own market from the start, with its own keyword research and its own internal linking, tied together correctly through hreflang rather than left as two disconnected sites that happen to share a domain.

Pre-launch checklist

Check How to verify
Every language version has complete hreflang tags, including a self-referencing one View source or use a hreflang validator on each language homepage
Return tags are in place both directions Confirm the English page links back to German and vice versa, not just one direction
Only one hreflang method is in use sitewide Check you’re not declaring hreflang via HTML tags on some pages and sitemap on others
Metadata is translated, not just body content Check title tags and meta descriptions in each language’s search preview, not just the page itself
Language switcher links are crawlable HTML Disable JavaScript and confirm the switcher links still appear in the page source
Each language version is registered in Search Console Set up URL-prefix properties per language directory or subdomain if you want separate reporting
Keyword targets were researched per market, not translated Confirm search volume for target keywords in that market’s own keyword tool, not carried over from the source list

Common Multilingual SEO Mistakes

  • Adding hreflang only on new pages without updating older pages to link back (missing return tags).
  • Declaring hreflang through more than one method (HTML tags and sitemap) and letting them drift out of sync.
  • Translating a keyword list directly instead of researching search volume and intent per market.
  • Leaving navigation, footers, or pop-ups untranslated on an otherwise translated page.
  • Using flags instead of language names in the language switcher.
  • Auto-redirecting visitors by IP or browser language with no crawlable alternate URLs behind it.
  • Leaving metadata (titles, meta descriptions, alt text) untranslated while the body content is fully localized.

Not sure which language version is losing visibility?

Send us your hreflang setup and we’ll tell you exactly what’s broken, in a call — no generic checklist, just your actual implementation.

Book a Hreflang Review →

Frequently Asked Questions

Does Google penalize duplicate content across language versions?
No — Google expects the same content to appear across multiple language versions for different audiences, and doesn’t treat that as duplicate content. The risk only appears when the main content itself stays untranslated (only navigation or a template is translated) or when Google can’t tell which version is meant for which audience, typically because hreflang is missing or broken.
Does hreflang tell Google what language a page is in?
No. Google determines a page’s language algorithmically from the actual content, not from hreflang or the HTML lang attribute. Hreflang’s job is different: it tells Google which pages are equivalent versions of each other so it can serve the right one to the right searcher.
What’s the difference between hreflang=”en” and hreflang=”en-US”?
“en” targets English speakers regardless of location. “en-US” narrows that to English speakers specifically in the United States. Use the region-specific code when content genuinely differs by region — pricing, spelling, or regulations — and a plain language code as the catch-all for that language everywhere else.
Should I use subdirectories, subdomains, or a country-code domain?
Subdirectories (example.com/de/) work best for most sites, since keeping every language under one domain simplifies link consolidation and hreflang setup. Subdomains or ccTLDs make sense mainly when you need a genuinely separate tech stack per market, or when a strong country-specific brand identity or regulatory requirement calls for a local domain — just budget for separate link building and maintenance on each one.
Can I just translate my best keywords into the target language?
Not reliably. Search volume and intent don’t move together across languages — a technically correct translation of a keyword can carry a fraction of the search volume of a looser, more natural local phrase, or point to a completely different intent. Run keyword research fresh in each target market rather than translating a source list.
Do I need a native speaker to review translated content?
For the pages that decide conversions — homepage, core service or category pages, anything ranking for commercial-intent terms — yes, a native-market review catches phrasing, tone, and claims that a literal translation gets technically right but market-wrong. Machine translation can reasonably cover lower-priority, long-tail content where the cost of a human pass doesn’t justify the traffic at stake.

Klucco