Delete duplicate products/variants by SKU, title, or barcode on Shopify

duplicate product cards with a trash bin removing the copies

Duplicate products on Shopify happen more often than anyone wants to admit. A botched CSV import creates 200 copies. A supplier integration pushes products that already exist. Someone on the team duplicates a product to use as a template and forgets to delete the original. A migration from WooCommerce or another platform creates overlapping entries. However they got there, duplicates cause three real problems: Google sees thin duplicate content and drops your rankings, customers land on the wrong version and get confused by pricing or inventory, and your admin turns into a mess where nobody’s sure which product is the real one.

This post covers how to find duplicates by SKU, title, or barcode, how to decide which copy to keep, and how to delete the duplicates without wrecking your SEO. The “without wrecking your SEO” part is the one most guides skip, and it’s the part that actually matters.

If you suspect duplicates are already hurting your search rankings, run your store through our SEO Checker to see how Google currently views your pages. Duplicate URLs with similar content will show up as thin content signals.

In this post

How duplicates happen

Five scenarios cover about 95% of duplicate product situations on Shopify:

  1. CSV import errors. The most common cause. You import a CSV that overlaps with existing products. Shopify matches by handle, so if the handles are slightly different (blue-oxford-shirt vs blue-oxford-shirt-1), it creates a new product instead of updating the existing one. Now you have two.
  2. Supplier feed syncs. Apps that sync with suppliers (dropshipping, wholesale) sometimes push products that already exist under a different handle or without matching SKUs. Every sync creates more duplicates.
  3. Platform migrations. Migrating from WooCommerce, BigCommerce, or Magento is messy. If the migration runs twice (common when testing), you get a full duplicate of every product. Our WooCommerce migration guide covers how to avoid this.
  4. Manual duplication. Someone duplicates a product to use as a template for a new listing, then forgets to delete it or publishes the wrong version.
  5. App conflicts. Two product management apps both create products from the same source. Rare, but when it happens, it creates hundreds of duplicates at once.

The tricky part is that Shopify doesn’t flag duplicates. There’s no built-in duplicate detection. You can have two products with identical titles, identical SKUs, identical images, and Shopify treats them as two separate, valid products. It’s up to you to find and fix them.

The damage duplicates cause

SEO damage. This is the big one. Two products with the same title and similar descriptions compete against each other in Google’s index. Google picks one as canonical and suppresses the other. Sometimes it picks the wrong one (the one with no reviews, no backlinks, no traffic history). Your rankings drop because Google is confused about which page is the “real” one. We covered this in depth in our product duplicates SEO problem post.

Inventory confusion. Two products sharing the same SKU can show different stock levels. A customer orders from the wrong listing, inventory deducts from the wrong product, and you’re left with phantom stock or oversells.

Customer confusion. Duplicates show up in on-site search, collection pages, and even Google Shopping feeds. A shopper searching your store sees two listings for the same product, possibly with different prices (if one wasn’t updated). That erodes trust fast.

Ad waste. If you’re running Google Shopping or Facebook ads, duplicate products in your feed can get your Merchant Center account flagged. Google explicitly penalizes feeds with duplicate product data.

Finding duplicates by SKU

SKU is the most reliable way to find exact duplicates. Every product (or variant) should have a unique SKU. If two products share the same SKU, one is a duplicate. Period.

The process:

  1. Export your products to CSV. Go to Products > Export in the Shopify admin. Export all products, all columns.
  2. Sort by SKU column. Open in Google Sheets or Excel. Sort the “Variant SKU” column alphabetically.
  3. Highlight duplicates. In Google Sheets, use conditional formatting to highlight duplicate values. In Excel, Home > Conditional Formatting > Highlight Cells Rules > Duplicate Values.
  4. Review each pair. For every highlighted duplicate SKU, compare the two product rows. Note which handle has more images, more reviews, more traffic, and more complete metadata. That’s the one to keep.

