Linear symbology
GS1-128
GS1-128 is Code 128 carrying structured GS1 data, where each field is introduced by a two-to-four digit Application Identifier in parentheses — (01) for a GTIN, (10) for a batch or lot, (17) for an expiry date. It is the standard symbology for logistics and carton labels because a trading partner's system can parse the fields rather than guess at them.
Specification
These are the values the editor enforces while you design, not figures collected from elsewhere — the same numbers its quiet-zone and resolution checks run on.
| Property | Value | In context |
|---|---|---|
| Minimum X-dimension | 0.25 mm | 0.0098 in · 10 thou |
| Quiet zone | 10 modules | 2.50 mm at the minimum X-dimension |
| Dimensionality | Linear (1D) | Read by laser or imager |
GS1-128 at 203, 300 and 600 dpi
A printer can only place whole dots, and 0.25 mm is not a whole number of them at any of these resolutions. What changes is how much a single dot of rounding costs you as a share of the narrow bar.
| Resolution | Narrow bar in dots | Printed as | Rounding error |
|---|---|---|---|
| 203 dpi | 2.00 | 2 dots | 0% |
| 300 dpi | 2.95 | 3 dots | 2% |
| 600 dpi | 5.91 | 6 dots | 2% |
What GS1-128 encodes
One or more GS1 Application Identifiers and their values, concatenated into a single symbol. Each AI defines the format and length of the data that follows it, which is what lets a receiving system split one barcode back into a GTIN, a batch code and a date without ambiguity.
Where it is used
- Carton, case and pallet labels moving between trading partners
- Batch, lot and expiry data that a retailer or 3PL scans on receipt
- Serialised shipping container codes on logistics units
Check digit
Two independent things are happening. The Code 128 symbol carries its own mandatory modulo-103 check character, and separately the GTIN inside AI (01) carries the GS1 mod-10 check digit as its final digit. A GTIN with a wrong check digit produces a barcode that scans perfectly and is then rejected by the receiving system.
How GS1-128 fails in practice
- Typing the parentheses as literal data. They delimit the Application Identifier for the encoder and are not themselves encoded — a symbol containing real bracket characters is not valid GS1-128.
- A GTIN in AI (01) whose check digit is wrong. Nothing about the printed symbol looks wrong; the failure appears at the trading partner as a rejected shipment.
- Getting the date format wrong in AI (17). It is YYMMDD, and a transposed month reads as a valid but incorrect expiry rather than as an error.
When to use something else
Questions about GS1-128
- Do I type the brackets around the Application Identifier?
- Yes. Enter them exactly as shown, for example (01)09501101020917. The brackets tell the encoder where each Application Identifier begins and ends; they are not encoded into the bars themselves.
- Can one GS1-128 barcode hold more than one field?
- Yes. Application Identifiers concatenate, so a single symbol can carry a GTIN, a batch code and an expiry date together. Whether your trading partner expects them in one symbol or several is their specification, not a limit of the symbology.