Product Identifiers Explained: GTIN, EAN, UPC, SKU and MPN
GTIN, EAN, UPC, SKU, MPN, ASIN — five acronyms, two completely different jobs. Here is what each identifier does, which ones are globally unique, and which ones your catalog actually needs.
Ask three people in the same company what identifies a product and you will get three answers. The buyer says the supplier article number. The warehouse says the SKU. The marketplace integration says the EAN, and rejects the listing without one. All three are correct in their own context, which is exactly why product identifiers cause so much confusion — the word "identifier" is doing several unrelated jobs at once.
There are really only two kinds of product identifier, and everything else is detail. Global identifiers — GTIN, EAN, UPC, ISBN — are unique across the whole world and describe the product itself. Internal identifiers — SKU, supplier article number — are unique only inside one system and describe your relationship to that product. MPN sits usefully in between. Once you know which kind you are holding, most catalog problems stop being mysterious: you cannot match on an internal code, you cannot manage stock on a global one, and you need both.
The two families: global identifiers and internal codes
A global identifier answers the question "which product is this?" in a way that anyone, anywhere, can resolve. If two businesses on different continents hold the same GTIN, they hold the same product. The number is issued through a central system, follows a defined format, and is bound to a specific configuration of that product — a particular size, colour, capacity and pack quantity.
An internal code answers a different question: "which of my records is this?" A SKU is meaningful inside your warehouse, your ERP and your storefront, and meaningless outside them. Two companies can use the identical SKU string for completely unrelated products, and frequently do. That is not a flaw; it is what internal codes are for. The mistake is expecting one family to do the other's work.

GTIN: the umbrella term for barcode numbers
GTIN stands for Global Trade Item Number, and it is the standard name for the number encoded in a retail barcode. The important thing to understand is that GTIN is not a competitor to EAN and UPC — it is the family name that contains them. When a marketplace or a data schema asks for a GTIN, an EAN or a UPC is a valid answer.
GTINs come in four lengths, and the length tells you where the number originated:
- GTIN-13 — thirteen digits, the format used across Europe and most of the world. This is what people mean when they say EAN.
- GTIN-12 — twelve digits, the North American format. This is what people mean when they say UPC.
- GTIN-8 — eight digits, a shortened format for products too small to carry a full barcode, such as confectionery or cosmetics samples.
- GTIN-14 — fourteen digits, used for cases, cartons and other outer packaging levels rather than the individual consumer unit.
Every GTIN ends in a check digit calculated from the preceding digits. That single digit is genuinely useful to you: it means a typo in a barcode is mathematically detectable without looking the number up anywhere. Any competent data pipeline validates it before trusting the value.
A GTIN-12 can be converted to a GTIN-13 by adding a leading zero, and the two refer to the same product. If your system stores them as different values, you will get duplicate records for identical items.
EAN vs UPC: the same system, two regions
This is the comparison people search for most, and the honest answer is that the difference is smaller than it appears. EAN (European Article Number) is thirteen digits and originated in Europe. UPC (Universal Product Code) is twelve digits and originated in North America. Both are GTINs, both are issued under the same global standard, and both are read by the same scanners. Modern retail systems in every region accept both.
The practical differences worth knowing are narrow. Twelve-digit UPCs commonly appear in data sourced from US suppliers and marketplaces, so you will encounter both formats in a mixed catalog. And because a UPC is a GTIN-13 with an implied leading zero, the same product can legitimately appear in your data as 012345678905 and 0012345678905 — the same item, two string representations.
The name a supplier uses is also unreliable. Columns labelled "EAN" routinely contain twelve-digit UPCs, and columns labelled "UPC" routinely contain thirteen-digit EANs. Trust the digit count and the check digit, not the header.

