EAN-13 vs UPC-A: The Complete Guide to Retail Product Barcodes
If you're putting a product on a real shelf, this isn't really a style choice — but knowing exactly why one format is required over the other will save you a rejected listing.

Why retail barcodes aren't a style choice
Unlike most of the QR code types on this site, EAN-13 and UPC-A aren't picked for looks or preference — retailers, distributors, and point-of-sale systems require a specific, standards-compliant format before a product can even be listed. Getting this wrong doesn't just look unprofessional; it gets listings rejected outright.
What EAN-13 is
EAN-13 (European Article Number, 13 digits) is the international retail barcode standard, used across Europe, Asia, and increasingly worldwide, including by many US retailers. It encodes a GS1 country/company prefix, a product reference number, and a single check digit calculated from the other 12.
Because it's the broader international standard, EAN-13 is generally the safer default if you're selling in multiple countries or aren't certain which specific standard a retailer requires.
What UPC-A is
UPC-A (Universal Product Code) is the US and Canada retail standard, structurally almost identical to EAN-13 but one digit shorter (12 digits instead of 13). In practice, UPC-A is really just EAN-13 with a leading zero implied — most modern scanners and systems read both formats interchangeably.
How the check digit works
Both formats end in a check digit — a number mathematically calculated from all the preceding digits using a weighted formula, so a scanner can immediately detect a misread or mistyped number rather than silently accepting bad data. You don't need to calculate this by hand: enter the first 11 or 12 digits and a compliant generator calculates the check digit automatically.
Where the actual numbers come from
The numbers themselves aren't invented — they're allocated by GS1, the global standards body, which assigns your business a manufacturer prefix, leaving you to assign product reference numbers within that prefix. If you're a small business or independent seller, GS1 (or a national GS1 member organization) is where you register for real, retail-compliant numbers.
If you're prototyping packaging or mockups before your GS1 registration is finalized, you can still generate a correctly-formatted barcode with a placeholder number to test scanning and print layout — just swap in your real allocated number before the product goes to actual retail shelves.
EAN-8 and UPC-E for small packaging
When packaging is too small for a full 13- or 12-digit barcode — a stick of gum, a small cosmetic sample — EAN-8 and UPC-E are compressed versions of the same standards, built for exactly that constraint. Use them only when the full-length version genuinely won't fit; they're less universally supported than their full-length counterparts.
How EAN-8's compression actually works
EAN-8 doesn't just truncate an EAN-13 number — it uses a separate, shorter numbering scheme allocated specifically for small-package use, meaning you generally need to request an EAN-8 number from GS1 directly rather than deriving one from an existing EAN-13. This distinction matters because EAN-8 numbers are a genuinely more limited resource (fewer possible combinations in 8 digits than 13), which is part of why GS1 restricts their allocation to cases where package size is a real, demonstrated constraint.
Why some products carry two barcodes at different sizes
It's not unusual to see a product's outer packaging carry a full EAN-13, while a smaller component (a sample size, a piece within a multi-pack) carries its own EAN-8 — these identify genuinely different sellable units, not the same product represented twice, so each needs its own properly registered number rather than treating one as simply a shrunk version of the other.
Print requirements that actually matter
Retail barcodes have real minimum size requirements — shrinking below roughly 80% of the standard size makes the bars too thin for many scanners. High-contrast black bars on a white or very light background scan most reliably; avoid printing on dark, glossy, or textured backgrounds without testing first.
How the two formats actually relate under the hood
UPC-A is, structurally, a special case of EAN-13 — every UPC-A number can be represented as an EAN-13 number simply by adding a leading zero. This is precisely why virtually every modern point-of-sale scanner reads both formats without any special configuration: internally, many systems just treat UPC-A as EAN-13 with an implied leading digit. This compatibility is a deliberate design decision by GS1, not a coincidence, and it's why choosing one over the other rarely causes real interoperability problems in practice.
Regional expectations: when each format is the default
In the United States and Canada, UPC-A remains the traditional default many domestic retailers and point-of-sale systems expect first, even though EAN-13 is fully compatible. Outside North America, EAN-13 is essentially universal. If you're selling exclusively within the US or Canada, UPC-A is the more conventional choice; if you're selling internationally or aren't certain where your product will end up, EAN-13 is the safer default since it's readable everywhere UPC-A is, plus everywhere else too.
What happens if you get the format wrong for a listing
Most retail platforms and marketplaces validate the barcode format at the point of listing — submitting an EAN-13 number where a system strictly expects UPC-A (or vice versa, in stricter systems) typically results in an outright rejected listing rather than a silent partial failure. This is a common, entirely avoidable source of delayed product launches; checking your specific retailer's stated barcode requirements before generating anything saves a round trip of correction and resubmission.
A note on barcode resellers and "cheap" GS1 numbers
Some third-party sites sell individual barcode numbers at low cost, positioning themselves as an alternative to registering directly with GS1. These numbers are typically drawn from a bulk GS1 prefix the reseller owns, which means the underlying company-prefix portion of the barcode doesn't actually belong to your business — a distinction that has caused real problems for sellers on platforms (notably Amazon) that verify brand ownership against GS1's own database. Registering your own GS1 prefix directly is the more durable long-term choice if you're building an actual retail brand.
How barcode verification actually works
Beyond just scanning correctly on a phone or basic scanner, retailers and large distributors sometimes require formal barcode verification — a specialized device that grades a printed barcode against ISO quality standards, checking bar width consistency, contrast, and quiet zone compliance on a letter-grade scale, not just whether it happens to scan on one particular device. This level of scrutiny is typically reserved for larger production runs or specific retailer requirements; a small business printing modest quantities can usually rely on straightforward scan-testing rather than formal verification equipment.
What happens to a barcode number if a product is discontinued
GS1 recommends a waiting period (commonly suggested at around 48 months, though this varies) before reassigning a discontinued product's GTIN to a new item, specifically to avoid confusion in systems that retain historical sales or returns data referencing the old number. For a small business, the safer practice is simply never reusing a retired GTIN at all if you can avoid it — new products get new numbers, keeping historical records unambiguous indefinitely.
Frequently asked questions
Can I convert a UPC-A number to EAN-13 myself? Yes — simply add a leading zero to a valid UPC-A number and the result is a valid EAN-13 representation of the same product.
Do I need a different barcode for each product variant?
Yes — each distinct sellable variant (different size, color, or flavor, for instance) needs its own unique GTIN and barcode, since the whole purpose of the system is letting a scan uniquely identify exactly which item is being sold or tracked.
What if my product already sells in stores using someone else's UPC?
Every distinct product needs a barcode tied to its actual manufacturer or brand owner — using another company's registered barcode number, even inadvertently, creates a mismatch in GS1's global registry and can cause listing or compliance problems down the line. Register your own prefix rather than reusing one that isn't genuinely yours.
Private label and white-label products: whose barcode goes on the package
For private-label or white-label products (where a retailer sells a manufacturer's product under the retailer's own brand), the barcode question depends on the specific commercial arrangement — some retailers require their own GS1 prefix's numbers on private-label goods they control end-to-end, while others allow the manufacturer's registered prefix to remain if the relationship is more of a supply arrangement. Clarify this explicitly with your retail partner before finalizing packaging, since assumptions here are a common source of last-minute packaging reprints.
What a barcode number can and can't tell you about a product's origin
A common misconception is that the country prefix at the start of a GS1 barcode number indicates where the product was manufactured — it actually only indicates which country's GS1 organization issued the company's prefix, which is typically the company's home country, not necessarily where any specific product was physically made. A company headquartered in one country can manufacture in several others while every product still carries the same home-country prefix throughout.
A quick summary before you generate anything
EAN-13 for international sales, UPC-A as the traditional US/Canada default (both fully interoperable), EAN-8/UPC-E only when packaging genuinely can't fit the full-length version, and always a real GS1-issued number before anything goes to actual retail. Test-scan a printed sample before ordering a full production run, regardless of which format you choose.
How barcode number allocation avoids duplicates globally
GS1's hierarchical allocation system — global body to national member organization to individual company — is specifically what prevents two unrelated businesses anywhere in the world from ever being assigned the same GTIN, since each company prefix is unique and each company then manages its own product numbers within that already-unique block. This is a large part of why the system has scaled successfully to cover essentially every retail product sold globally without collisions.
Barcodes on variable-weight and fresh products
Products sold by variable weight — fresh meat, cheese, produce weighed at the deli counter — use a special variant of EAN-13 (sometimes called an internal or variable-weight barcode) where several digits encode the actual weight or price at the point of packaging, calculated on-site rather than fixed at manufacture. These are typically generated by in-store scales and labeling equipment rather than a general-purpose online barcode generator, since they need to be created at the moment of weighing, but it's worth knowing this variant exists if you're setting up barcode systems for a business that sells fresh, variable-weight goods.
How barcode scanners actually decode a printed pattern
A laser or camera-based scanner reads a linear barcode by measuring the relative widths of the light and dark bars as it sweeps across (or, for camera scanners, photographs) the pattern, translating those widths back into the encoded digits using the specific symbology's known bar-width rules. This is why consistent, high-contrast printing matters so much — the scanner is fundamentally measuring width ratios, and anything that distorts those ratios (ink bleed, poor resolution, an uneven print surface) directly threatens the accuracy of that measurement.
Double-checking your check digit before ordering packaging
Since the final digit of both EAN-13 and UPC-A is mathematically derived from the preceding digits, a single transposed digit elsewhere in the number will produce an invalid check digit — meaning a compliant generator will either reject the input or calculate a check digit that doesn't match what you expected if you were tracking the number from an external source. If a generated barcode's check digit ever looks different from what you anticipated, double check the base digits you entered before assuming the generator made an error; a manual transcription mistake upstream is the far more common explanation.
Getting started
Enter your GS1-issued product number (or a placeholder for testing) into the EAN-13 or UPC-A generator, download as PNG, SVG, or PDF, and test-scan a printed sample at actual size before a full production run.
Comments (0)
No comments yet — be the first.
Ready to make one of your own?
Free, no sign-up, and it works in your browser.
Try the EAN-13 Generator
