My Tool Studio
Generators·4 min read

Barcode Formats Compared: Code 128, EAN-13, and UPC

Every product on a store shelf carries one, and so does nearly every box in every warehouse, yet the stripes are not interchangeable. This guide compares the formats in practical terms: which symbology suits a retail checkout, which fits an internal asset tag, why EAN and UPC differ by exactly one digit, and what a check digit actually protects you from. If you're looking at the Barcode Generator's format list unsure whether to pick Code 128 or EAN-13, the next few sections settle it.

QR

One barcode for the shop, another for the stockroom

Two jobs that only look alike.

Retail barcodes and internal barcodes solve different problems. A checkout barcode must be globally unique, because scanning a chocolate bar in Lisbon has to resolve to the same product as in Osaka, which is why retail numbers are licensed through GS1 and follow rigid digit rules.

An internal barcode answers only to your own systems. The label on a returned laptop or a warehouse bin just needs to match a key in your database, so you get to invent the scheme, mix letters and digits, and skip licensing entirely. Choosing a format starts with knowing which of these two worlds the label will live in.

Barcode formats compared across the 22 options

The format list covers the useful spectrum. Code 128 handles full ASCII at high density, making it the modern default for logistics and anything alphanumeric. Code 39 is its older, bulkier ancestor, still required by some industrial and government systems. EAN-13 and its short-form sibling EAN-8 rule international retail, UPC-A and the compressed UPC-E rule North American checkouts, and ITF-14 marks the corrugated outer cartons that cases ship in.

The rest are specialists: GS1-128 carries application identifiers such as GTIN, batch and expiry on logistics labels, ITF (Interleaved 2 of 5) packs even-length digit strings for warehousing, Code 93 squeezes Code 39's characters into less space, Codabar lingers on library cards and blood bags, EAN-5 and EAN-2 are add-ons for book prices and magazine issues, MSI in four check digit variants persists in shelf labeling, and Pharmacode exists solely for pharmaceutical packaging control. If none of those niches is yours, the realistic choice is Code 128 for internal work and EAN-13 or UPC-A for retail.

Code 128 for internal inventory labels

For stockroom and asset labels, Code 128 wins on three counts: it encodes letters, digits, and punctuation, it packs digits tighter than the other general formats here, and nearly every handheld scanner reads it without configuration. Your existing SKU scheme survives unchanged.

Try it directly. Input: INV-2026-0042 with Code 128 selected. Output: a crisp symbol with the text INV-2026-0042 printed beneath the bars, and a scanner returns precisely that string, hyphens included, to whatever field has focus. The value is arbitrary, which is the entire point; the barcode is just a fast, typo-proof keyboard.

EAN vs UPC at the checkout scanner

The difference is mostly geography. UPC-A carries 12 digits and grew up in North American retail; EAN-13 carries 13 and covers most of the rest of the world. They're siblings, not rivals: prepend a zero to any UPC-A number and you have its valid EAN-13 form, and modern point of sale scanners read both.

Both end in a check digit computed from the preceding digits, which lets a scanner catch misreads instead of charging for the wrong product. The tool computes it for you. Input: the 12 digits 590123412345 with EAN-13 selected. Output: a symbol displaying 5901234123457, the final 7 being the calculated check digit. Enter all 13 digits and the tool verifies them instead; if the last one is wrong, the message shows the correct check digit. Feed it letters or eleven digits and you get a plain message saying what to fix rather than an invalid retail code.

Barcode mistakes scanners refuse to forgive

Barcodes fail in predictable ways, and almost all of them are decided before printing:

  • Wrong digit counts for the fixed-length formats; EAN-13 wants 12 digits, EAN-8 wants 7, UPC-A wants 11 and ITF-14 wants 13, with the check digit appended automatically.
  • Printing from a stretched or unevenly scaled raster image, which distorts the bar width ratios that scanners actually measure.
  • Putting a made-up number on a product headed for retail; without a GS1 licensed prefix, the checkout system either rejects it or resolves it to someone else's product.
  • Ink spread on cheap label stock closing the gaps between narrow bars, which is why a test print on the real stock matters.
  • Cropping away the blank space flanking the symbol, since scanners need that margin to find the edges.

Print tips for barcodes that scan the first time

Print from the SVG download where your software accepts it, so bar edges stay exact at any scale; when a label program only takes images, use the PNG at 3x or more, or download a PDF at the exact width the label needs. Keep Show human-readable text switched on, because the day a label gets scuffed, a person typing those digits is your fallback. And validate the workflow end to end once: print one label, scan it with the actual hardware, and confirm the value lands correctly in your system before running hundreds.

Barcode Generator or a QR tool for the job

Pick a barcode when dedicated scanner hardware and legacy systems are involved; 1D symbols are what checkout lanes, warehouse guns, and inventory software expect. Pick a QR code when people with phones do the scanning, since no consumer points a camera at an EAN. For long runs, the Barcode Generator's bulk mode takes a pasted list, a spreadsheet or a numbered sequence and returns a ZIP or a label sheet, while the Bulk QR Code Generator does the same for QR codes and the QR Code Generator covers single styled codes. Plenty of warehouses end up with both formats on one label, each serving its own reader.

Try it now

Open Barcode Generator

The tool is one click away. No sign up, no upload, no payment.

Open Barcode Generator