SKU: your number, not the world's
A SKU (Stock Keeping Unit) is a code you create to identify a product within your own operation. Nobody issues it, nobody validates it, and it means nothing to anyone outside your systems. A good SKU is stable, unique inside your catalog, and often human-readable — something like TSH-BLK-M tells a picker more than a random string does.
SKUs are essential and frequently misused. The common error is treating a supplier's article number as if it identified the product globally: matching two supplier files on their article numbers will silently merge unrelated items, because those codes only mean something within each supplier's own system. Another common error is encoding meaning into the SKU and then needing to change it — if your SKU contains the price band or the season, you will eventually renumber your catalog, and every historical record that referenced the old code breaks.
The relationship worth building into your data model is one product to one GTIN, and one product to one or more SKUs. You may stock the same physical item from three suppliers under three article numbers; there is still one product and one barcode underneath.
Keep supplier article numbers in a separate column from your own SKU, one column per supplier if necessary. Overwriting your SKU with whatever the latest supplier file contained is one of the fastest ways to lose track of what you actually sell.
MPN: the manufacturer's own model number
The MPN (Manufacturer Part Number) is the code the manufacturer uses for a product — the model number printed on the box, in the manual and on the spec sheet. It is unique within that manufacturer's range but not globally: two different brands can and do use the same string. That is why MPN is only meaningful when paired with a brand. Together, brand plus MPN is nearly as strong an identifier as a GTIN.
MPNs matter most in categories where barcodes are patchy: electronics, tools, automotive parts, industrial components, spare parts and B2B catalogs generally. In those verticals a product may have a well-known model number and no consumer barcode at all, because it was never sold through a scanner-based retail channel.
Be aware that MPNs are written inconsistently. Hyphens, spaces, regional suffixes and packaging variants (WAN28281GB, WAN 28281 GB, WAN28281GB/01) are all the same product to a human and different strings to a database. Normalising them — stripping separators, uppercasing, handling known suffix patterns — is routine work in any serious matching pipeline.
The other identifiers you will encounter
Beyond the core five, several identifiers appear in specific channels and categories. Knowing which family each belongs to tells you immediately how far you can trust it.
- ASIN — a marketplace-specific identifier. Unique within that marketplace, useless outside it, and can differ between regional storefronts for the same product.
- ISBN — the book world's identifier. A modern 13-digit ISBN is a valid GTIN, so it behaves like a barcode number and can be treated as one.
- ITF-14 — the barcode symbol used on cases and cartons, carrying a GTIN-14. Useful for logistics, wrong for consumer listings.
- Serial numbers and batch codes — these identify an individual unit or production run, not a product type. Never store them where a GTIN belongs.
- Supplier article number — an internal code belonging to someone else's system. Valuable for reordering, worthless for matching.
The pattern is consistent: if a number was issued by a central authority and carries a check digit, it is probably global. If it was invented by whoever created the spreadsheet, it is internal.
Why every product needs a global identifier
Internal codes are enough to run a warehouse. They are not enough to run a modern catalog, because almost everything outside your four walls speaks in GTINs. Marketplaces require them before a listing goes live and use them to attach your offer to the correct product page. Structured data on your product pages uses them to tell search engines which product the page is about. Comparison engines, retail partners and EDI-based ordering all key on them.
They also solve problems inside your business. Deduplication becomes reliable rather than approximate — two rows with the same GTIN are the same product, full stop, no fuzzy title comparison required. Merging supplier files stops producing near-duplicates. Stock reconciliation across channels becomes arithmetic instead of investigation. And when you eventually migrate systems, the GTIN is the one key that survives the move intact.
This is also the single biggest determinant of enrichment quality. A row carrying a valid GTIN can be resolved to an exact product with near-certainty; a row carrying only an abbreviated title has to be inferred from weaker signals. Recovering identifiers you already own — from a mislabelled column, a notes field, a legacy export — is usually the cheapest quality improvement available to you.
How identifiers get corrupted in spreadsheets
Most broken barcode data is not a supplier problem. It is a spreadsheet problem, and it happens between the export and the import.
- Leading zeros stripped. A twelve-digit UPC beginning with zero becomes an eleven-digit number the moment Excel treats the column as numeric. Format the column as text before opening or exporting.
- Scientific notation. Long codes display as 5.90123E+12 and export that way, destroying the value permanently.
- Trailing whitespace. 5901234123457 fails an exact lookup that would otherwise succeed. Trim on import.
- Merged columns. EANs and MPNs pasted into one field, or barcodes hiding in a notes column.
- Placeholder values. Rows full of 0, N/A, - or repeated dummy barcodes are worse than empty cells, because they look like data.
- Failed check digits. A number that is the right length but fails validation is a typo or an internal code, not a barcode. Never store it as one.
Run a check-digit validation across your entire barcode column before you do anything else with the file. It costs one formula and it separates real identifiers from noise instantly.
Takeaway
GTIN is the umbrella; EAN and UPC are its regional formats, differing mainly in length and origin. SKU is yours alone and never leaves your systems. MPN identifies a product within a brand and needs the brand alongside it to be useful. Keep all of them, in separate columns, and never let one overwrite another.
Practically, that means three habits: validate check digits so you know which numbers are real, store supplier codes separately from your own, and treat missing GTINs as a gap worth closing rather than a permanent condition. A catalog where every product carries a verified global identifier is one where deduplication, marketplace listings and system migrations stop being projects and start being routine.
Ready to clean up your product list?
Upload a raw CSV or Excel file and get back verified names, EANs, categories, descriptions and images. First 25 products are free.
Get started free →