Shopify will not let two variants on the same product share the exact same combination of option values. When you try, the save fails with a message along the lines of "variant already exists". It looks alarming, but the cause is almost always one of a few small things, and you can usually fix it in a couple of minutes.
Cause
Every variant is defined by its option values. If your product has Size, Color and Material, then "Small / Red / Cotton" can exist only once. When a second "Small / Red / Cotton" appears, whether you typed it, duplicated a row or imported it, Shopify blocks the save.
In support tickets, these are the usual triggers:
- A CSV import with a repeated row. Copying a block of rows in a spreadsheet and forgetting to change one value is the most common one we see.
- Hidden differences that disappear. "Red" and "Red " (with a trailing space) can look different in your spreadsheet but collide once Shopify trims them.
- Renaming an option value. Renaming "Crimson" to "Red" on a product that already has a "Red" variant creates two identical combinations.
- Removing an option. If you delete the Material option, "Small / Red / Cotton" and "Small / Red / Linen" both become "Small / Red".
Find the duplicate
On a small product, open it in the admin and scan the variant list. Group or sort by the first option so matching rows sit next to each other.
On larger products, export the product CSV and check it in a spreadsheet:
- Add a helper column that joins the option values, for example
=B2&"|"&D2&"|"&F2using your Option1, Option2 and Option3 value columns. - Use conditional formatting to highlight duplicate values in that helper column.
- Wrap the values in TRIM() if you suspect stray spaces.
The highlighted rows are your collisions.
Fix
- Decide which of the two variants to keep. Usually it is the one with sales history, the correct SKU or stock on hand.
- Delete the other one, or change one of its option values so the combination becomes unique (for example "Red" to "Dark red" if it really is a different shade).
- Save, then check that price, SKU and inventory on the remaining variant are correct.
If both variants held stock, add the quantities together on the variant you keep before you delete the other. Our guide to copying and duplicating variants covers safe ways to move variant data between products if you need to rebuild.
Prevent via CSV validation
Run the same duplicate check before every import, not after. It takes a minute and saves a failed import. Keep option values consistent (same spelling, same case, no trailing spaces) and avoid copying whole row blocks without editing them. The CSV import guide for variants lists the columns that need to match exactly.
When variants are the wrong tool
Sometimes the duplicate error is a sign the product is modeled the wrong way. If you are creating variants for things that do not change stock, such as gift wrap, a custom name or a font choice, you will keep hitting limits and collisions. Those choices fit better as product options that save to the order as line-item properties. The comparison of options apps vs native variants shows where each one belongs.
If you have run out of option slots and that is why you were stacking values into variants, see how to add more than 3 options.
Worked example
A merchant selling aprons imports 24 variants: 3 sizes, 4 colors and 2 strap types. The import fails on two rows. The helper column shows "M|Navy|Cross-back" twice. One row should have been "M|Navy|Neck strap". She fixes the value, re-runs the duplicate check, and the import goes through with all 24 variants.
If a save fails with no clear message at all, the problem may be something else entirely. Our checklist for options that will not save covers cache, app conflicts and rate limits.
Frequently asked questions
What causes Shopify duplicate variant error?
Two variants on the same product have the exact same combination of option values. Shopify requires each combination to be unique, so the save is blocked until one is changed or removed.
How to find duplicate variant?
Open the product and sort or group the variant list by option values so matching rows sit together. On large products, export the CSV and highlight duplicates in a helper column that joins the option values.
How to fix duplicate variant?
Delete one of the two variants, or change one option value so the combination is unique. Move any stock to the variant you keep before deleting.
Bulk find duplicates?
Export the product CSV, join Option1, Option2 and Option3 values into one column, and use conditional formatting to highlight repeats. Developers can run the same check on data pulled from the Admin API.
Prevent duplicates in CSV import?
Run the duplicate check in your spreadsheet before every import. Keep spelling and case consistent and trim trailing spaces from option values.
Can I intentionally have duplicate variants?
No. Even with different SKUs or prices, two variants cannot share the same option combination. Add or change an option value to tell them apart.
Merged variants recover inventory?
Shopify does not merge variants for you. Add the stock from the duplicate to the variant you keep, then delete the duplicate.
Duplicate error via API?
The same rule applies. The REST Admin API returns a 422 error and the GraphQL Admin API returns a user error, so check for these in your code before retrying.
Related reading
Sources & further reading
Primary sources referenced in this article. We link to official platform documentation and standards bodies rather than secondary summaries so you can verify claims directly.
- Shopify Help Center: Product variants
- Shopify.dev: Product variant limits
- Shopify Help Center: Line item properties (customization)
Try it free on Shopify
Print It My Way's permanent Free plan includes live preview, custom options, and Cart Transform pricing.
Install Print It My Way