Meertalige website SEO en hreflang best practices

Hoe je meertalige SEO opzet met hreflang, URL-structuur en lokalisatiekeuzes die duplicate content en verspild crawl budget vermijden.

globe- en language tags-metafoor sketchnote, geen tekst
Op deze pagina

Een tweede taal shippen voelt als een win tot Search Console volloopt met “Incorrect return tags” en Google Engels blijft serveren aan shoppers in Duitsland. Meertalige SEO gaat minder over strings vertalen en meer over elk market een stabiele URL geven, een duidelijk taal- of locale-signaal, en content die matcht met wat mensen daar echt kopen.

Deze gids dekt URL-structuurkeuzes, hoe hreflang werkt (inclusief reciprociteit en x-default), taal versus locale, vertaling versus lokalisatie, veelvoorkomende failure modes, crawl budget, CMS-traps, een uitgewerkt scenario, en een ship checklist.

Kies een URL-structuur voordat je iets annoteert

Hreflang wijst alleen naar URL’s. Zijn die URL’s rommelig, parameter-based of half gemigreerd, dan kunnen annotaties het project niet redden. Google’s guidance over managing multi-regional and multilingual sites zet de gebruikelijke patterns uiteen. Je kiest één primair pattern en houdt je eraan.

Pattern Voorbeeld Sterkte Kost
ccTLD example.de, example.fr Sterk country-signaal, lokaal trust Aparte sites, meer ops, link equity gesplitst
Subdomein de.example.com Duidelijke scheiding, flexibele hosting Zwakker country-signaal dan een ccTLD
Subdirectory example.com/de/ Eén domein, shared authority, simpeler CMS Country-signaal leunt meer op content en hreflang

Subdirectories winnen voor de meeste product- en content sites die nog authority opbouwen op één brand domein. ccTLD’s hebben zin wanneer legal entities, pricing of compliance echt per land verschillen en je elke site kunt bemannen. Subdomeinen zitten in het midden wanneer je aparte stacks nodig hebt (bijvoorbeeld een China-facing origin) zonder elke TLD te kopen.

Vermijd taal als query string (?lang=de). Die URL’s zijn makkelijk te dupliceren, moeilijk te delen, en awkward voor analytics. Google kan ze nog begrijpen wanneer correct geannoteerd, maar operators die met parameter locales leven, betreuren het meestal wanneer filters en campagnes botsen.

Documenteer het gekozen pattern op één plek die engineers én translators beide lezen. Later van /de/ naar de.example.com wisselen betekent een volle redirect map en hreflang rewrite. Die migratiebelasting is waarom de URL-beslissing vóór de eerste vertaalde pagina hoort.

Drie URL-patterns voor meertalige sites: ccTLD, subdomein en subdirectory

Figuur 1: Side-by-side ccTLD-, subdomein- en subdirectory-layouts voor hetzelfde merk.

Hoe hreflang echt werkt

Hreflang vertelt Google welke URL de intended version is voor een gegeven taal of taal-regio-combinatie. Het creëert op zichzelf geen rankings. Het helpt Google de juiste alternate te kiezen wanneer er meerdere near-matching pages bestaan, zodat Duitse gebruikers likelijker de Duitse URL zien wanneer die URL een geldige alternate is van de Engelse.

Je kunt alternates op drie manieren declareren die Google documenteert:

  1. HTML <link rel="alternate" hreflang="..." href="..."> in de page <head>
  2. HTTP headers voor non-HTML files (PDF’s en vergelijkbaar)
  3. XML-sitemap-annotaties voor grote catalogi

De meeste marketing sites gebruiken HTML tags of sitemap entries. Grote ecommerce catalogi prefereren vaak sitemaps zodat templates dun blijven. Kies één primaire methode voor een gegeven URL-set en houd die consistent. Partial HTML en partial sitemap-annotaties mengen voor dezelfde page set is een veelvoorkomende bron van drift.

Codes volgen BCP 47-style values die Google accepteert: een taalcode zoals en of de, optioneel met een regio zoals en-GB of pt-BR. Gebruik ISO 639-1-taalcodes en, wanneer je een regio nodig hebt, ISO 3166-1 Alpha 2-landcodes. Verzin geen shorthand zoals uk voor Engels in het Verenigd Koninkrijk (en-GB is de gebruikelijke keuze). Gebruik geen region-only codes.

