Duplicate SKU and GTIN Finder for WooCommerce
A free WordPress plugin that finds products sharing an SKU, and products sharing or missing a GTIN. It reads your catalogue and writes nothing back.
Two products with the same SKU throw off stock levels, integrations and every export file your store produces. Two products with the same GTIN tell a shopping service they are the same item, so one of them quietly disappears from search. A product with no identifier at all usually drops out of the feed altogether.
None of this breaks the store, which is why it goes unnoticed for years. Nothing in the WooCommerce admin points at any of it.
Three checks, and nothing else
| Check | What counts as a finding | How it works, and how to do it by hand |
|---|---|---|
| Two products share the same SKU | the same code on two different products | duplicate SKU |
| Product with no GTIN, UPC, EAN or ISBN | the identifier field is empty | no GTIN |
| Two products share the same identifier | the same GTIN on two different products | duplicate GTIN |
Three details decide whether a report like this is useful or just long:
- Translations are not duplicates. A multilingual store gives every translation of a product the same SKU on purpose. The plugin reads the translation groups of Polylang and WPML and treats one group as one product, so a two-language shop does not get a false alarm for every item.
- A shop without identifiers gets one sentence, not a list. If not one product has the GTIN field filled, the check stays quiet and says why. Handmade goods, services and your own production carry no manufacturer’s barcode and need none.
- A check that could not run says so by name. The identifier field was added in WooCommerce 9.2. On anything older the report says the field does not exist, instead of calling every product faulty — or calling the catalogue clean.
What the result looks like

The plugin adds one screen under Tools → Duplicate SKU and GTIN Finder. Each finding shows the field
that was read and the value found — duplicated SKU: SB-60, not “problem detected” — with a link
straight to the product in your admin. You can check every claim before acting on it.
Download CSV gives you the same list as a file, evidence and edit links included, so it can go to whoever maintains the catalogue. Cells are protected against spreadsheet formula injection.
What it does not do
- It never writes to your catalogue. There is no “Fix it” button, and there will not be one — the reasoning is here. The only thing it stores is the last result, so that reloading the page does not need another scan. Uninstalling removes that too.
- It reads no order data. That keeps the scan cheap: on a test catalogue of 10,000 products and variations it took about 2.5 seconds.
- No upgrade prompts. No paid version, no banner in your admin, no notices on other screens.
Large catalogues
The screen runs the scan in a single request, and on a very large store that can hit your host’s time limit — on a 50,000-item test catalogue the scan took 22 seconds. Above 5,000 products and variations the screen tells you so in advance. The WP-CLI command has no such limit:
wp merchlint-duplicate-sku-finder scan
wp merchlint-duplicate-sku-finder scan --format=csv
It prints how many findings each check produced and saves the result, so the full list with evidence is waiting on the screen afterwards.
Requirements
| WordPress | 6.5 or newer |
| WooCommerce | 9.0 or newer; the two GTIN checks need 9.2, where the field was added |
| PHP | 7.4 or newer |
| Multilingual | Polylang and WPML translation groups are recognised |
| Licence | GPL-2.0-or-later, free |
Where to get it
The plugin is in the WordPress.org plugin directory as Merchlint – Duplicate SKU and GTIN Finder for WooCommerce and installs from Plugins → Add New like any other. Questions and problems go to its support forum on WordPress.org, or to contact.
The name leads with our own, because the reviewers asked for a distinctive first term instead of a generic phrase — a fair request: “Duplicate SKU Finder” describes a category, not a product. The checks, the screen and the CSV file are the same ones this page describes.
Where the engine comes from
The scanning engine is the one behind Merchlint, a full WooCommerce catalogue audit from the same author, Baltano. This plugin carries its own copy under its own class names, so the two can run side by side on one store without conflict. If you want the rest of the catalogue checked too — prices, stock, images, categories — that is what Merchlint is for.