Duplicate content is Magento’s default state: the same product reachable from five category paths, the same category under forty filter combinations, the same page with tracking parameters. Search engines do not punish this maliciously, but they do waste crawl budget and split ranking signals across duplicates. Canonical tags are how you tell Google which URL owns the content. Magento supports them natively - with gaps you need to know about.
The Core Settings
Stores > Configuration > Catalog > SEO provides the two switches:
- Use Canonical Link Meta Tag for Categories: Yes
- Use Canonical Link Meta Tag for Products: Yes
Product canonicals point to the category-less product URL (/product-name.html), which is exactly right: one product, one canonical, regardless of how many categories reference it. Category canonicals point to the unfiltered category URL.
Where Default Canonicals Fall Short
Layered navigation: filtered URLs (/jackets.html?color=24&size=168) are the duplicate factory. Options, in increasing order of strength:
- Canonical filtered pages to the clean category (some SEO extensions do this; core does not reliably)
noindex, followon filtered combinations via meta robots rules- Block parameter URLs in robots.txt - heavy-handed; breaks facets you might want indexed
The sophisticated approach most large catalogs take: noindex by default, index curated landing pages. Create dedicated CMS or category pages for the combinations worth ranking for (“men’s black leather jackets”) and noindex the raw filter URLs.
Pagination: page 2 of a category is not duplicate content, but it dilutes. Canonical each page to itself (not to page 1 - that tells Google the products on page 2 do not exist) and use clear titles. The old rel=prev/next hints are ignored by Google; self-canonicals plus good internal linking are the current practice.
Sort and limit parameters: ?product_list_order=price variants need canonicals to the clean URL. Verify your theme includes canonical output on all catalog layouts - some custom themes drop it accidentally.
Cross-Domain and Cross-View Cases
Multi-store setups have two extra cases:
- Same product, multiple websites: decide which domain owns the canonical, or let each domain canonical itself and accept they compete
- Language store views: hreflang (not canonicals) is the right tool between translations; canonicals between language versions tell Google to ignore a language entirely
Verification Habit
Canonical bugs are silent. Quarterly, crawl the site and check: every product canonicalises to its clean URL, filtered URLs are noindexed or canonicalised, pagination self-canonicalises, and no canonical points at a 404 or a redirect. Ten minutes of crawling saves months of split equity.
Duplicate content in Magento is a configuration problem, not a platform flaw. Set the two core switches, decide your layered-navigation policy deliberately, and verify with crawls - that is the entire discipline.