UPC-A, EAN-13, Code 128, Code 39 — if you've ever stared at a barcode format dropdown and guessed, this guide breaks down which one actually fits a retail product, a shipping carton, or an internal warehouse tag, plus how check digits and file formats work.
UPC-A and EAN-13 look almost identical on shelf — a block of vertical bars with a run of digits underneath — and functionally they're the same idea: a manufacturer prefix, a product identifier, and a check digit, all wrapped into a fixed-length number. The difference is regional convention. UPC-A is the default in the United States and Canada; EAN-13 is its international counterpart used almost everywhere else, and it's increasingly common on US shelves too since UPC-A numbers are technically a subset of EAN-13.
For example, a small batch producer packaging jam in 12oz jars might enter an 11-digit UPC-A base number and let the tool append the 12th check digit automatically, or a European import brand might use a 12-digit EAN-13 base and get the 13th digit calculated the same way. Either way, the barcode image itself will render correctly for any digits you type in — the number just won't be tied to your actual product in retail systems unless it's a GTIN you were assigned through GS1 (GS1 US administers UPC-A).
Not every barcode needs to map to a retail GTIN. If you're labeling a warehouse rack, an internal asset, or a batch of shipped cartons, the format choice is about what data you need to encode and what equipment will read it. Code 128 handles the widest range of characters and is the closest thing to a general-purpose barcode — a shipment reference like SHIP-2026-A17 encodes cleanly with no padding or digit-count rules to worry about. When encoding digits only, its Code 128-C variant packs two digits per symbol, producing a shorter, denser barcode.
For a hypothetical example: a small fulfillment operation shipping 12 cartons in a batch might use the tool's sequential mode to generate SHIP-001 through SHIP-012 automatically (prefix, start/end numbers, and zero-padding), rather than typing each one by hand. Outer shipping cartons themselves typically use ITF-14, a 14-digit format built for exactly that packaging layer.
| Use case | Format | Notes |
|---|---|---|
| US/Canada retail product | UPC-A | 12 digits, check digit automatic |
| International retail product | EAN-13 | 13 digits, check digit automatic |
| Small packaging | EAN-8 | 8 digits, for limited label space |
| Serial numbers / internal tracking | Code 128 | Letters, numbers, symbols, free length |
| Shipping cartons | ITF-14 | 14 digits, standard for outer packaging |
| Older industrial scanners | Code 39 | Uppercase + digits, wide compatibility |
For UPC-A and EAN-13, the check digit comes from a weighted sum of the odd- and even-position digits, then complemented up to the next multiple of ten. You don't need to calculate this by hand: enter the digits before the check digit (11 for UPC-A, 12 for EAN-13, 7 for EAN-8, 13 for ITF-14) and the correct final digit gets appended for you. This matters because a single wrong digit anywhere in a manually typed barcode number can produce an image that looks fine but fails validation the moment it's scanned at a real point-of-sale system.
PNG is a rasterized image — fine for most everyday needs, including desktop label printers and pasting into a spreadsheet or Word document. But if a barcode is going onto product packaging or a large sign, a raster image can look soft or pixelated once enlarged. SVG is a vector format: the bars are drawn as mathematical shapes rather than a fixed grid of pixels, so a print shop can scale it to any size and the bars stay perfectly sharp. If you're not sure which a print vendor wants, SVG is the safer default for anything beyond a small on-screen or printer-driven label.
Ready to generate a barcode with an automatic check digit and PNG/SVG download?
Try the free Barcode Generator →