Elke pagina in een set moet elke alternate listen, inclusief een self-referencing entry voor zichzelf. Als https://example.com/pricing/ Engels is en https://example.com/de/pricing/ Duits, hebben beide pagina’s (of hun sitemap-rijen) en- en de-entries nodig die naar de final, indexeerbare URL’s wijzen.

Reciproce bevestiging tussen alternates

Google’s localized-versions-documentatie is expliciet dat annotaties van de andere kant moeten worden bevestigd. Als pagina A naar pagina B wijst als de, moet pagina B terugwijzen naar pagina A als en (of wat A’s taal ook is). Eénrichtingslinks worden voor die relatie genegeerd.

Reciprociteit faalt stil wanneer een CMS tags alleen op de “primary” locale genereert, wanneer een translator een nieuwe taal publiceert zonder de oude pagina’s te updaten, of wanneer een CDN een oude head cached terwijl de live page verhuisde. Search Console’s International Targeting / hreflang-rapporten (waar beschikbaar voor jouw property) en een crawl die link[rel=alternate][hreflang] extract, vangen dit sneller dan HTML eyeballen.

Reciproce hreflang-pijlen tussen Engelse en Duitse pagina’s

Figuur 2: Elke alternate moet terugwijzen. Een éénrichtingspijl telt niet als bevestigd paar.

x-default en de unmatched visitor

x-default markeert de URL die je wilt wanneer geen van de andere hreflang-values matcht met de taal- of regio-instellingen van de gebruiker. Google beschrijft het in dezelfde localized versions-documentatie als de fallback voor unmatched languages.

Typische uses:

  • Een language chooser of global gateway page
  • Je primaire Engelse (of andere hub) URL wanneer je geen aparte chooser draait
  • Een zorgvuldig gekozen “rest of world”-storefront

x-default is niet “de pagina voor mensen die Engels spreken.” Engels heeft nog steeds zijn eigen hreflang="en" nodig (of en-US, en-GB, enzovoort). x-default kan naar dezelfde URL als en wijzen wanneer dat eerlijk is. Het kan ook naar een chooser wijzen die indexeerbaar en nuttig is. Wat het niet mag: wijzen naar een soft 404, een geo-IP redirect interstitial die nooit settlet, of een random blogpost.

Als je auto-redirect by IP doet voordat de user (of Googlebot) een stabiele URL kan zien, vecht je zowel usability als crawling. Google’s multi-regional guidance waarschuwt tegen alleen op IP leunen om content te tonen. Geef de voorkeur aan een stabiele URL per locale plus een zichtbare language switcher, en laat hreflang het matching-werk doen.

x-default als fallback wanneer taal niet matcht met en, de of fr

Figuur 3: x-default vangt bezoekers wiens taal buiten de geannoteerde set valt.

Taalcodes versus locale-codes

de betekent Duits, ongeacht land. de-DE betekent Duits zoals gebruikt in Duitsland. de-AT betekent Duits zoals gebruikt in Oostenrijk. Dat zijn verschillende intents wanneer currency, shipping, legal copy of spelling divergeren.

Gebruik language-only codes wanneer één URL eerlijk alle sprekers van die taal bedient. Gebruik language-region codes wanneer de pagina’s per market verschillen ook al lijkt de language string hetzelfde. Eén Engelse pagina voor global readers is vaak en plus x-default. Aparte UK- en US-storefronts met verschillende prijzen en spelling zijn meestal en-GB en en-US, elk met een eigen URL.

Creëer geen en-US- en en-GB-duplicates die alleen verschillen door een flag-icoon en een CDN-edge. Hreflang kan geen meaningful difference verzinnen. Zijn de pagina’s near-identical, consolideer of lokaliseer proper.

Script en regionaal Chinees vragen zorg. Simplified Chinese voor mainland-audiences en Traditional Chinese voor Taiwan of Hong Kong zijn verschillende leeservaringen. Geef de voorkeur aan distincte URL’s en precieze codes (zh-Hans, zh-Hant, of region forms die je stack consistent ondersteunt) in plaats van één zh-pagina die scripts mengt. Wat je ook kiest, houd dezelfde code-family over HTML, sitemaps en de language switcher.

Language-only tags versus language-region locale tags

Figuur 4: Taalcodes dekken sprekers breed. Locale-codes pinnen een market wanneer content echt verschilt.

