You import a fifty-row product feed from a US distributor into a UK retailer's catalogue and half the joins fail. The values look numeric. The lengths look fine. But the EAN field has 12-digit strings where the system expected 13. Somewhere upstream, a leading zero went missing — and now the same product is two SKUs across two countries.
That is the canonical UPC vs EAN problem — more precisely, UPC-A vs EAN-13, also written GTIN-12 vs GTIN-13. The difference between UPC and EAN sounds dramatic but the symbols are sibling formats from the same standards body, encoding the same kind of identifier. Modern scanners read both without thinking. The differences that catch you out are about data — column widths, GS1 prefixes, ownership of the allocation — not the symbols themselves. This guide explains where each one comes from, why your UPC suddenly grew a leading zero, and how to keep them straight in product data.
The short answer
UPC-A is 12 digits. EAN-13 is 13 digits. They're the same barcode underneath, allocated by different national offices of the same global standards body (GS1). Any UPC-A is also a valid EAN-13 if you stick a leading zero on the front. Every modern point-of-sale scanner accepts both.
036000291452036000291452.12 digits · US & Canadian retail · GS1 US allocations
50123456789005012345678900.13 digits · Worldwide · Any GS1 office
Drop a UPC-A into an EAN-13 field by adding a leading 0 and the value is still the same product. Some retailer systems do this automatically; some don't. When two ends of a pipeline disagree about whether to pad, you get the kind of phantom duplicate that opens this article.
UPC-A vs EAN-13 at a glance
| Aspect | UPC-A | EAN-13 |
|---|---|---|
| Digits | 12 | 13 |
| Main region | United States & Canada | Worldwide (default outside North America) |
| GTIN type | GTIN-12 (stored as 0 + 12 digits in a GTIN-13 column) | GTIN-13 |
| POS scanner support | Universal | Universal |
| Most common slip-up | Leading zero stripped when stored as a number | Leading digit misread as country of manufacture |
| When to use | Your GS1 prefix was issued by GS1 US and your largest retail partner is in North America | Any other case, or whenever you sell into more than one region |
| Aspect | UPC-A | EAN-13 |
|---|---|---|
| Digit count | 12 | 13 |
| Region of origin | US / Canada (1973) | International (1977) |
| GS1 office | GS1 US only | Any GS1 office worldwide |
| Leading-digit meaning | Number-system byte | First two or three are the GS1 prefix |
| Retail POS compatibility | Universal on modern hardware | Universal on modern hardware |
How we ended up with two
UPC-A came first, in 1973, designed for US supermarket point-of-sale by what is now GS1 US. It worked, retail loved it, and within a few years Europe wanted in. The European response in 1977 was EAN-13: a 13-digit superset that kept every existing UPC-A intact (prefix it with 0 and you have an EAN-13) while opening up enough extra address space for the rest of the world's product registries.
That backwards-compatibility decision is why the two formats are still around together half a century later. Nobody had to reissue a barcode. North American brands kept printing 12 digits because their existing artwork already worked. Brands in Europe, Asia, Latin America and Oceania got their allocations from local GS1 offices, which handed out 13-digit prefixes. The labels look different at the till but they live in the same catalogue.
Telling them apart
The simplest distinguisher is the digit count printed under the bars. Twelve = UPC-A. Thirteen = EAN-13. The leading digit of an EAN-13 sits slightly to the left of the bar pattern; the trailing digit of either format is the check digit that ties the value together.
That leading digit on an EAN-13 is the GS1 prefix, and it's a common source of myth. A leading 5 doesn't mean "made in the UK" — it means the product's GS1 prefix was allocated by GS1 UK. The actual factory could be anywhere. The same brand can have prefixes from multiple GS1 offices for products launched in different markets.
If you want to spot-check a value without grabbing a barcode reader, the GTIN Validator will tell you the length class and confirm the check digit in one step. For format-specific feedback — including the GS1 prefix range — try the dedicated UPC Lookup for 12-digit values and the EAN Lookup for 13-digit ones.
Confirm a UPC-A or EAN-13 has the correct GS1 mod-10 check digit.
Storing them without pain
The pipeline problem at the top of this article almost always traces back to how UPC-A and EAN-13 are stored. Three rules of thumb keep the joins clean:
- Normalise on the way in. Pick GTIN-13 or GTIN-14 as the canonical length and pad on import. A 12-digit UPC-A is the GTIN-13
0XXXXXXXXXXXXor the GTIN-1400XXXXXXXXXXXX; nothing changes about the meaning, only the column width. - Validate the check digit at the boundary. Anything coming from a supplier feed, OCR or a free-text field gets run through the GS1 mod-10 check before it's trusted. That catches transposed digits, stripped zeros and well-meaning spreadsheet auto-formatting in one pass.
- Render the customer-facing form on the way out. The label printer knows whether to draw 12-digit UPC-A bars or 13-digit EAN-13 bars from the same stored value. The database doesn't need to mirror that choice.
If you suspect a feed has been mangled, the Check Digit Calculator will tell you what the trailing digit should be for a given body — useful for spot-checking whether the issue is a stripped prefix or a corrupted body:
Compute the correct GS1 mod-10 check digit for any UPC, EAN or GTIN body.
Which to print today
The choice between UPC-A and EAN-13 on a new package usually isn't yours to make in isolation. Three things constrain it:
- Your GS1 allocation. Whichever GS1 office issued your company prefix determines the length. A US allocation will yield UPC-A by default; an allocation from any other GS1 office will yield EAN-13.
- Your largest retail partner. Some retailers still require UPC-A in North American supply chains and EAN-13 elsewhere, even though their scanners read both. Check the data-spec from the partner with the biggest shelf space.
- Your packaging real estate. EAN-13 takes one digit more horizontal room, which matters on small SKUs. For genuinely tiny packs there are the zero-suppressed short forms below.
For global brands the simplest rule is: print EAN-13 worldwide. Every POS scanner reads it, every catalogue stores 13 digits without padding gymnastics, and you stop having to translate between formats. If you're a US-only brand with an existing UPC-A allocation, there's no reason to switch — the saving is purely cosmetic.
Common mistakes
Most UPC-vs-EAN bugs come from a small set of repeat offenders. If a lookup is failing or two SKUs that should be one keep diverging, work through these before going further:
- Stripping the leading zero. A UPC-A stored in a GTIN-13 column relies on the leading
0; once a spreadsheet or implicit number cast drops it, the value becomes a different identifier. - Treating UPC-A and EAN-13 as two products.
036000291452and0036000291452are the same product. A duplicate row in your catalogue almost always means the pipeline is normalising inconsistently rather than that the supplier shipped two SKUs. - Assuming the EAN prefix is the country of manufacture. The leading digits identify the GS1 office that issued the prefix, not where the item was made. A 50 prefix means the company is registered with GS1 UK; it says nothing about the factory.
- Storing identifiers as numbers instead of strings. Numeric storage silently drops leading zeros, applies thousands separators in CSV exports and breaks joins. Treat every GTIN as text from the first time it touches your system.
- Printing the wrong format for the packaging. A UPC-A allocation can't be reprinted as an EAN-13 by "just adding a zero" on the artwork — the bars need regenerating from the padded GTIN. Validate the rendered symbol before signing off the print proof.
If you suspect a whole feed has been mangled, run it through the Batch Barcode Tools page — it flags every row that fails the GS1 mod-10 check and gives you a clean CSV back.
Quick decision guide
When you only need the practical answer, the rules collapse to four short ones:
- Print UPC-A on US or Canadian retail packaging when GS1 US has issued you a GTIN-12 company prefix and your largest retail partner is in North America.
- Print EAN-13 on global retail packaging when GS1 has issued you a GTIN-13 prefix, or whenever you sell into more than one region — every POS scanner reads it.
- Store identifiers as GTIN strings internally — left-padded to GTIN-13 or GTIN-14, always as text — so the same product is the same row across UPC-A and EAN-13 markets.
- Validate with the GTIN Validator before sending values to print or to a retailer feed. One round of validation at the boundary saves a week of master-data clean-up later.
UPC-E and EAN-8: the short forms
For packages where 12–13 digits won't physically fit — small cosmetics, individual confectionery, electronic component packs — GS1 defined two short forms. They aren't just "truncated" UPC-A or EAN-13: they need their own GS1 allocations and have their own check-digit rules.
042100005264042100005264; rendered as a compact UPC-E on tiny packs and reconstituted to the full 12-digit GTIN at scan time.6-digit zero-suppressed form of UPC-A · expands at scan time
9638507496385074 — not derivable from any EAN-13.8-digit independent allocation · separate GS1 numbering
UPC-E is essentially a printed-shorthand for a UPC-A that has trailing or middle zeros — a scanner reads the 6 visible digits and reconstitutes the 12-digit UPC-A internally. EAN-8 is a different beast: a full standalone 8-digit GTIN allocated by GS1 to fit on items where EAN-13 simply doesn't fit. The two are not interchangeable and a brand can't generate one from the other without going back to GS1.
Frequently asked
Can I sell on Amazon US with an EAN-13 instead of a UPC?
Yes — Amazon accepts EAN-13 as a valid GTIN for US listings. The catalogue stores it as a GTIN-13 internally; the GS1 prefix doesn't have to be GS1 US. What matters is that the GTIN is registered to your brand at GS1 (Amazon increasingly enforces this) and that the check digit validates.
Do I need to re-issue my UPC barcode for a European launch?
No. The UPC-A you already have is a valid GTIN-12 and reads as an EAN-13 across European POS once you pad it with a leading zero in the master data (12 → 13 digits). Some retailers re-print the artwork as an EAN-13 for shelf consistency, but the identifier itself doesn't change.
Will an older 12-digit-only POS scanner read an EAN-13?
Most modern scanners do. Genuinely 1980s-era 12-digit-only scanners exist in pockets of US retail and may refuse the extra digit, but they're rare in 2026. If you're targeting one of those channels, ship UPC-A on the artwork even if your GS1 office issues 13-digit prefixes — the till still gets the GTIN.
What's the cheapest way to get a UPC for a single product?
Apply to your national GS1 office for the smallest company prefix tier (in 2026, GS1 US offers a single-GTIN allocation under their GS1 US Data Hub). Resellers offer 'cheap UPCs' minted from defunct prefixes, but major retailers — including Amazon — verify provenance against GS1 and will reject those. The cheap option is the expensive option.
Why do some EAN-13s start with 977 or 978?
Those prefixes aren't country codes — they're reserved by GS1 for specific publication types. 977 identifies an ISSN (serials like magazines), 978 and 979 identify ISBNs (books). The 13-digit barcode on the back of every book is an EAN-13 with a 978 / 979 prefix, with the publisher and check digit slotted in afterwards.
References
- GS1 General Specifications — the canonical document covering UPC-A, EAN-13, EAN-8 and the GS1 mod-10 check digit. Published by GS1 and updated annually.
- GS1 EAN/UPC barcodes — overview of the two symbologies and their permitted applications: gs1.org/standards/barcodes/ean-upc.
- GTIN identifier reference — what a GTIN is, the four lengths and the rules for assigning new ones: gs1.org/standards/id-keys/gtin.
Got a feed with both formats mixed in? The Batch Barcode Tools page validates and normalises a list of values in one pass. For the wider picture of where UPC and EAN sit among other symbologies, see the barcode formats field guide.