Een canonical tag vertelt Google welke URL de voorkeursversie is als dezelfde of bijna dezelfde content op meerdere URL's staat. Het is een hint, geen richtlijn: Google kiest zelf, en negeert je canonical als andere signalen iets anders zeggen.
Een canonical tag vertelt Google welke URL de voorkeursversie is als dezelfde of bijna dezelfde content op meerdere URL's staat. Het is een hint, geen richtlijn: Google kiest zelf, en negeert je canonical als andere signalen iets anders zeggen. De meeste canonical-problemen in webshops ontstaan dan ook niet door een ontbrekende tag, maar door tegenstrijdige signalen.
Hoe Google een canonical kiest
Voordat we de fouten langslopen: de canonical tag is één signaal tussen meerdere. Google kijkt ook naar:
- Redirects naar de URL.
- Interne links: naar welke versie link je zelf?
- XML-sitemaps: welke versie staat erin?
- HTTPS boven HTTP.
- Hreflang-annotaties.
- De content zelf: lijken de pagina's echt op elkaar?
Wijzen die signalen allemaal dezelfde kant op, dan volgt Google je canonical vrijwel altijd. Spreken ze elkaar tegen, dan kiest Google zelf. In Search Console zie je dat als "Duplicaat, Google heeft een andere canonieke versie gekozen dan de gebruiker".
Een correcte canonical ziet er zo uit:
<link rel="canonical" href="https://www.voorbeeldshop.nl/hardloopschoenen/model-x" />
Absolute URL, juiste protocol, juiste host, in de , één keer per pagina.
Fout 1: canonical naar een URL die niet indexeerbaar is
De canonical wijst naar een URL die een 301, een 404 of een noindex teruggeeft. Of naar een URL die in robots.txt geblokkeerd is.
Dit ontstaat vaak na een migratie of na het hernoemen van een categorie. De URL rewrite is aangepast, maar ergens in een template of extensie wordt de canonical nog uit oude data opgebouwd.
De fix: crawl je shop en controleer voor elke canonical-URL of die een 200 teruggeeft, indexeerbaar is en naar zichzelf canonicaliseert. Een canonical-doel moet een eindstation zijn, geen tussenstop. Bij een migratie hoort deze controle in de checklist, zie onze pagina over SEO bij een webshop-migratie.Fout 2: gepagineerde pagina's canonicaliseren naar pagina 1
Pagina 2, 3 en 4 van een categorie krijgen een canonical naar pagina 1. Dat lijkt logisch, want het is "dezelfde categorie". Het is het niet: pagina 2 toont andere producten.
Het gevolg kan zijn dat Google de producten op diepere pagina's minder goed vindt, omdat het de links op die pagina's minder gewicht geeft of de pagina's minder vaak crawlt.
De fix: elke gepagineerde pagina krijgt een zelfverwijzende canonical.?p=2 canonicaliseert naar ?p=2. Google gebruikt rel="next" en rel="prev" niet meer als indexeringssignaal, dus die lossen dit ook niet op. Meer in ons artikel over paginering en SEO.
Fout 3: canonical gebruiken als oplossing voor faceted navigation
Elke filtercombinatie krijgt een canonical naar de ongefilterde categorie. Daarmee is het duplicate content-probleem "opgelost".
Twee problemen:
- Een canonical bespaart geen crawlbudget. Google moet elke filter-URL crawlen om de canonical te zien. Bij duizenden combinaties gaat daar veel crawltijd naartoe.
- Sterk afwijkende content wordt genegeerd. Een gefilterde pagina met 12 rode jurken lijkt niet op een categorie met 400 jurken. Google kan dan besluiten je canonical te negeren en de filter-URL toch te indexeren.
Fout 4: canonical en noindex op dezelfde pagina
Een pagina heeft een canonical naar URL B en tegelijk een noindex. Dat zijn twee tegenstrijdige boodschappen. De canonical zegt "deze pagina is een kopie van B, voeg de signalen samen". De noindex zegt "verwijder deze pagina uit de index".
Google heeft aangegeven dat deze combinatie af te raden is. Het risico is dat Google de noindex doortrekt naar de canonieke URL.
De fix: kies. Is het een duplicaat van een andere pagina, gebruik dan alleen de canonical. Wil je de pagina helemaal niet in de index, gebruik dan alleen noindex, met een zelfverwijzende canonical of geen canonical.Fout 5: inconsistente URL-varianten
De canonical zegt https://www.voorbeeldshop.nl/schoenen/, maar:
- Interne links gaan naar
https://www.voorbeeldshop.nl/schoenen(zonder slash). - De sitemap bevat
https://voorbeeldshop.nl/schoenen/(zonder www). - Een oude template genereert de canonical als relatief pad
/schoenen/. - Hoofdletters verschillen:
/Schoenen/en/schoenen/.
Elke variant is voor Google een andere URL. Hoe meer varianten, hoe zwakker je canonical als signaal.
De fix:- Eén vorm voor host, protocol en trailing slash. Alle andere varianten krijgen een 301 naar die vorm.
- Canonicals altijd als absolute URL.
- Sitemap en interne links in exact dezelfde vorm als de canonical.
Fout 6: meerdere canonical tags op één pagina
Het thema voegt een canonical toe. Een SEO-extensie voegt er nog een toe. Een app of tag manager-script een derde. Als de waarden verschillen, negeert Google ze allemaal en kiest zelf.
Dit zien we bij beide grote platformen:
- Magento: de native canonical-instelling staat aan, en een SEO-extensie schrijft er ook een. Of een maatwerkmodule voor filterpagina's voegt een eigen tag toe.
- Shopify: het thema rendert
{{ canonical_url }}intheme.liquid, en een geïnstalleerde app voegt via een app-embed nog een canonical toe.
rel="canonical"-tags. Dat moet er precies één zijn.
curl -s https://www.voorbeeldshop.nl/schoenen/ | grep -c 'rel="canonical"'
Staat de canonical alleen in de gerenderde DOM en niet in de bron, controleer dan ook via URL-inspectie in Search Console.
Fout 7: producten in meerdere categorieën zonder vaste canonical
Een product hangt in drie categorieën en is via drie URL's bereikbaar:
/heren/schoenen/model-x.html
/sale/model-x.html
/model-x.html
/collections/schoenen/products/model-x. Shopify zet de canonical daarvan automatisch op /products/model-x. Het probleem zit in thema's die in collecties naar de collectie-URL linken in plaats van naar de product-URL. Google crawlt dan een URL die je niet wilt, en de canonical moet het oplossen. In de meeste thema's los je dat op door in de productkaart product.url te gebruiken in plaats van product.url | within: collection.
Fout 8: canonical over taal- of landversies heen
Een meertalige shop heeft een Nederlandse en een Belgische versie met grotendeels dezelfde teksten. Om "duplicate content" te voorkomen krijgt de Belgische versie een canonical naar de Nederlandse.
Het gevolg: Google ziet de Belgische pagina als duplicaat en toont in België de Nederlandse versie, met verkeerde prijzen of verzendinformatie. De hreflang-annotaties worden ook ondermijnd, want hreflang moet verwijzen naar canonieke URL's.
De fix: elke taal- of landversie krijgt een zelfverwijzende canonical. Hreflang koppelt de versies aan elkaar. Gelijke content tussen NL en BE is met correcte hreflang geen probleem. Hoe je dat inricht staat in hreflang voor meertalige webshops.Canonical, 301 of noindex: wanneer gebruik je wat?
Veel van de fouten hierboven ontstaan omdat een canonical wordt ingezet waar een ander middel beter past. De vuistregels:
| Situatie | Middel |
|---|---|
| Oude URL bestaat niet meer, er is een opvolger | 301-redirect |
| Twee URL's moeten allebei bereikbaar blijven, één moet ranken | Canonical |
| Pagina mag bestaan, maar hoort niet in de index | Noindex |
| URL's hoeven niet gecrawld te worden | Robots.txt |
| Taal- of landversies van dezelfde pagina | Zelfverwijzende canonical plus hreflang |
Een redirect is het sterkste signaal: de bezoeker en Google komen allebei op de juiste URL uit. Een canonical is zwakker, omdat de duplicaat bereikbaar blijft. Kun je een duplicaat-URL laten verdwijnen, doe dat dan. Gebruik een canonical alleen als de URL om functionele redenen moet blijven bestaan, zoals een tracking- of sorteringsparameter.
Zo controleer je je canonicals
Een vaste controle, na elke grote release:
- Crawl je shop met een crawler die canonicals rapporteert. Kijk naar niet-indexeerbare canonical-doelen, canonical-ketens en pagina's met meerdere canonicals.
- Vergelijk met de sitemap. Elke URL in de sitemap moet naar zichzelf canonicaliseren.
- Search Console, Pagina's-rapport. Bekijk het aantal URL's met "Duplicaat, Google heeft een andere canonieke versie gekozen". Een stijging na een release is een alarmsignaal.
- URL-inspectie op een paar typische pagina's: een product, een categorie, een gefilterde pagina, een gepagineerde pagina, een taalversie.
- Bekijk de bron van die pagina's, niet alleen de DOM.
Veelgestelde vragen
Is een canonical tag een richtlijn of een hint?
Een hint. Google gebruikt de canonical als één signaal naast redirects, interne links, sitemaps en de content zelf. Wijzen die signalen dezelfde kant op, dan volgt Google je canonical meestal. Spreken ze elkaar tegen, dan kiest Google zelf.
Moet elke pagina een zelfverwijzende canonical hebben?
Het is geen verplichting, maar wel verstandig. Een zelfverwijzende canonical voorkomt dat parameters zoals UTM-tags of sessie-ID's als aparte versies worden gezien. In webshops is het de veiligste standaard.
Mag een canonical naar een ander domein wijzen?
Ja, cross-domain canonicals worden ondersteund. Dat is bijvoorbeeld zinvol als dezelfde productcontent op twee eigen domeinen staat en je één versie wilt laten ranken. Gebruik het niet tussen taal- of landversies; daarvoor is hreflang.
Lost een canonical duplicate content door filters op?
Gedeeltelijk. Het helpt Google de juiste versie te kiezen, maar het bespaart geen crawlbudget en wordt genegeerd als de gefilterde pagina sterk afwijkt. Voor filters is een combinatie van bewuste indexeerkeuzes, robots.txt en schone interne links effectiever.
Hoe zie ik welke canonical Google heeft gekozen?
Via URL-inspectie in Search Console. Daar staan de door jou opgegeven canonical en de door Google geselecteerde canonical naast elkaar. Wijken ze af, dan negeert Google je hint.

Geschreven door Ruthger Idema
15+ jaar ervaring in e-commerce development. Gespecialiseerd in Magento, Shopify en Laravel maatwerk.
Meer over ons team →


