Published:
Picking a barcode is not a matter of taste: the data you carry, the space you have and the device that will read it already narrow the choice a long way. Three questions settle most cases.
Linear (1D) barcodes grow horizontally as the data gets longer; on a narrow label a long Code 128 either squeezes past readability or overflows. Two dimensional codes fit the same data into a square: Data Matrix for very small surfaces (electronic parts, pharmaceutical cartons), QR where easy scanning matters more.
When space is genuinely tight, moving to 2D is almost always better than shrinking a 1D code: reducing the module width is what makes a barcode unreadable.
This question gets skipped most often and causes the most expensive mistake. The laser scanner at a supermarket checkout does not read 2D codes; QR is only read by camera-based scanners and phones. If the other side is a carrier or a retail chain, the symbology is not your choice — it is in their specification.
Do not assume the character set and length your chosen symbology accepts — test it. The same data can be valid in one symbology and invalid in another.
EAN-13 exists for retail product codes: exactly 13 digits, read at checkouts. Code 128 encodes arbitrary alphanumeric data compactly, which makes it the usual default for logistics and internal labels.
When the reader is a classic laser scanner — lasers read only 1D codes. A QR code needs a camera-based reader; choose it for URLs and larger payloads, not for existing 1D scan lines.
With a camera reader available, Data Matrix usually fits where a 1D code will not. Shrinking a 1D barcode below its minimum bar width just makes it unreadable.
When a printed ZPL barcode will not scan, the cause is usually in the file: wrong data, a module too narrow, or a clipped quiet zone. Check them in order.
The check digit your printer silently rewritesSend an EAN-13 with a wrong check digit and the printer does not complain — it prints a different number. Measured, and how to catch it before the run.
GS1-128 vs Code 128GS1-128 is Code 128 plus one invisible character. What FNC1 changes, why parentheses are not data, and why a wrong encoding is worse than no barcode.
What is ZPL?ZPL is the language Zebra thermal printers understand. How to read the commands, how a label is put together, and the most common mistakes.