GS1-128 Label: Application Identifiers on a Logistics Label
A GS1-128 label is a Code 128 symbol carrying GS1 application identifiers: a GTIN, a batch number, an expiry date, a serial number. The bars look like ordinary Code 128; what changes is the payload grammar and the FNC1 character that tells a scanner where one variable-length field ends and the next begins.
GS1-128 is Code 128 with a GS1 payload
Code 128 is a general-purpose symbology. GS1-128 constrains it: the first symbol character is FNC1, every field begins with a registered application identifier, and the data must follow that identifier’s length and character rules. A scanner that knows GS1 parses the fields; a plain Code 128 reader still sees the bars but cannot interpret the structure. Do not label a GS1-128 symbol as “Code 128” on a shipping document.
Pick the application identifiers
| AI | Data | Length and notes |
|---|---|---|
| 00 | SSCC-18 | Fixed 18 digits — the licence plate for a pallet or carton. |
| 01 | GTIN-14 | Fixed 14 digits, including the check digit. |
| 10 | Batch or lot | Variable length, up to 20 characters. Needs a separator when followed by another field. |
| 17 | Expiry date | Fixed 6 digits, YYMMDD. |
| 21 | Serial number | Variable length, up to 20 characters. |
Fix the order early: [01] GTIN, [17] expiry, [10] batch is the familiar sequence on food and pharma cartons. Only include what the receiving system actually reads — every extra field makes the symbol longer and the bars narrower.
Build the bracketed payload
- Write each field as [AI]value, with no spaces between fields.
- Use the GTIN-14 for AI 01 and a six-digit YYMMDD for AI 17.
- Let the encoder insert FNC1: bracketed input is the safe way to express it without typing control characters.
- Keep variable-length fields such as 10 and 21 short; they are the ones that force a separator.
The AI 01 check digit is part of the GTIN and must be correct. If your ERP supplies a 13-digit GTIN, pad it to 14 digits on the left before encoding — the leading zero is part of the number, not formatting.
Print the logistics label
A GS1-128 symbol on a carton is usually printed at 100% or larger, with a quiet zone of at least ten modules on each side and bars perpendicular to the direction the label is read. Keep the human-readable interpretation line — the bracketed AI text — beneath or beside the bars so warehouse staff can work when a scanner fails. Test with the scanner the warehouse actually uses, at the distance it is actually held.
- Leave at least 10 mm of blank label around the symbol.
- Do not shrink below 80% magnification for a conveyor scanner.
- Avoid printing over seams, staples or the corrugated flute.
- Print a test carton and scan it after the box is closed and stacked.
Frequently asked questions
What is the difference between GS1-128 and Code 128?
GS1-128 is Code 128 with a GS1 payload: FNC1 leads the symbol and the data follows application-identifier rules. A plain Code 128 can hold arbitrary text.
Do I need FNC1 between every field?
No. Fixed-length fields such as 01 and 17 need no separator. FNC1 is required after a variable-length field when another field follows it.
Can a phone scan a GS1-128 label?
Some apps can decode the bars, but interpreting the application identifiers is a separate step. Use a warehouse scanner or software that parses GS1 data.