Three formats, three jobs
Code 128, EAN-13, and UPC-A look alike — vertical bars and digits — but they answer different questions. EAN-13 and UPC-A answer “which product is this, for the checkout?”; Code 128 answers “which internal piece of information is this, for my own systems?” Choosing between them isn’t a matter of taste — it’s a matter of use case.
The decision rule fits in one question: who has to read the code, and where? A scan that stays within your walls follows your own convention; a scan that passes a checkout follows the GS1 standard. The table sorts the four formats the generator produces:
What each one encodes
| Code 128 | EAN-13 | EAN-8 | UPC-A | |
|---|---|---|---|---|
| Content | Letters, digits, symbols (ASCII) | 13 digits | 8 digits | 12 digits |
| Length | Variable | Fixed | Fixed | Fixed |
| Check digit | Yes (internal, invisible) | Yes (13th digit) | Yes | Yes |
| Typical use | Logistics, internal SKUs, traceability | Global retail | Small products | North American retail |
| Registration | Free — you decide | GS1 | GS1 | GS1 |
The use case decides, not you
Selling in retail stores → EAN-13 (or UPC-A)
If the product will pass a checkout, the format is non-negotiable: point-of-sale systems expect a GS1 identifier. In Europe and most of the world that’s EAN-13; in the US and Canada, historically UPC-A. Both are GS1 formats — a UPC-A is an EAN-13 whose first digit is 0 — and modern registers read either. EAN-8 exists for very small packages (cosmetics, confectionery) where 13 digits won’t fit.
Labeling stock or internal logistics → Code 128
For your own labels — shelf references, batch numbers, picking slips, inventory — Code 128 is the right tool: it encodes alphanumeric characters (ABC-12345), not just digits, and the convention is yours to set. No registration, no license: you decide the scheme and generate.
Shipping to North America → check the target checkout
A product bound for the North American market traditionally carries a UPC-A; a globally sold product carries an EAN-13. In practice, GS1 assigns compatible prefixes and modern North American checkouts accept EAN-13 — the question is settled when the number is assigned, not when the graphic is drawn.
The nuance generators avoid
A generator produces the graphic — the bars — not the number. For internal use, no issue: your STOCK-A-042 Code 128 only needs to be recognized by your own scans. For retail, though, the EAN-13 number must be assigned by GS1 under a paid license: that’s what guarantees global uniqueness and acceptance by chains. Inventing a plausible-looking EAN to sell in stores leads to collisions or rejections. FlashScan Pro’s generator validates the digits you enter (12-13 for EAN-13, 11-12 for UPC-A, printable ASCII for Code 128) and computes the check digit — the GS1 license remains on your side. For internal stock, no GS1 step is required: you define the convention (AISLE-A-0123, LOT-2026-09…), generate the Code 128, and print.
A note on readers
Whatever you generate will be read by two very different families of devices: retail laser/imager scanners at checkouts, which expect strict GS1 formats, and phone decoders, which read almost everything — Code 128, EAN, UPC, QR. An internal label only ever meets the second family, which is why the Code 128 convention can stay entirely yours. A retail product meets the first, which is why its number can’t be improvised.
And the neighboring formats: EAN-8, Code 39, ITF
The barcode landscape extends beyond the main trio. Two neighbors are worth knowing:
- EAN-8: the short version of EAN-13, reserved for very small packages (lipstick, gum, reduced labels) where thirteen digits won’t fit. Also GS1-assigned, and generatable in FlashScan Pro like the three main formats.
- Code 39: the alphanumeric ancestor, still found in some industries and government systems. Less dense than Code 128 — it produces longer labels at equal content — it’s the format you replace when modernizing an internal system.
- ITF-14: the shipping-carton format (codes printed directly on corrugated board). Outside the generator’s scope, but it’s what GS1 logistics uses for shipping units.
Generating the graphic
- Open the generator in Barcode mode.
- Pick the format: Code 128, EAN-13, EAN-8, or UPC-A.
- Enter the value — validation shows as you type; for EAN-13, 12 digits suffice, the check digit is computed.
- Download the PNG or SVG (vector is recommended for printed labels).
The EAN-13 anatomy — prefix, item reference, check-digit math — is in EAN-13: structure and check digit. And to verify your printed labels, the scanner reads 1D barcodes as well as QR codes.