Duplicate Product URLs in Ecommerce: Causes and Fixes
Duplicate product URLs in ecommerce are several addresses that show the same product. They come from collection paths, variation parameters, filters, tracking links and protocol differences. The fix is to choose one URL per product and make the canonical, the links and the sitemap all agree.
- Causes by platform
- How to find them
- Canonical or redirect
- Closing checklist
Duplicate product URLs in ecommerce are multiple web addresses that show the same product, such as a product reached through a collection path as well as its main address, or a variation selected through a URL parameter. Search engines have to choose one version to index. When your signals disagree about which one it is, ranking signals split and crawling is spread thinner.
Duplicates are rarely a mistake someone made on purpose. They come from how platforms build URLs: category paths, filters, sorting, tracking links, variation parameters and protocol or case differences. Each one is easy to create and easy to miss, because the page looks identical to a shopper.
This guide explains the main causes on Shopify, WooCommerce and Magento, shows how to find them, and sets out the fixes in the order I would use them. I describe platform behaviour in general terms, so check the details against your own theme and settings.
I check product URL patterns, canonicals and internal links as part of a technical audit, then hand over a fix list your developer can ship.
Talk to a Technical SEO ConsultantWhy Duplicate Product URLs Matter
Google groups pages with the same or very similar content and chooses one as the canonical, the version it shows in results. That is normal and not a penalty. The cost comes from three practical effects.
The third effect is the wrong URL showing in results. Google may pick the collection path or a parameter version because your internal links keep pointing to it, and that version may carry a less useful page layout for the shopper.
Where Duplicate Product URLs Come From
Some causes appear on every platform, and some are specific. The table shows the patterns I check first.
| Platform | Typical duplicate | Why it happens |
|---|---|---|
| Shopify | /collections/shoes/products/runner next to /products/runner | A product can be opened inside any collection it belongs to. Themes normally set the canonical to /products/runner. |
| Shopify | Variant parameters such as ?variant=12345 | Selecting a variant can add the variant to the URL while the page stays the same. |
| WooCommerce | Variation and filter parameters such as ?attribute_pa_colour=blue | Variations are selected on one page, and parameters can appear for selections, filters and sorting. |
| WooCommerce | The same product at more than one category path | A permalink setting that includes the category, combined with a product that sits in several categories. |
| Magento | A product at /product.html and at /category/product.html | A setting decides whether product URLs include the category path. Categories can also put one product at several paths. |
| All platforms | http and https, www and non-www, trailing slash, letter case | Server or CDN rules that let several forms of the address respond. |
| All platforms | Tracking and session parameters such as ?utm_source= | Campaign links and tools that append parameters to the address. |
| All platforms | Sorting and filter parameters such as ?sort=price | Listing pages create new addresses for each ordering or filter. |
Filter and sort URLs are mostly a listing-page problem and are covered in the guide on faceted navigation and crawl budget. This guide concentrates on the product page itself.
How to Find Duplicate Product URLs
You do not need special tools. A crawl, Search Console and a few searches are enough to find most duplicates.
- 1Crawl the site and look at canonicals Find pages whose canonical is a different URLFind pages with no canonical or a canonical that does not match the sitemap
- 2Open Search Console’s page indexing report Look for “Duplicate, Google chose different canonical than user”Check which URL Google chose and compare with yours
- 3Use the URL Inspection tool on sample products Compare “User-declared canonical” with “Google-selected canonical”A difference means your signals disagree
- 4Search Google for a product name with site: One result per product is the aimSeveral results for one product show duplicates in the index
Then check where your own links point. A crawl that reports inlinks for each URL will show whether collection pages link to /products/runner or to the longer collection path. Internal links are the strongest signal you control, and a theme that links to the longer path undoes a correct canonical.
The Fixes, in the Order I Would Use Them
Start with the cause, not the symptom. Pick the one URL pattern each product should have, then make every signal agree with it.
| Fix | Use it when | Caution |
|---|---|---|
| Choose one URL pattern | Always, as the first decision | Changing an existing pattern needs redirects for the old URLs |
| Change internal links | Templates link to the long or parameter version | Fix this in the theme, not page by page |
| Canonical tag | The duplicate must stay reachable | It is a hint, so keep other signals consistent |
| 301 redirect | The duplicate has no purpose for visitors | Avoid chains and redirects to unrelated pages |
| Sitemap clean-up | Always | List only the preferred, indexable URL |
| noindex | A page must be reachable but never indexed | Do not combine with a canonical to another URL |
| robots.txt rules | Large sets of low-value parameter URLs | Not a way to consolidate duplicates |
On Shopify
Check that your theme’s canonical tag points to the /products/ URL and that product links inside collections use that same URL instead of the collection path. Many themes do this by default, but a theme edit or an app can change it. If a theme does link to collection paths, edit the product link in the collection and search templates. Variant parameters should keep the same canonical as the main product.
On WooCommerce
Review the permalink settings and decide whether product URLs include a category. If they do, make sure a product in several categories has a primary category and a single canonical. Check that variation and filter parameters resolve to the main product as the canonical. An SEO plugin normally manages canonical tags, so test what the plugin outputs rather than assuming.
On Magento
Magento has settings that decide whether product URLs include the category path and whether canonical tags are output for products and categories. Check both in the store configuration. In my view a safe default is product URLs without the category path and canonical tags turned on, but confirm that against your store structure before changing anything.
If you change a URL pattern on a live store, treat it as a migration. The old URLs need redirects, internal links need updating and the sitemap needs to be regenerated. The ecommerce migration SEO checklist covers that process.
Variants: One Page or Several
The question of whether each colour or size gets its own page is a content decision as much as a technical one. The test I use is search demand. If shoppers search for the variant as a distinct product, a separate page with its own title and content can be worth building. If the variants are the same product in different sizes, a single page is simpler and avoids near-duplicates.
Whichever you choose, keep the signals consistent. Separate variant pages need their own canonicals, titles and structured data. A single page needs the variant selection not to create indexable URLs.
Frequently Asked Questions
Do duplicate product URLs cause a Google penalty?
No. Google does not penalise a store for having several URLs that show the same product. The cost is practical: ranking signals and crawling are spread across several URLs, and Google may pick a version you did not want to appear in results.
Is a canonical tag enough?
Often, but it is a hint rather than a command. Google can choose a different canonical if your signals disagree, for example when internal links, the sitemap and redirects all point somewhere else. The fix works best when the canonical, the internal links and the sitemap all name the same URL.
When should I use a redirect instead of a canonical?
Use a redirect when the duplicate URL has no reason to exist for visitors, such as an old path or a wrong-case URL. Use a canonical when the duplicate must stay reachable, such as a filtered page, a tracking link or a variant selection.
Should I block duplicate URLs in robots.txt?
Usually not as the main fix. A page blocked in robots.txt cannot be crawled, so search engines never see its canonical tag, and the blocked URL can still be indexed from links. Robots.txt is for managing crawling of large sets of low-value URLs, not for consolidating duplicates.
Do product variants need their own URLs?
Only if people search for the variant as a separate product. If shoppers search for “blue” and “red” as different items, separate pages can make sense. If the variants differ only by size or colour of the same product, one page is usually simpler.
Duplicate Product URL Checklist
- Each product has one preferred URL pattern, written down.
- The canonical tag on every product page points to that preferred URL.
- Internal links in collections, search, menus and related products use the preferred URL.
- The sitemap lists only preferred, indexable product URLs.
- http, www, trailing slash and case variants all redirect to one form.
- Variant, filter, sort and tracking parameters resolve to the main product canonical.
- Search Console shows no pattern of “Google chose different canonical than user” on products.
- Any URL pattern change has redirects, updated links and a regenerated sitemap.
If you are on Shopify, the Shopify technical SEO audit checks collection path duplicates as one of its steps, and the WooCommerce SEO problems guide covers parameters and permalinks in more depth.
Book a call and we will look at your product URL patterns, canonicals and internal links, then agree on what to fix first.
Book a CallMore SEO guides
Faceted Navigation and Crawl Budget
Filters can create millions of URLs and slow Google's crawl of the pages that sell. See what really saves crawl budget, what doesn't, and how to fix it.
Shopify Technical SEO Audit
Run a Shopify technical SEO audit in ten steps. Real admin paths, exact thresholds, and the Shopify specific problems generic checklists miss.
WooCommerce SEO Problems and How to Fix Them (2026 Guide)
The WooCommerce SEO problems I find most in store audits, from filter URLs and duplicate schema to slow LCP, with the cause and fix for each one.
Want one clean URL for every product?
Get your canonicals, internal links and sitemap checked and receive a fix list your developer can ship.

I’m an awarded SEO expert and seo consultant with 11+ years of experience. I have generated over $100M in tracked organic revenue by SEO for my clients like you 👉 See Case Study