Waar vertaling stopt en lokalisatie begint

Machine- of menselijke vertaling die woorden swapped terwijl USD, US shipping matrices, US case studies en US legal footers blijven staan, underperformt zelfs als hreflang perfect is. Lokalisatie verandert het commercial surface. Currency, tax display, payment methods, support hours, trust signals, voorbeelden en regulatory text hebben allemaal een market pass nodig.

Voor SEO specifiek omvat lokalisatie ook:

  • Titles en meta descriptions geschreven voor hoe mensen in die taal zoeken, in plaats van een calque van het Engelse keyword
  • Interne links die binnen dezelfde-taal hub blijven wanneer een equivalent bestaat
  • Images en screenshots met lokale UI of captions waar het ertoe doet
  • Dunne “coming soon”-locale shells skippen die nog als full alternates worden geannoteerd

Is een market niet ready, laat die buiten hreflang tot de pagina echt equivalent is. Een placeholder als fr annoteren leert Google dat de Franse alternate zwak is.

Best practice: Ship minder locales die commercieel complete zijn voordat je tien half-vertaalde folders over de sitemap spray’t.

Lokalisatielagen voorbij raw translation: currency, legal, voorbeelden, search phrasing

Figuur 5: Voorbij word swap. Currency, proof points en legal surfaces krijgen ook een market pass.

Veelvoorkomende hreflang- en international SEO-failures

Deze duiken op in bijna elke meertalige crawl review.

Broken reciprocity. Nieuwe locales launchen met tags die de oude talen listen, maar de oude talen worden nooit geüpdatet. Fix met één source of truth (build step of CMS-field) die de volle alternate set op elke locale regenerates.

Verkeerde codes. eng, uk, zh-CN inconsistent gemengd met zh-Hans, of region codes waar language intended was. Valideer tegen de code list die je in het URL-doc gestandaardiseerd hebt.

Non-canonical of non-indexable URL’s annoteren. Hreflang moet naar de final preferred URL wijzen. Canonicalize’t de Duitse pagina naar Engels, of return’t noindex, liegt de alternate set. Fix eerst canonical en indexatie.

HTTP- en HTTPS-mixen, of www- en non-www-mixen. Elke href in de alternate set moet dezelfde host en protocol gebruiken die je als canonical koos.

Partial coverage. Alleen de homepage heeft hreflang terwijl product templates dat niet hebben. Of alleen de sitemap heeft entries terwijl HTML ze tegenspreekt. Dek de templates die traffic verdienen, end to end.

Language switchers die parameter duplicates creëren. Een switcher die ?currency=EUR bovenop /de/ toevoegt zonder canonical discipline vermenigvuldigt near-duplicates en verspilt crawl.

Auto-redirect loops. Detecteer language, 302 naar een andere folder, dan stuurt een andere regel de bot elders. Geef Googlebot een 200 op een stabiele locale-URL.

Waarschuwing: Hreflang-errors gooien zelden een zichtbare on-page bug. Users kunnen nog browsen terwijl Google de alternate map negeert. Behandel Search Console en crawl diffs als monitoring surface.

Veelvoorkomende failure-iconen: one-way tags, bad codes, noindex targets, mixed hosts

Figuur 6: De gebruikelijke breakages zijn reciprocity, codes, indexability en host inconsistency.

Crawl budget op meertalige sites

Elke nieuwe locale vermenigvuldigt URL-count. Dat kan fine zijn wanneer pagina’s unique en gelinkt zijn. Het doet pijn wanneer je dunne templates clonet, faceted filters in elke taal, en tag-archieven die niemand vertaald wilde.

Crawl budget is geen mystieke score. In de praktijk zorg je of Googlebot tijd besteedt aan money URL’s of aan junk. Meertalige junk ziet eruit als:

  • Vertaalde filtercombinaties die duizenden near-empty listings creëren
  • Gepagineerde archieven van dunne posts in elke taal
  • Staging of preview locales die nog vanuit de footer gelinkt staan
  • Alternates die 404 of soft-404 na een CMS publish failure

Consolideer of noindex de low-value surfaces in elke locale net zoals je in een monolinguale audit zou doen. Houd sitemaps beperkt tot canonieke, 200, indexeerbare URL’s die in de alternate map horen. Voeg je een taal toe, voeg alleen de templates toe die je kunt onderhouden.

