Skip to main content
Guide

UPC vs EAN: What's Actually Different?

Two flavours of the same idea, separated by one digit and forty years of geography. It explains how a 12-digit UPC-A becomes a 13-digit EAN-13, where each one is required, and how to confirm the check digit with the free ReadBarcode GTIN Validator before a value reaches a retailer feed.

By ReadBarcode 6 min read Published 21 May 2026

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.

UPC-AEAN-13
UPC-A036000291452
Example UPC-A barcode encoding the 12-digit GTIN-12 036000291452.

12 digits · US & Canadian retail · GS1 US allocations

EAN-135012345678900
Example EAN-13 barcode encoding the 13-digit GTIN-13 5012345678900.

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

Side-by-side comparison of UPC-A and EAN-13 barcodes: digits, region, GTIN type, POS scanner support, the commonest data slip-up, and when to use each.
AspectUPC-AEAN-13
Digits1213
Main regionUnited States & CanadaWorldwide (default outside North America)
GTIN typeGTIN-12 (stored as 0 + 12 digits in a GTIN-13 column)GTIN-13
POS scanner supportUniversalUniversal
Most common slip-upLeading zero stripped when stored as a numberLeading digit misread as country of manufacture
When to useYour GS1 prefix was issued by GS1 US and your largest retail partner is in North AmericaAny other case, or whenever you sell into more than one region
Factual reference: digit count, region of origin, GS1 issuing office, leading-digit meaning and POS compatibility for UPC-A and EAN-13.
AspectUPC-AEAN-13
Digit count1213
Region of originUS / Canada (1973)International (1977)
GS1 officeGS1 US onlyAny GS1 office worldwide
Leading-digit meaningNumber-system digitFirst two or three are the GS1 prefix
Retail POS compatibilityUniversal on modern hardwareUniversal 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.

GS1 prefix, not country

UPC-A always has an implicit 0 prefix when expressed as a GTIN-13; that's why it's often described as having "no prefix". EAN-13 leading digits 30–37 are France; 50 is the UK; 49 is Japan; 690–699 is China. None of this tells you where the product is manufactured — only which GS1 office issued the company prefix.

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.

GTIN Validator: Confirm a UPC-A or EAN-13 has the correct GS1 mod-10 check digit. Open with 5012345678900 →

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:

  1. 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 0XXXXXXXXXXXX or the GTIN-14 00XXXXXXXXXXXX; nothing changes about the meaning, only the column width.
  2. 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.
  3. 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.
Heads up

The single most common failure mode is a spreadsheet treating a UPC-A as a number and silently dropping the leading 0 when the column gets stored as GTIN-13. Either widen the column or store the value as a string from the start.

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:

Check Digit Calculator: Compute the correct GS1 mod-10 check digit for any UPC, EAN or GTIN body. Compute for 501234567890 →

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. UPC-A and EAN-13 symbols are the same width (95 modules of bars and guards), so switching between them saves no room 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. 036000291452 and 0036000291452 are 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 their check digit uses the same GS1 mod-10 method (a UPC-E carries the check digit of the UPC-A it expands to).

UPC-EEAN-8
UPC-A (compresses to UPC-E)042100005264
Source UPC-A 042100005264; 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

EAN-896385074
Example EAN-8 encoding the standalone 8-digit GTIN 96385074 — 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.

What Do UPC and EAN Mean?

UPC stands for Universal Product Code and EAN for European Article Number, the original name of the 13-digit system. Both names now refer to barcodes that carry a GS1 Global Trade Item Number (GTIN).

The Universal Product Code was the North American grocery industry's numbering system for checkout, and UPC-A is its full-size 12-digit symbol. The European Article Numbering association extended it to 13 digits so that countries outside North America could get number ranges of their own. When EAN International adopted the GS1 name in 2005, EAN survived as an abbreviation that GS1 now expands as International Article Number.

On a retailer or marketplace form, a field labeled "UPC/EAN" or "UPC or EAN" asks for one thing: the product's GTIN. Each term points to a slightly different part of the system:

  • UPC usually means UPC-A, the barcode for a 12-digit GTIN-12 used in the United States and Canada. UPC-E is its zero-suppressed short form for small packs.
  • EAN usually means EAN-13, the barcode for a 13-digit GTIN-13 used in most other countries. EAN-8 is the separate 8-digit short form.
  • GTIN is the GS1 name for the number itself, in any of its four lengths (8, 12, 13 or 14 digits), whatever barcode carries it.

To see what a particular code tells you, the UPC Lookup validates a UPC-A, expands a UPC-E and names the number-system digit, and the EAN Lookup checks an EAN-13 or EAN-8 and reports which GS1 prefix range it falls in.

Are UPC and EAN Interchangeable?

As numbers, yes: a UPC-A and the EAN-13 formed by adding a leading zero identify the same product. In forms and fixed-length fields, they are interchangeable only when both sides add or remove that zero the same way.

The symbols are close relatives. UPC-A and EAN-13 share the same bar patterns and the same 95-module width, and an EAN-13 that starts with 0 prints exactly the same bars as the UPC-A without that zero. Under the GS1 US Sunrise 2005 initiative, retailers in the United States and Canada were asked to scan EAN-13 as well as UPC-A from January 1, 2005, so in the UPC vs EAN barcode question either symbol works at a modern checkout.

The difference between UPC and EAN numbers starts to matter in three places:

  • Fixed-length fields. A form that accepts exactly 12 digits rejects an EAN-13, and a 13-digit field may reject a UPC-A until you add the leading zero yourself.
  • EAN-13s that start with another digit. Only an EAN-13 that begins with 0 can be written as a UPC-A. A code starting with 4, 5 or any other non-zero digit has no 12-digit form.
  • The short forms. A UPC-E expands to a full UPC-A, but an EAN-8 is a GTIN-8 in its own right with no 12- or 13-digit equivalent.

For UPC vs EAN-13 the conversion is mechanical. When a form asks for a UPC and you hold an EAN-13 that begins with 0, drop the zero; when it asks for an EAN-13 and you hold a UPC-A, add one. The check digit stays the same both ways, because a leading zero adds nothing to the weighted sum.

Key takeaways

  • UPC-A and EAN-13 are the same product identifier in different sleeves — a UPC-A is an EAN-13 with a leading zero.
  • Normalise everything to GTIN-13 (or GTIN-14) at the data layer; render UPC-A or EAN-13 on labels from the stored value.
  • Leading digits identify the GS1 office, not the country of manufacture.
  • Modern POS scanners read both interchangeably — the choice between them is about data hygiene and retail partners, not about scanning.
  • UPC-E and EAN-8 are separate short-form symbologies for tiny packaging; they need their own GS1 allocations.

References

The digit counts, prefixes and symbol rules in this guide come from these GS1 documents.

  • 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.
  • GTIN identifier reference — what a GTIN is, the four lengths and the rules for assigning new ones: gs1.org/standards/id-keys.

Got a feed with both formats mixed in? The Batch Barcode Scanner 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.

Frequently Asked Questions

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.

What Is the Difference Between GTIN, UPC and EAN?

GTIN is the number; UPC and EAN are the barcodes that carry it, and loosely the numbers printed under them. A UPC-A carries a GTIN-12 and an EAN-13 carries a GTIN-13, while the 14-digit GTIN-14 for cartons goes into an ITF-14 or GS1-128 barcode instead. All of them end in the same GS1 mod-10 check digit, so one validator can test any of them.

Next Read

More Guides