UPC vs EAN: Which One Do You Actually Need?

UPC-A and EAN-13 are the same standard with a different digit count. Here's how to pick the right one, when it matters, and when it doesn't.

This question comes up constantly, and the honest answer is: it almost never matters which one you print. Modern scanners read both. Retail point-of-sale systems treat them as the same number with a different amount of padding. If you sell anywhere outside the United States and Canada, print EAN-13 and move on with your life. If you're US-only and your retailer's system is old enough that it chokes on a leading zero, print UPC-A. That's the whole decision.

But nobody asks a one-sentence question, so let's actually unpack why these two exist and what the edge cases really are.

The short history you need

UPC came first, in 1974, for US and Canadian grocery. It's 12 digits. EAN came next, in 1977, when Europe standardized on the same symbology but added a 13th digit so the numbering space could hold the entire world. In 2005 the two systems formally merged under GS1. A UPC-A is just an EAN-13 with an implicit leading zero. That's the entire technical relationship.

If you want the even shorter version: UPC-A and EAN-13 are the same barcode. EAN-13 has one more digit. That's it. Everything else is inventory management trivia.

The actual differences

UPC-AEAN-13
Digits1213
Country / region prefixImplied (US/Canada)Explicit (first 2-3 digits)
Where requiredLegacy US retail systemsEurope, Asia, Latin America, Africa, Oceania
Global scanner compatibilityYes (treated as EAN-13 with leading zero)Yes
Issued byGS1 USAny GS1 member organization
Check digitLast digit, mod-10Last digit, mod-10
GeneratorUPC-AEAN-13

When the choice actually matters

Selling to a US retailer with a legacy POS. A tiny number of very old point-of-sale systems in the US were built assuming 12 digits and don't know what to do with a 13-digit string that happens to start with zero. This is rare in 2026 - basically only independent retailers running software from the Clinton era. If your buyer specifies "UPC-A, 12 digits" in a contract, print UPC-A.

Selling on Amazon US. Amazon accepts both. The listing field is literally called "UPC" but accepts EAN-13. Pick either.

Selling anywhere outside the US and Canada. Print EAN-13. Global retailers expect 13 digits. A UPC-A will scan, but it complicates data hygiene on the retailer's end because their systems treat the missing leading zero as meaningful metadata.

Books. Don't use UPC or EAN - use ISBN. ISBN-13 is technically an EAN-13 with the 978/979 prefix, but every book retail system wants the ISBN version and the ISBN registration process, not a generic GTIN.

Small-format items. If the product can't fit a full EAN-13 (cigarette packs, lipstick tubes, candy bars), use UPC-E or EAN-8. These are shorter symbols for when space genuinely doesn't allow a full code. Don't use them just because you want smaller labels - they're allocated from a separate, limited number pool.

Where the numbers actually come from

This is the part people get wrong. You can't make up the digits. A barcode you generate in any online tool will scan - it's just bars and spaces - but a retailer's point-of-sale system will reject it at checkout because the number isn't registered in the GS1 global database.

To get real, retail-usable GTINs, you buy them from GS1. In the US, that's GS1 US. Your options:

  • Single GTINs - roughly $30 each, no renewal, for brands with one to ten products.
  • GS1 Company Prefix - starts around $250/year, gives you a reserved numeric prefix and lets you self-assign product numbers across your catalog. This is what real brands do.

Third-party "bulk UPC resellers" exist. They sell you a code from a prefix that was issued before GS1's 2002 policy changes, which means technically the prefix is owned by a company that no longer uses it. Amazon, Walmart, and most serious retailers cross-check GTINs against the GS1 database and will suppress listings where the registered brand doesn't match the seller. Don't buy cheap UPCs. You'll pay for them later.

The check digit, because it trips everyone up

The last digit of every UPC and EAN is a mod-10 check digit. It's math, not a random number - and every scanner verifies it. If the check digit doesn't match the rest of the code, the scan fails. When you enter 12 or 13 digits into a generator, the last one has to be correct for the code to scan at all.

Our UPC-A and EAN-13 generators calculate this automatically - type in the first 11 or 12 digits and the check digit gets appended for you. If you'd rather understand what's happening under the hood, we wrote up the math here: How the EAN-13 check digit actually works.

The opinion, if you want one

Register with GS1, buy a company prefix, and print EAN-13 on everything. Global scanner compatibility, no ambiguity, no forced upgrade when you eventually start selling outside North America. The extra digit costs you nothing and saves you a packaging re-run three years from now.

If a specific US buyer contractually requires UPC-A and their old POS can't handle a leading zero, print UPC-A for that SKU. Don't architect your whole catalog around one retailer's legacy system.

And if you just need a few to print for sample packaging, mockups, or internal testing - not for actual retail sale - use the generator, pick whichever format fits your layout, and don't overthink it.