The error reads like a dead end. "GTIN already exists", item disapproved. It is not a glitch and it will not clear if you resubmit, because two items in your account are claiming to be the same physical product and Merchant Center will not list both until that conflict is gone.
What you'll take away
- It's a collision, not a bug — one GTIN is appearing on items with different ids, titles, or landing pages.
- Variants cause most of them — platforms store the barcode once on the parent and copy it down to every child.
- Two situations, opposite fixes — collect the real per-variant barcodes, or remove the gtin attribute entirely.
- Audit before you edit — one COUNTIF column tells you which of the two you are looking at.
What the error actually means
A GTIN identifies one sellable unit: one product, one variant, one pack size. The same EAN on two different boxes means the same physical thing, and Google treats it exactly that way.
Merchant Center checks the gtin attribute for collisions in two places. Across the items inside your own account, and against the product data Google has already associated with that GTIN. When one identifier appears on items with different item ids, different titles, or different landing pages, one of those claims is wrong, and both items are held until the data agrees.
Two keys, two behaviours
The item id is your key for the offer: price, availability, link. The GTIN is the key for the physical product. Duplicate item ids merge quietly. Duplicate GTINs collide loudly, and that difference is the whole error.
There is a quieter version of the same message. A mistyped digit can land on someone else's valid barcode. The number passes its check digit, the brand and title do not match Google's catalogue entry, and you get "already exists" because that identifier genuinely is assigned to another product.
Why variants are the usual culprit
Almost nobody hits this because two different products share a barcode. They hit it because one product's variants all carry the same one.
Many ecommerce platforms store the barcode once, at parent level. When the feed is built, every child variant is written as a separate item with its own item id, and the parent's GTIN is copied down to each. Six sizes, one GTIN, six items. Google reads that as six items claiming to be one physical product, and the collision lands in Diagnostics.
| Situation | What's true | The fix |
|---|---|---|
| Variants have their own GTINs | Footwear, apparel and most branded goods ship with per-variant barcodes you never collected | Enter the real barcode per variant, at source |
| Variants never had GTINs | Private label, bundles and made-to-order items were often barcoded once, or never | Remove the gtin attribute from those items |
| One product, two items | The catalogue was imported twice, or two feeds carry it under different ids | One item id per product per account |
The error message is identical in all three cases. That is why the audit comes before the edit.
Audit the feed before touching anything
The spreadsheet method
Export the feed, or the product list from Merchant Center, with these columns: item id, title, gtin, item group id, and the variant attributes you use. Add a helper column beside the data, with C as your gtin column:
=COUNTIF(C:C, C2) > 1
Fill it down and filter to TRUE. Every item sharing a GTIN with another item is now on the table. A pivot table with gtin as rows and a count of item ids as values scales better once the feed runs to thousands of rows.
Then comes the judgment no formula can make. Group the flagged rows by item group id. Duplicates that are siblings under one parent are the variant case. The same GTIN across different item group ids, titles, or brands is a genuine data error, usually a bad supplier import or a barcode copied from an old catalogue.

The faster method
Run the same check without the export
The free feed validator runs this pass against the whole feed at once and returns duplicate GTINs grouped by identifier, with the item ids sharing each one listed beside it. It flags invalid check digits on the same attribute too, which show up as a formatting error rather than a duplicate.
The fix, case by case
Variants that have their own GTINs
Collect the per-variant barcodes from the supplier spreadsheet, the case labels, or the GS1 lookup, and enter them per variant in your platform's product fields. Fixing the exported file by hand is a trap, because the edit dies the next time the feed regenerates. Once each child carries its own GTIN the collision disappears, since each item now points at a different physical product.
Variants that never had GTINs
Remove the gtin attribute from those items entirely. Keep the brand. Keep the item group id so Google can still group the variants. Let the absence stand. Submitting the parent's barcode on each child is the error you are trying to clear, and inventing a number opens a worse one.
One product, two items
Sometimes the duplicate is the whole item: the catalogue was imported twice, or one product feeds two Merchant Center feeds in the same account under different ids. Google resolves duplicates by item id, so pick one id per product per account and route everything into it. That consistency has to live in the source data rather than in a trimmed feed file.
Fixes that make it worse
Four ways to turn a disapproval into a bigger problem
- SKUs in the gtin field — internal SKUs are not GS1 identifiers, and a 12-digit one that looks like a UPC fails check-digit validation.
- Editing a digit to force uniqueness — the last digit is computed from the others, so the result is invalid, and a pattern of invented identifiers can escalate to an account-level misrepresentation problem.
- Delete and resubmit — the error lives in the data, so re-adding the item with the same GTIN reproduces it exactly.
- Patching the export — feed files regenerate, so corrections belong in the platform fields or the feed rules.
Checking that it cleared
Once the corrected feed has been fetched, open Diagnostics, filter item issues to the identifier warning, and watch the count. Affected items return as Google reprocesses the feed, so give it a fetch cycle instead of resubmitting items one at a time.
If the count drops and then stalls above zero, run the duplicate check again. What is usually left is a mix: variants with real GTINs you have fixed, sitting in the same item group as variants that never had any.
Common questions
What does "GTIN already exists" mean in Merchant Center?
It means the same GTIN appears on more than one item that Google can tell apart by id, title, or landing page. Since a GTIN identifies one sellable unit, two items claiming it cannot both be right, so both are held until the data agrees.
Can two product variants share the same GTIN?
No. Each variant that has its own manufacturer barcode needs its own GTIN in the feed. Where variants were never barcoded separately, send no gtin attribute at all and keep them grouped with item group id.
Will removing the GTIN hurt my Shopping performance?
Less than a disapproval does. Items without a GTIN lose some catalogue matching, so the title, brand, images and product type carry more weight. An item with no identifier is a normal, reviewable listing. An item with a contradictory one stays disapproved.
How do I find duplicate GTINs in a large feed?
Export item id, title, gtin and item group id, then flag duplicates with a COUNTIF helper column or a pivot table on the gtin field. For feeds in the thousands of rows, run the feed through a validator that groups duplicates by identifier and skip the export entirely.
Free tool
Not sure if your feed has errors?
Run your Google Shopping, Meta, or TikTok product feed through our free validator and get a prioritized error report before channels reject your products.
Editorial note
Written by Muhammad Norafif
This article was published on August 25, 2026 and last updated on August 25, 2026. NextFeed builds product feed management software for Shopify, Google Shopping, Meta, and other commerce channels.