Shopify duplicate content mostly comes from theme links, tag and filter URLs, duplicated products and copied descriptions. Fix the links first, then control what gets indexed, then rewrite the copy.
Shopify adds canonical tags automatically, but a canonical is a signal Google weighs alongside your internal links, not an instruction it must follow.
The biggest source of duplicate URLs on most stores is product links that run through collection paths, created by the theme's within filter.
Tag pages, vendor and type listings and filter parameters multiply URLs without adding anything new for searchers.
Copied supplier descriptions are a content duplicate, not a technical one. No setting fixes them; only rewriting does.
Shopify duplicate content is rarely caused by Shopify itself.
The platform adds canonical tags for you.
The duplicates come from what sits on top: theme snippets, filter setups, product imports and copied text.
Here's the 7-step process I use to find and fix them on store audits, in the order that gets results fastest. You'll need a crawler, access to Search Console and access to your theme code.
Where Shopify Duplicate Content Comes From
Before fixing anything, know the usual suspects.
Here's how they show up:
Source
Example URL
Type of duplicate
Collection-path product links
/collections/boots/products/chelsea-boot
Same product, second address
Tag-filtered collections
/collections/boots/leather
Subset of a collection, new URL
Storefront filter parameters
/collections/boots?filter.v.option.color=black
Filtered copy of a collection
Sorted collections
/collections/boots?sort_by=price-ascending
Same products, different order
Vendor and type listings
/collections/vendors?q=acme
Auto-generated collection pages
Duplicated products
/products/chelsea-boot-1
Copy of an existing product
Supplier descriptions
Any product page
Same text as other stores
Same-language domains
.com and .co.uk with identical copy
Whole-site duplicate
Your store probably has three or four of these at once.
Step 1: Crawl the Store and Group the Duplicates
Start with a full crawl so you work from facts, not guesses.
Use any crawler that reports canonical tags and inlinks, such as Screaming Frog or Sitebulb.
Then export every URL and sort it into the groups from the table above:
URLs containing /collections/ and /products/ together
Collection URLs with an extra path segment after the handle
URLs with filter., sort_by or ?q= parameters
Product handles ending in -1, -2 or -copy
The count in each group tells you where to spend your time.
Tip: Note which page links to each duplicate, not just that it exists. The linking template is what you'll edit in Step 3.
Step 2: Check What Google Has Actually Indexed
A duplicate URL that Google ignores is low priority.
One it indexes instead of your main page is urgent.
Open Search Console's Page indexing report and look at three reasons:
Alternate page with proper canonical tag: Google found the duplicate and accepted your canonical. Usually fine.
Duplicate without user-selected canonical: no canonical was found, so Google chose for you.
Duplicate, Google chose different canonical than user: Google overruled your canonical. Investigate every one of these.
That last group matters most.
Google's documentation on consolidating duplicate URLs treats canonical tags as one signal among several. It also says consistent internal links to your preferred URL help Google understand your choice.
So if your theme links to the duplicate everywhere, a canonical alone may not win.
This is also why I start every SEO audit of a store with internal links rather than tags.
Step 3: Fix Collection-Path Product Links
This is the fix with the biggest payoff on most stores.
Many themes build product links with Liquid's within filter. Shopify's own reference for the within filter shows it producing /collections/sale-potions/products/draught-of-immortality and tells developers to consider the SEO implications.
Here's how to fix it:
In your theme code, search for within.
Find each place it's used on product links: product cards, featured collections, related products, search results.
Change those links to use the product's own URL, so they point to /products/handle.
Republish, recrawl and confirm the /collections/*/products/* count from Step 1 drops to zero.
Duplicate the theme first and make the change on the copy.
If you aren't comfortable editing Liquid, this is a short brief for any Shopify developer.
Breadcrumbs that show the shopper's route can still work. They just shouldn't depend on a second product URL.
Step 4: Keep Tag, Vendor and Type Pages Out of the Index
Tag pages are leftovers from older filtering. Shopify now recommends storefront filtering over tag filtering, but plenty of themes and menus still link to tag URLs.
You'll need to decide page by page:
Matches a real search (for example, a material or style): rebuild it as a proper collection with its own handle, title and copy.
Doesn't match a search: keep it out of the index and remove links to it from menus.
A common way to noindex tag pages is a conditional in the theme layout:
{% if current_tags %}<meta name="robots" content="noindex, follow">{% endif %}
Apply the same thinking to /collections/vendors?q= and /collections/types?q= listings. If your theme links to them from product pages, either make them useful or stop linking.
Step 5: Control Filter and Sort Parameters
Filters are useful to shoppers and mostly useless to searchers.
The aim is to stop Google spending time on thousands of combinations. On a big catalogue that wasted time is a real crawl budget problem.
Shopify's default robots.txt already blocks sorted collections and multi-tag URLs.
Check your own /robots.txt to see exactly what's covered on your store.
For everything else, Google's faceted navigation guidance is clear. Blocking filter URLs in robots.txt works better long term than relying on canonicals, which only reduce crawling of the duplicates gradually.
On Shopify, that means a robots.txt.liquid edit. Treat it with care:
Shopify calls it an unsupported customisation.
Adding the template replaces the generated file, so build on the default rule groups rather than starting from scratch.
Compare the rendered output with the old file before you publish.
If a filter value has genuine demand, such as "black leather boots", give it a real collection instead of indexing the parameter.
Step 6: Merge Duplicate Products
Duplicated products are the hardest duplicates to spot from a crawl alone, because they have different handles.
You're looking for:
Handles with numeric or -copy suffixes
Products with identical titles in your admin export
Separate products per colour or size with the same description
Variants aren't the problem. Shopify keeps variants on one product page and uses a ?variant= parameter to deep link to one.
The problem is the same item listed as several products, often competing with each other for the same search. That's keyword cannibalisation at catalogue scale.
For each set:
Pick the version with the most sales, links and reviews.
Move the others' variants into it where it makes sense.
Archive or delete the extras, then add a redirect from each old URL.
Order matters here. Shopify redirects only work on URLs that no longer load a page, so remove the old product before you expect the redirect to fire.
Step 7: Rewrite Copy That Lives on Other Sites
The last type of duplicate isn't on your store at all.
If you sell branded products, the supplier's description is probably on dozens of competing stores and the brand's own site.
Google picks one version to show, and it's rarely yours.
You don't need to rewrite the whole catalogue. Start with:
Your top 50 products by revenue
Products where you rank on page two for the model name
Any collection whose intro text was pasted from another collection
Add what a supplier sheet doesn't have: sizing notes from returns, compatibility, care advice, real photos.
Note: Selling in several countries? Shopify warns that two domains targeting the same language may be flagged as duplicate content. Its Markets setup adds self-referencing canonicals and hreflang for you; my international SEO work covers the trickier cases.
Make Duplicate Checks Part of Every Theme Change
Duplicate content on Shopify comes back.
A new theme, a new app or a new filter setup can undo every fix in a single afternoon.
So build the check into your routine.
Recrawl after every theme change, and look at the "Google chose different canonical" list in Search Console every month. The same habit applies to any store, which is why it sits in my technical SEO for ecommerce work too.
Start today with Step 3. It's usually the single change that removes the most duplicate URLs.
Does Shopify automatically handle duplicate content?+–
Partly. Shopify adds canonical tags to pages and its default robots.txt blocks sorted and multi-tag collection URLs. That covers the basics. It doesn't stop your theme linking to duplicate product addresses, it doesn't rewrite copied supplier descriptions, and it can't decide which tag or filter pages deserve to rank. Those parts of Shopify duplicate content are still your job.
Will duplicate content get my Shopify store penalised?+–
Usually not. Duplicate URLs on a store are normally a technical side effect, not an attempt to manipulate rankings. The cost is quieter: links and signals split across several addresses, Google picking a different canonical than you would, and crawl time spent on copies instead of new products. That is reason enough to fix it.
Should I noindex Shopify tag pages?+–
In most stores, yes. Tag-filtered collection pages repeat products from the parent collection with a different URL and rarely match a search on their own. If a tag page does match real demand, such as a material or style people search for, turn it into a proper collection with its own title, copy and handle instead.
Are product variants duplicate content on Shopify?+–
Not by default. Variants share one product page, and selecting one adds a variant parameter to the same product URL rather than creating a new page. The duplicates appear when stores create separate products for each colour or size with near-identical descriptions. Merge those unless each version has its own search demand.
Independent SEO consultant · 6+ years in SEO · 60+ client websites worked on
I'm an independent SEO consultant with 6+ years in SEO. I run audits, migrations and content programmes for businesses in Europe, the UK and the USA, and I build the automation behind my own research.