Skip to content
Platform SEOHow-to guide

How to Fix Shopify Duplicate Content (7 Steps)

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.

By Kristijan GjorgjioskiIndependent SEO consultant

Published 18 October 2026 · 6 min read

Key takeaways

  • 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.

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:

  1. In your theme code, search for within.
  2. Find each place it's used on product links: product cards, featured collections, related products, search results.
  3. Change those links to use the product's own URL, so they point to /products/handle.
  4. 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:

  1. Pick the version with the most sales, links and reviews.
  2. Move the others' variants into it where it makes sense.
  3. 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.

This is one part of my Shopify SEO checklist. If your store runs on WooCommerce instead, the WooCommerce SEO guide covers the equivalent problems.

For stores that would rather hand the whole job over, duplicate cleanup is a standard part of my SEO for Shopify stores. You can also ask me to look at your Shopify store before deciding anything.

Frequently asked questions

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.

About the author

Kristijan Gjorgjioski

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.

Need help with shopify seo?

Book a free 30-minute call. I look at your site first and tell you plainly what I would fix, and in what order.