Interne links moeten same-locale paths prefereren. Een Duits artikel dat alleen naar Engelse category hubs linkt, forceert extra hops en verdunt de language cluster.

Crawl-paden die money locale URL’s prefereren boven dunne vertaalde filters

Figuur 7: Meer talen betekenen meer URL’s. Preferer crawl op commercial templates boven vertaalde filter noise.

CMS- en plugin-pitfalls

WordPress, Shopify, Webflow, custom Next.js-apps en enterprise CMS’en groeien hreflang-bugs allemaal anders. Het pattern eronder is hetzelfde: het systeem dat de pagina rendert is niet het enige systeem dat denkt dat het alternates bezit.

Let op:

  • Twee plugins die beide link rel="alternate" printen en het oneens zijn
  • Een headless CMS dat locale slugs opslaat terwijl de front end paden anders herschrijft in productie
  • Sitemap-plugins die elke locale listen terwijl HTML tags een subset listen
  • “Hreflang”-modules die self-references weglaten
  • Copy-to-new-locale workflows die noindex of staging canonicals clonen
  • CDN- of reverse-proxy-lagen die andere HTML aan bots serveren dan aan users (zeldzaam wanneer intentioneel, rommelig wanneer per ongeluk)

Voor website internationalization-werk: behandel hreflang als release checklist-item dat je bij elke major change revalideert. Vooral op WordPress multilingual stacks: verifieer de live HTML van een money page in elke locale na elke major plugin- of theme-update.

Genereer je tags in de app, voeg een CI-check of crawl assert toe die expected alternates per template telt. Manual spot checks missen de tiende taal.

CMS-lagen die conflicteren over hreflang-output: theme, plugin, sitemap, CDN

Figuur 8: Themes, plugins, sitemaps en CDN HTML kunnen elk een ander alternate-verhaal emitteren.

Implementation path die release day overleeft

Een duurzame rollout ziet er zo uit.

  1. Freeze het URL-pattern en de lijst van locales die commercieel ready zijn.
  2. Map equivalents in een spreadsheet of database. Elke rij is één content unit. Kolommen zijn locale-URL’s. Lege cellen betekenen “nog geen alternate” (weglaten uit hreflang tot gevuld).
  3. Kies HTML, HTTP of sitemap als source of truth voor die templateklasse.
  4. Genereer self-referencing, reciproke tags inclusief x-default waar je een deliberate fallback hebt.
  5. Align canonicals zodat elke locale-URL naar zichzelf canonicalize’t wanneer die geïndexeerd moet worden.
  6. Update language switchers zodat elke locale naar zijn gemapte equivalent linkt in plaats van de homepage te gokken.
  7. Submit of refresh sitemaps in Search Console voor elke property die je managed.
  8. Crawl en diff na deploy. Fail de release als reciprocity of code validation faalt op money templates.
  9. Monitor Search Console op hreflang-issues en op onverwachte country- of language landing patterns in performance-rapporten.

Google’s documentatie voor localized page versions is de normative reference voor tag syntax en reciprocity. Third-party validators helpen, en de officiële regels beslissen nog steeds wat Google accepteert.

Implementation-stappen van URL freeze tot crawl validation

Figuur 9: Map eerst equivalents, genereer reciproke tags, valideer daarna met een crawl na deploy.

Uitgewerkt scenario voor een SaaS-site die Duits en Frans toevoegt

Acme ship’t een B2B analytics-product op https://www.acme.example/ met blog en pricing in het Engels. Marketing wil Duits en Frans voor EU-expansie. Engineering prefereert één domein. Ze kiezen subdirectories: /de/ en /fr/.

Ze vertalen niet elk oud blog-tagarchief. Ze lokaliseren homepage, pricing, product overview, docs entry points, en de twintig posts die nog pipeline verdienen. Legal schrijft een EU-ready privacy addendum. Pricing toont EUR met VAT-notes waar vereist. Case studies swappen EU-logos waarvoor ze echt permission hebben.

Equivalent map (vereenvoudigd):

Unit en de fr
Home / /de/ /fr/
Pricing /pricing/ /de/pricing/ /fr/pricing/
Product /product/ /de/product/ /fr/product/

