Side by side
| Code 128 | EAN-13 | |
|---|---|---|
| What it holds | Letters, digits, punctuation | Exactly 13 digits |
| Who allocates the codes | You | GS1 (licensed company prefix) |
| Check digit | Automatic, hidden | Visible 13th digit |
| Retail checkouts | No | Yes |
| Cost | Free | GS1 membership fees |
| Size | Varies with length | Fixed (80–200%) |
Why Code 128 suits internal use
- Your codes, your format. Use the SKUs you already have, such as TEA-GRN-250, instead of a number from a range you must licence.
- Readable by people. Staff can type a code like BIN-A12 when a label is damaged.
- Compact digits. Runs of digits pack two per character, so numeric codes are short.
- No conflicts. Nobody's checkout will mistake it for a retail product.
When to use EAN-13 internally
If you sell products that already carry an EAN-13, scan that number rather than adding your own label. Most stock systems let a product have both a SKU and a GTIN. For goods you make and sell yourself only through your own shop, Code 128 is enough; if you later sell through retailers, you will need GS1 numbers and can add them then.
Designing internal codes
- Fixed length. SKU0001 to SKU9999 rather than SKU1 to SKU9999. Zero-padded codes sort properly and look consistent. The label sheet maker's sequence fill can zero-pad.
- Short. Every Code 128 character adds width. Eight to ten characters fits easily on a 63.5 mm label.
- Unambiguous characters. Avoid mixing O and 0, I and 1, and S and 5 in places people will type.
- No meaning that changes. Do not build a price or a supplier into the code; those change and the label would be wrong.
- A prefix per type. SKU, BIN, AST (asset) and so on make labels easy to tell apart.
Printing
Print Code 128 labels on standard sheets such as L7160 (21 per A4) or L7651 (65 per A4) with the label sheet maker, or on a thermal label printer from PNG files at 600 dpi made with the bulk ZIP. Keep a module width of about 0.25 mm or more for reliable reading.
Scanners and software
Any USB or Bluetooth barcode scanner that reads EAN-13 also reads Code 128: they are both standard linear symbologies and need no special setting. Most scanners act like a keyboard, typing the code into whatever field has focus, so they work with spreadsheets, stock systems and point-of-sale software without integration. Phones work too, with a barcode app or the scanning built into many stock and point-of-sale apps. If you want staff to scan with phone cameras, consider QR codes instead, which every phone camera opens without an app.
A worked example
A small coffee roaster sells 250 g and 1 kg bags in its own café and online, and supplies three independent grocers. The bags sold through the grocers need EAN-13 barcodes with the roaster's GS1 numbers, because the grocers' tills scan them. Inside the roastery, green-bean sacks, shelf bins and equipment carry Code 128 labels such as BEAN-ETH-001, BIN-A03 and AST-0007, printed on L7160 sheets. The stock system stores both the SKU and the GTIN for each retail product, so either can be scanned.
Changing later
If you start with Code 128 on your own products and later need retail barcodes, keep your SKUs and add GTINs to your product records; there is no need to relabel your shelves or bins.
What about QR codes?
QR codes hold more data in a small square and every phone camera reads them, which makes them useful for equipment manuals, maintenance logs and anything staff check with a phone. They need 2D imaging scanners rather than older laser scanners. For shelf and bin labels scanned all day with a handheld scanner, Code 128 is still the most robust choice.