QrDeco.com

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.

A GS1-128 payload written in bracket notation; the encoder inserts FNC1 between variable-length fields.

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

Common application identifiers on a logistics label
AIDataLength and notes
00SSCC-18Fixed 18 digits — the licence plate for a pallet or carton.
01GTIN-14Fixed 14 digits, including the check digit.
10Batch or lotVariable length, up to 20 characters. Needs a separator when followed by another field.
17Expiry dateFixed 6 digits, YYMMDD.
21Serial numberVariable 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.

← All use cases