If your SKU system is a mess to begin with (blank SKUs, inconsistent formats), clean it up first. Our SKU Generator tool helps you build a consistent system. You can’t find duplicates by SKU if half your products don’t have SKUs.

Finding duplicates by title

Title matching catches duplicates that have different SKUs but identical or near-identical product names. This happens when products are created manually or from different sources.

Same CSV export, but sort by “Title” column. Exact duplicates are easy to spot. Near-duplicates are harder: “Blue Oxford Shirt” vs “Blue Oxford Shirt, Men” vs “Oxford Shirt Blue.” All three might be the same product, but simple sorting won’t catch them all.

For near-duplicates, search the Title column for common base names. If you sell oxford shirts, filter the CSV for every row containing “oxford” and scan the results. This is tedious for large catalogs but catches the duplicates that SKU matching misses (because the duplicates were created with different SKUs or no SKUs at all).

Finding duplicates by barcode

Barcode (UPC/EAN/GTIN) duplicates are critical for Google Shopping. If two products in your feed share the same barcode, Google may reject both or flag your Merchant Center account. The detection method is identical to SKU: export CSV, sort by “Variant Barcode” column, highlight duplicates.

Barcode duplicates often come from dropshipping or wholesale feeds where the supplier assigns the barcode and your import doesn’t check for existing products with the same code. If you’re running Google Shopping campaigns, check barcode uniqueness before every feed submission. Our Barcode Validator tool can verify barcode formatting, but for duplicate detection you need the CSV approach.

Deciding which copy to keep

When you find a pair of duplicates, you need to decide which one to keep and which to delete. Don’t guess. Check three things:

  1. Google-indexed URL. Check which product URL Google has indexed. Search site:yourstore.com "product name" in Google. The indexed version has link equity and ranking history. Keep that one.
  2. Order history. The product with more historical orders has customer reviews, repeat purchase data, and reporting continuity. Deleting it means losing that data.
  3. Completeness. Which version has better images, alt text, description, metafields, and tags? Keep the more complete one. If neither is great, merge the best elements into one and delete the other.

Never delete both and create a third. You lose all indexing history, order association, and any backlinks pointing to either URL.

Deleting duplicates without killing SEO

This is the part most “how to delete products” guides skip entirely. Deleting a Shopify product removes its URL. If that URL was indexed by Google (or linked from another site, or bookmarked by a customer), it now returns a 404 error. 404s waste crawl budget and destroy any link equity the page had.

The fix: 301 redirects. Before deleting the duplicate, create a 301 redirect from the duplicate’s URL to the keeper’s URL. In Shopify: Settings > Navigation > URL Redirects. Redirect /products/blue-oxford-shirt-1 to /products/blue-oxford-shirt. This tells Google “the old page moved permanently, transfer all ranking signals to the new URL.”

Our Redirect CSV Generator tool can build the redirect file in bulk if you have dozens of duplicates to clean up. You import the CSV into Shopify’s URL Redirects section, then delete the products.

The workflow in order: (1) identify duplicates, (2) decide which to keep, (3) create 301 redirects from duplicates to keepers, (4) verify redirects work, (5) delete the duplicates. Skipping step 3 is the most common SEO mistake in store cleanup.

Three deletion methods compared

Manual deletion in Shopify admin. Products > select products > Actions > Delete. Works for 10-20 products. Shopify’s bulk select interface is clunky for larger numbers since you can only select what’s visible on the current page (50 products max per page). No built-in duplicate detection.

Matrixify (bulk operations via spreadsheet). Import a CSV with the product handles marked for deletion. Matrixify processes the deletions in batch. Powerful but complex. Better suited for stores that already use Matrixify for other data operations.

CS Bulk Delete Products. CS Bulk Delete Products is our tool for this exact workflow. Filter by collection, vendor, tag, date, or inventory level. Preview the deletion list before confirming (no accidental deletions). Soft delete option moves products to draft instead of permanent deletion, which is safer when you’re not 100% sure. Scheduled deletes for recurring cleanup (seasonal products, expired listings).

