Reference
UPC vs EAN vs Code 128: which barcode does your store need?
The three barcode types Shopify merchants meet, decoded: what each encodes, where each is mandatory, what GS1 charges, and the one-question rule that picks the right type for your labels.
By Bastien HugonFounder & Engineer8 min readPublished July 9, 2026
TL;DR
One question decides it: does the code leave your store? Selling only through your own Shopify store and POS → Code 128 with your own values, free, today. Selling on Amazon, Google Shopping or wholesale to retailers → you need GS1-registered GTINs, rendered as UPC-A (12 digits, North America) or EAN-13 (13 digits, rest of world). UPC and EAN are the same GTIN system with different digit counts — not competing standards.
Barcode terminology mixes two ideas people constantly conflate: the number (what identifies the product) and the symbology (how bars encode it). UPC and EAN are numbers from a global registry drawn as their standard symbols; Code 128 is a symbology that will draw *any* characters you give it, registry or not. Once that distinction clicks, every 'which barcode' question answers itself.
The three, side by side
| UPC-A | EAN-13 | Code 128 | |
|---|---|---|---|
| What it is | GS1 GTIN-12, drawn as the US retail symbol | GS1 GTIN-13, the international twin | A symbology — draws any ASCII data |
| Digits | 12 (11 + check digit) | 13 (12 + check digit) | Variable length, letters + digits |
| Who assigns | GS1 (licensed prefix) | GS1 (licensed prefix) | You — no registry |
| Cost | GS1 fees (below) | GS1 fees (below) | Free |
| Mandatory for | Amazon/retail North America | Amazon/retail internationally | Nothing — internal use |
| Scans in Shopify POS | Yes | Yes | Yes |
| Density | Fixed layout | Fixed layout | Compact — good on small labels |
Note the last row: on the tiny Avery formats or narrow thermal rolls, Code 128's density is not a nicety — it is what keeps the symbol wide enough to scan with its quiet zones intact.
UPC and EAN: one system, two lengths
UPC-A and EAN-13 both encode a GTIN (Global Trade Item Number) from GS1, the nonprofit that runs the registry. An UPC-A is literally an EAN-13 whose first digit is 0 — scanners treat them identically, which is why a US product scans in a Paris supermarket. You license a company prefix from GS1, allocate numbers under it, and each number identifies one product *variant* globally, forever. That global uniqueness is what marketplaces check: Amazon validates GTINs against the GS1 database and flags codes whose registered brand does not match the listing.
Code 128: the internal workhorse
Code 128 encodes letters, digits and symbols at high density with a mandatory check character — the reason it is the default for internal SKU-driven labels, shipping cartons (GS1-128 is Code 128 carrying GTIN data) and every stockroom label your customers never see. There is no registry and no fee; uniqueness is your job, scoped to your own catalog. Sequential values with a catalog-wide duplicate check — the approach detailed in the unique numbers guide — is the entire discipline.
What GS1 actually costs (US, 2026)
| Route | Up-front | Renewal | Fits |
|---|---|---|---|
| GS1 US single GTIN | $30 / barcode | none | A handful of marketplace products |
| GS1 US prefix (10 numbers) | $250 | $50/yr | Small catalogs headed to retail |
| GS1 US prefix (100 numbers) | $750 | $150/yr | Growing catalogs |
| Third-party 'cheap UPCs' | a few $ each | — | Nothing that touches Amazon — recycled prefixes registered to someone else |
Decision path for a Shopify store
- 01
Own store + POS only?
Code 128 with your own sequential values. Free, immediate, and Shopify's barcode field plus any scanner handles it. Most stores stop here.
- 02
Products already carry manufacturer UPC/EANs?
Use those — enter the existing GTIN in Shopify's barcode field and print it as-is. Never invent a replacement for a product that already has a global identity.
- 03
Heading to Amazon, Google Shopping or wholesale?
License GTINs from GS1 for those products (table above), put the GTIN in the barcode field, and label with UPC-A/EAN-13. Your other products can stay Code 128 — the two coexist fine in one catalog.
- 04
Print and verify
Whatever the type: correct size, quiet zones, 100% scale, one scan test. Symbology choice never rescues bad printing.
Doing this with Solvi Barcode Labels
Solvi Barcode Labels renders whatever lives in your Shopify barcode field — existing UPC/EANs print as-is — and generates unique Code 128 values for variants that have none, checked against your entire catalog before saving. Mixed catalogs (GTINs on marketplace products, internal codes elsewhere) print together on the same sheet.
Frequently asked questions
Can I sell in my own store with made-up barcode numbers?
Yes — for your own store and POS, any unique Code 128 value works, and no registry is involved. The only hard rule is internal uniqueness: one value, one variant. The moment a product heads to a marketplace, it needs a GS1-registered GTIN instead.
Is an EAN just a UPC with an extra digit?
Functionally, yes: UPC-A is the 12-digit North American form and EAN-13 the 13-digit international form of the same GS1 GTIN system — a UPC-A equals its EAN-13 with a leading zero. Modern scanners and Shopify POS read both interchangeably.
Does Shopify validate what I put in the barcode field?
No. The field accepts any text — it does not check digits, uniqueness or GS1 registration. That freedom is what makes internal Code 128 schemes possible, and also why duplicate barcodes are a self-inflicted risk; the checking has to happen in your process or your app.
What is GS1-128 — a fourth type?
No: GS1-128 is Code 128 carrying structured GS1 data (GTIN, batch, dates) with application identifiers, used on shipping cartons and in logistics. Product labels on retail shelves use UPC/EAN; cases and pallets use GS1-128. Same bars, different payload conventions.
Related guides
How-to
How to generate unique barcode numbers for your products
When an internal Code 128 code is enough, when you need GS1-registered UPC or EAN numbers, and how to keep every barcode in your catalog unique.
8 min read
Troubleshooting
Barcode labels won't scan: 6 fixes
Dead barcodes are a physical problem: work through size, quiet zone, contrast, print scaling, density and truncation — in the order most likely to fix yours.
7 min read
How-to
How to print Avery 5160 barcode labels from Shopify
The exact Avery 5160 geometry — 2.625″ × 1″ labels, 30 per sheet — plus the step-by-step workflow and print settings that keep all thirty barcodes aligned.
8 min read
Comparison
The 5 best Shopify barcode label apps in 2026, tested
Five barcode label apps compared on printing accuracy, media presets, unique-code generation and pricing — with transparent criteria, published test method, and the vendors' own listings linked.
10 min read
Do this in minutes with Solvi Barcode Labels
Print barcode labels right the first time: unique codes, true-size sheets, ready in minutes.