Home›Magento SEO audit›Product URL duplicates

Magento · Duplicate URLs

Magento Product URL Duplicates: Category Paths and Canonicals

Magento products can live at several URLs through category paths, configurable children, URL key clashes and store views. Count URLs per product, check canonical targets, and consolidate to one.

6 duplicate sources4 catalog settings7 crawl checks1 URL per product

Magento · Category paths, canonical link meta tags, product visibility and URL rewrites

In Magento, a product URL is not one thing. Depending on configuration, the same product can answer at its short URL, at one URL per category it belongs to, as a child of a configurable product, and once per store view.

Duplicates are not a penalty on their own. The risk is that signals split across addresses, crawlers waste time on copies, and the wrong URL ends up indexed. The fix is one indexable URL per product, with everything else pointing at it.

Where product duplicates come from

SourceExampleWhat usually breaks
Category path URLs/women/tops/linen-shirt.html and /sale/linen-shirt.htmlOne product, one URL per category, plus the short URL
Product canonical turned offEvery path URL self canonicalAll variants compete as separate indexable pages
Configurable childrenEach size and color as its own visible simple productNear duplicate pages with the same description and images
URL key clasheslinen-shirt-1.htmlImports or duplicated products create numbered copies
Store views/en/ and /default/ with identical contentSame language duplicated across store codes or domains
Raw catalog routes/catalog/product/view/id/123Internal route reachable through old links or extensions

Catalog SEO settings that decide product URLs

Use Categories Path for Product URLsWhether product links include the category pathPath duplicates
Canonical Link Meta Tag For ProductsWhether every product URL points at the short URLSignal split
Product URL SuffixThe ending, usually .html, on every product URLMass URL change
Permanent Redirect if URL Key ChangedWhether renamed products keep a 301 from the old URL404s

These live under the catalog Search Engine Optimization settings and can differ per store view. Check each scope.

What to check

URLs per productHow many crawlable addresses each product title appears on
IndexableHow many of those are indexable with a self canonical
Canonical targetWhether every variant points at the same URL
Internal linksWhich URL navigation, listings and related products link to
CheckHealthy result
Product canonicalPresent on every product URL, pointing at one chosen URL
Category path URLsCanonical to the chosen URL, or not generated at all
Duplicate titles across productsOnly on true variants that are not visible individually
Numbered URL keysNone, or each one intentional
Canonical tags per pageExactly one, no second tag from an extension
Internal linksPoint at the canonical product URL, not a path variant
SitemapLists only canonical product URLs

How to run the checks

  1. Crawl the storefront including category listings, so every path variant is discovered the way a bot finds it.
  2. Group URLs by product. Sort by title or SKU in schema and count URLs per product.
  3. Check canonical targets on every variant. Use Custom Source Search to find pages with two canonical tags.
  4. Check where internal links point. Category listings often link to the path URL while the canonical points elsewhere.
  5. Review product visibility for configurable children and grouped products in the admin.
  6. Save the crawl as the baseline before changing configuration.

How to identify the scope

Every product has path variantsConfigurationCategory paths on and canonicals off: fix the catalog SEO settings.
Two canonical tagsExtension conflictCore and an SEO extension both output a canonical.
Groups of near duplicatesVisibilitySimple children of configurables set to Catalog, Search.
Numbered URLsURL keysImport clashes or duplicated products with suffixed URL keys.

How to apply the fix

Chosen URL /linen-shirt.html index, self canonical
Path variant /women/tops/linen-shirt.html canonical to /linen-shirt.html
Child product linen-shirt-blue-m Not Visible Individually
Old URL key /linen-top.html 301 to /linen-shirt.html
  1. Turn on product and category canonical link meta tags in every store view scope.
  2. Choose whether to use category paths. Turning them off makes listings link straight to the short URL, which removes duplicates at the source. Turning them on keeps breadcrumbs in URLs but relies on canonicals.
  3. Change the setting with redirects in place. Changing category path or suffix settings changes live URLs, so confirm URL rewrites and 301s exist for the old addresses before deploying.
  4. Hide child products of configurables by setting them to Not Visible Individually, unless each variant has truly unique content and demand.
  5. Clean up URL keys with numeric suffixes, redirecting the old key to the clean one.
  6. Remove duplicate canonical output by letting only one module, core or an extension, own the tag.

How to validate the fix

  1. Reindex, flush caches, and recrawl with the same scope.
  2. Count indexable URLs per product: the target is one.
  3. Test old URLs for a single 301 to the chosen URL.
  4. Compare in Audit Comparison and check the sitemap after the next generation run.
  5. Watch Search Console for duplicate and alternate page reports shrinking over the following weeks.
1Indexable URL per product
1Canonical tag per page
0Visible child products duplicating their parent

Downloadable checklist

Downloadable checklistMagento product URL duplicates checklist

0 of 14 done

Configuration
Catalog data
Crawl checks

Common mistakes

  • Switching category paths off without checking redirects. Every indexed path URL changes in one deployment.
  • Changing the URL suffix on a live store. Removing .html moves every product and category URL at once.
  • Trusting canonicals while linking to variants. Internal links are a strong signal. Link to the URL you want indexed.
  • Making every configurable child visible for search. Dozens of near identical pages compete with the parent.
  • Running two SEO extensions. Conflicting canonical tags confuse search engines more than none.
  • Ignoring store view scope. A setting fixed at default level can be overridden in one store view.

One product, one URL

Magento will happily serve a product at many addresses. Decide which one counts, point canonicals and internal links at it, hide variants that add nothing, and redirect every URL you retire. Then confirm with a crawl that each product has exactly one indexable URL.