UPC vs EAN: what's the difference?
Both encode a GTIN, both are read by the same scanners, and one is technically a version of the other — here's what actually differs, and which one your product needs.
12 digits or 13 — the core difference
UPC-A is 12 digits. EAN-13 is 13. Both belong to the same GS1 GTIN family — a UPC-A number is technically a GTIN-12, an EAN-13 number a GTIN-13 — and they're related in a very specific way: prepend a single 0 to any 12-digit UPC-A number and you get a valid, correctly-checksummed EAN-13. The check digit doesn't need recalculating; the math works out the same either way. For example, the UPC-A 036000291452 becomes the EAN-13 0036000291452 — same twelve data digits, same check digit, just with the leading zero spelled out. That's why virtually every modern scanner (including the barcode readers in almost all US checkout lanes since the mid-2000s) reads UPC-A barcodes natively as part of reading EAN-13 — under the hood, a UPC-A code already is an EAN-13 code, just usually written without that leading zero shown.
The GTIN family both belong to
GTIN (Global Trade Item Number) is GS1's umbrella term for every retail product identifier it issues, and it comes in four sizes: GTIN-8 (an EAN-8, for packages too small for a full barcode, like a stick of gum or a cosmetics sample), GTIN-12 (UPC-A), GTIN-13 (EAN-13), and GTIN-14 (used on cases and cartons rather than individual units — a shrink-wrapped tray of 24 cans headed to a distribution center, not a shelf, for example — encoded as ITF-14). UPC-A and EAN-13 aren't competing standards so much as two sizes in the same family, and the leading-zero relationship above is exactly why: a GTIN-12 is just a GTIN-13 with a guaranteed-zero first digit. Whichever size a given product needs, it's assigned the same way — through a GS1-licensed company prefix, not chosen freely.
Where each is actually used
UPC-A is the standard on retail packaging in the United States and Canada. EAN-13 is the standard essentially everywhere else — Europe, the UK, most of Asia, Australia, Latin America. That split is mostly historical (UPC came first, in the US, in the early 1970s; EAN followed a few years later as the international extension of the same underlying idea), and it's narrower in practice than it sounds: under GS1's Sunrise 2005 initiative, US and Canadian point-of-sale systems were required to become able to scan full 13-digit EAN-13 codes too, so a US business selling into international markets doesn't need a second, US-only barcode — EAN-13 alone covers both. In everyday conversation, "UPC" also gets used loosely as a generic word for "the barcode on the box," even when the code printed is actually an EAN-13 — worth keeping the two senses apart when you're deciding which format to actually generate. The practical rule of thumb: sell only in the US or Canada, UPC-A is the conventional default; sell anywhere else, or sell internationally, EAN-13 is the safer default.
Which retailers and marketplaces accept which
In practice, no major retailer or marketplace cares which of the two label you use — what they require is a real, GS1-licensed GTIN, submitted in whichever digit count your listing form expects. Amazon accepts a UPC in its US marketplace and an EAN in most non-US marketplaces, and validates whatever you enter against GS1's own database rather than checking the label alone. Walmart Marketplace's US catalog expects a GS1-issued GTIN entered as a 12-digit UPC. European and international retailers and marketplaces generally expect EAN-13, and platforms like eBay, Etsy's paid-listing tiers, and Google Shopping's product feeds follow the same underlying rule: a valid, GS1-registered GTIN, in whichever format your catalog's country setting expects. Because a UPC-A is already numerically a valid EAN-13, a system built to accept EAN-13 accepts a correctly-formatted UPC-A without any extra step — the format is rarely the actual sticking point; a genuinely GS1-licensed number is.
Converting between the two
UPC-A to EAN-13: prepend a single 0 to all 12 digits (check digit included) — that's the entire conversion, and the check digit stays correct without recalculating. EAN-13 to UPC-A only works in reverse when the EAN-13's first digit already is 0; drop it and the remaining 12 digits are the equivalent UPC-A. A 13-digit GTIN whose first digit isn't 0 has no UPC-A equivalent at all — it was never assigned as a 12-digit US/Canada number, so don't force a conversion; use it as EAN-13. There's also UPC-E, a zero-suppressed, 6-digit version of UPC-A meant for packages too small for the full-length code; scanning one expands it back out to the equivalent UPC-A automatically, so it's not a separate conversion you need to handle by hand. To actually generate either UPC-A or EAN-13, our /upc and /ean-13 tools both take your data digits and compute the check digit automatically, free and unlimited.
When you need neither: internal SKUs
If a barcode is only ever going to scan inside your own warehouse, inventory system, or point-of-sale setup — not a retailer or marketplace that validates against GS1's database — you don't need a UPC-A or EAN-13 at all. /code-128 encodes any alphanumeric string, including your own SKU, at any length, with no registration, licensing fee, or fixed digit-count constraint the way a GTIN has; our /code-128 generator and SKU generator handle exactly that case. Save UPC-A and EAN-13 for products actually headed to a retail checkout or a marketplace listing that requires a licensed GTIN — forcing an internal-only SKU into UPC/EAN format just adds GS1 licensing overhead for no benefit. It's also fine to start with Code 128 for a direct-to-consumer product and switch to a licensed GTIN later, once you're ready to sell wholesale or list on a marketplace that requires one — nothing about starting internal-only locks you out of getting a real GS1 number down the road. If you do need a real, licensed GTIN, see our guide: how to get a GS1 barcode.