For duplicate-specific cleanup, the filter-and-preview approach is safer than CSV-based deletion. You see exactly what’s getting deleted before it happens. One bad row in a CSV can delete the wrong product. A preview screen with product titles and images catches that mistake before it’s irreversible.

Duplicate variants within a product

Sometimes the problem isn’t duplicate products but duplicate variants inside a single product. Two “Medium / Blue” variants on the same product. This happens from CSV imports where the variant row is duplicated, or from apps that create variants without checking for existing ones.

Duplicate variants cause inventory double-counting and confuse the product page variant selector. Shopify doesn’t flag them either.

To find them: export the product CSV, filter to a specific product handle, and check the “Option1 Value” + “Option2 Value” columns for duplicate combinations. Delete the extra variant rows, keeping the one with order history.

For stores with many variants per product, the Variant Combination Calculator helps you understand how many unique combinations should exist. If the actual count exceeds the expected count, you have duplicates. If you’re hitting the Shopify variant limit, duplicate variants are wasting slots that could go to real options.

Preventing duplicates in the future

Cleanup is reactive. Prevention is better. Four practices that keep duplicates from recurring:

Enforce unique SKUs. Every product and variant gets a unique SKU. No blanks. No recycled codes. The SKU is your primary key for matching across systems.

Use handles for CSV imports. When importing via CSV, always include the product handle. Shopify uses handles to match existing products. If the handle matches, it updates. If it doesn’t, it creates new. Consistent handles prevent accidental creation of duplicates.

Test imports on a development store first. Before running a big CSV import on your live store, test it on a dev store. Check for unexpected new products. This catches supplier feeds and migration scripts that would create duplicates.

Audit quarterly. Export, sort by SKU, scan for duplicates. Takes 20 minutes once you know the process. Catch duplicates before they accumulate and cause ranking damage.

If your store uses separate products per color (grouped with combined listings), the duplicate risk increases because you have more individual products. Make sure each color variant is a separate product with a unique handle and unique SKU. “Blue Oxford Shirt” and “Red Oxford Shirt” are separate products, not duplicates. But “Blue Oxford Shirt” and “Blue Oxford Shirt Copy” are duplicates that need cleanup.

For variant-specific images on these products, Rubik Variant Images keeps the right images on the right variants. Duplicates with mismatched images are a customer experience disaster.

FAQ

Does Shopify have built-in duplicate detection?

No. Shopify does not flag duplicate products or variants. You need to export your catalog and scan for duplicates manually by SKU, title, or barcode.

Should I delete or draft duplicate products?

Draft first if you’re unsure. Drafting (unpublishing) removes the product from the storefront without permanently deleting it. Once you’ve confirmed the keeper has all the right data and the 301 redirects are in place, then permanently delete.

Will deleting duplicate products hurt my SEO?

Only if you skip 301 redirects. Delete without redirecting and you get 404 errors that waste link equity. Redirect the duplicate URL to the keeper URL first, then delete. This preserves all ranking signals.

How do I find duplicate variants inside a product?

Export the product CSV, filter by product handle, and check for duplicate option value combinations. Two rows with the same “Option1 Value” and “Option2 Value” are duplicate variants.

Can I delete products in bulk on Shopify?

Shopify’s admin supports selecting up to 50 products per page for bulk delete. For larger cleanups, use a bulk delete app like CS Bulk Delete Products, which supports filtering and preview before permanent deletion.

How do I prevent duplicates from CSV imports?

Always include the product handle in your CSV. Shopify uses handles to match existing products during import. If the handle matches, it updates the product. If it differs by even one character, Shopify creates a new product.

Need to clean up duplicates safely? Install CS Bulk Delete Products and preview every deletion before it happens.

Co-Founder at Craftshift