Elk van die zes URL’s (plus self) emitted en, de, fr, en x-default wijzend naar de Engelse home of een kleine region chooser die ze indexeerbaar houden. Blogposts die alleen in het Engels bestaan, laten de/fr weg tot vertaald. Ze wijzen nooit Duitse home naar een Franse pricing-URL.

Week één na launch vindt een crawl dat Engelse pricing de nieuwe alternates nog mist omdat de caching layer een oude head serveerde. Ze purgen, hercrawlen, en bevestigen reciprocity. Search Console stopt met return-tag errors rapporteren op die URL’s na processing.

Ze meten success als Duitse en Franse queries die landen op /de/- en /fr/-money pages. Indexed URL-count alleen is hier een zwakke success metric.

SaaS-site die /de/ en /fr/ toevoegt met gemapte home-, pricing- en product-URL’s

Figuur 10: Acme mapt een paar complete equivalents, ship’t reciproke tags, en skip’t dunne archive-vertaling.

Meertalige SEO-checklist

Gebruik dit voordat je het project done noemt.

  • Eén gedocumenteerd URL-pattern (ccTLD, subdomein of subdirectory) consistent gebruikt
  • Alleen commercieel ready locales zijn live en geannoteerd
  • Elke geannoteerde URL return’t 200, is indexeerbaar, en self-canonicalize’t wanneer die moet ranken
  • Hreflang-codes matchen jouw language vs locale-beleid (de vs de-DE, enzovoort)
  • Volle alternate set op elke member page of sitemap-rij, inclusief self-references
  • Reciproce bevestiging over de set
  • x-default wijst naar een intentionele fallback
  • Language switcher linkt naar echte equivalents zonder parameter duplicates te spawnen
  • Sitemaps listen alleen canonieke locale-URL’s die je wilt crawlen
  • Dunne vertaalde filters, tags en staging locales zijn buiten de alternate map
  • Post-deploy crawl valideert tags op money templates
  • Search Console properties en sitemaps bijgewerkt voor de hosts die je managed

Checklist-klembord voor meertalige SEO- en hreflang-launch readiness

Figuur 11: Launch readiness dekt URL’s, codes, reciprocity, indexability en post-deploy validation.

Veelgestelde vragen

Heb ik hreflang nodig als ik maar één taal heb?

Nee. Hreflang is voor alternate language- of locale-versions van dezelfde content. Een single-language site moet focussen op schone canonicals en crawl access. Decoratieve hreflang die nergens nuttig heen wijst, creëert alleen monitoring noise.

Kan hreflang duplicate content op zichzelf fixen?

Het helpt Google de juiste alternate te selecteren onder geldige versions. Het vervangt geen canonical discipline, en het rehabiliteert geen dunne gekopieerde pagina’s. Fix eerst duplicates en quality, annoteer daarna de echte equivalents.

Moet elke blogpost in elke taal bestaan?

Alleen als je ze zult onderhouden. Partial coverage is fine. Annoteer de talen die voor die unit bestaan en laat de rest van de alternate list tot ze shippen.

Is een ccTLD altijd beter voor international SEO?

Nee. Een ccTLD is een sterk country-signaal en vaak een trust-signaal voor lokale users, maar kost meer om te opereren en splitst authority tenzij je in elk property investeert. Veel global brands doen het goed met subdirectories plus correcte hreflang. Kies vanuit legal-, hosting- en resourcing-constraints in plaats van een vuistregel uit een forum thread.

Waar moet ik hreflang zetten voor een grote catalogus?

XML-sitemaps schalen beter wanneer je tienduizenden SKU’s hebt. Houd de sitemap entries gesynchroniseerd met canonieke product-URL’s. Spot-check HTML als je stack ook head tags print, en verwijder conflicts.

Wat is het verschil tussen hreflang en een content-language meta tag?

Hreflang mapt alternate URL’s voor talen en regio’s voor Google Search. Een content-language meta tag is geen substitute voor die map. Volg Google’s localized versions-mechanisme voor alternates.

Afsluiting

Meertalige SEO houdt stand wanneer URL’s stabiel zijn, locales echte producten zijn, en hreflang een reciproke map van die URL’s is. Teams die struggelen, annoteerden meestal eerst en lokaliseerden later, of lieten een plugin tags emitteren die niemand revalideerde na de derde taal.

Plan je een locale rollout of ruim je een bestaande alternate map op, dan kun je me bereiken via het formulier.