← Blog  ·  Barcodes  ·  4 min read

EAN-13 vs UPC-A vs Code 128: Which Barcode You Need

Three symbologies cover most of what a small business needs. The decision is not technical taste — it is where the code will be scanned and who assigned the number inside it.

Advertisement

Selling retail outside North America: EAN-13

Thirteen digits, fixed length, read by retail tills worldwide. The first digits are a company prefix licensed through a GS1 member organisation (not, despite a common belief, the country the product was made in); the last is a check digit computed from the other twelve. If your product will sit on someone else’s shelf, this is the one — and the number must come from a GS1 licence, not be invented. The small-shop guide covers when you genuinely need that licence and when you do not.

Selling retail in the US and Canada: UPC-A

Twelve digits and structurally the same family — a UPC-A is an EAN-13 with a leading zero, and modern tills read both interchangeably. Choose it when your distributor or marketplace asks for UPC specifically; otherwise EAN-13 is the safer international default.

4 006381 333931EAN-1313 digits · retail worldwide0 36000 29145 2UPC-A12 digits · US & Canada retailSKU-2481-ACode 128letters + digits · internal useBars illustrative — the generator produces exact module widths per ISO/IEC 15420 and 15417.
Same idea, three jobs: EAN-13 and UPC-A are fixed-length retail codes; Code 128 trades till compatibility for free-form content.

Everything internal: Code 128

Shelf labels, asset tags, tote boxes, work orders — anything scanned only by your own equipment. Code 128 encodes letters as well as digits, has no registration authority and no fixed length, which suits SKUs like WH-2481-A. The trade: a retail till will beep at it without knowing what to do, because it is not a retail number.

How long a Code 128 label gets

Code 128 has no fixed length, so its width depends on what you put in it. This site's encoder uses Code 128's subset B, which covers letters, digits and punctuation: each character adds 11 modules, and the start, check and stop symbols add 35 more. The widths below include a quiet zone of 10 modules on each side.

Widths include the quiet zones. Code 128 rows measured with this site's encoder (11 modules per character plus 35, and 10 each side). EAN-13 is 95 modules plus quiet zones of 11 and 7, 37.29 mm at 100% (GS1 Canada); a 0.25 mm module is below the 0.264 mm that 80% allows.
ContentCharactersWidth, 0.25 mm module0.33 mm module
A-1042630.3 mm39.9 mm
WH-2481-A71041.3 mm54.5 mm
INV-2026-0847-X1555.0 mm72.6 mm
SN-0000-4411-2026-772068.8 mm90.8 mm
EAN-1313below 80%37.3 mm

A 15-character order number at the 0.33 mm module a retail EAN uses comes out at 72.6 mm, about twice as wide as the EAN itself. Two things keep internal labels small: shorter codes, and a smaller module once you have checked that your own scanners read it. Code 128 also has a subset C that packs two digits into each symbol, so a digits-only code from a generator that uses it is shorter than these figures; this site's encoder uses subset B for everything.

Books: ISBN, which is secretly EAN

An ISBN is a numbering system, not a barcode. On the back cover it is printed as a normal EAN-13 beginning 978 or 979 — the generator here accepts ISBN-10 or ISBN-13 and converts either into the EAN a till actually reads, validating the check digit both ways.

 EAN-13UPC-ACode 128
Length13 digits, fixed12 digits, fixedvariable, letters + digits
Number assigned byGS1 licenceGS1 licenceyou
Scanned atany retail tillany retail tillyour own scanners
Check digitautomatic, position 13automatic, position 12internal checksum

The two mistakes that survive this table

First: printing bars in red because it matches the brand. Laser tills read in red light, so red bars vanish. The generator’s safety check warns you before anything is printed. Second: trimming the quiet zone either side of the bars to fit a label; it is part of the symbol, not white space.

Sources

EAN-13, UPC-A or Code 128, with the check digit computed for you.

Make a barcode →
Advertisement