// Key takeaways
- GS1-128 carries data as Application Identifiers, so one symbol can hold GTIN, batch and dates, up to 48 data characters.
- The SSCC, AI (00), is an 18-digit number that identifies one logistic unit and must not be reused within a year of shipment.
- Variable-length fields such as the batch need an FNC1 separator unless they come last; that is where badly built barcodes fail.
- GS1 places pallet labels 400 to 800 mm above the base, at least 50 mm from an edge, ideally on two adjacent sides.
- A line check compares each field with the order, the run or the WMS, not just whether the code reads.
What are Application Identifiers?
An Application Identifier (AI) is a short prefix in brackets that says what the following data means and how long it is. The brackets appear only in the human-readable text under the barcode; in the bars the AIs are encoded directly (GS1 General Specifications, 3.2). GS1 South Africa describes GS1-128 and ITF-14 as the barcodes used to track items through the supply chain (GS1 South Africa, barcode types).
| AI | Data | Format | Separator needed after it? |
|---|---|---|---|
| (00) | SSCC: identifies one logistic unit, such as a pallet | 18 digits | No (fixed length) |
| (01) | GTIN of a trade item | 14 digits | No |
| (02) | GTIN of the trade items contained in a logistic unit | 14 digits; only with (00) and (37) | No |
| (10) | Batch or lot number | Up to 20 characters | Yes, unless it is the last field |
| (11) | Production date | YYMMDD | No |
| (13) | Packaging date | YYMMDD | No |
| (15) | Best before date | YYMMDD | No |
| (17) | Expiration date (USE BY or EXPIRY) | YYMMDD | No |
| (21) | Serial number | Up to 20 characters | Yes, unless last |
| (37) | Count of trade items contained | Up to 8 digits; only with (00) and (02) | Yes, unless last |
GS1 also sets which AIs belong together. The GTIN of contents (02) is used only with an SSCC (00) and a count (37), and the count only with those two; a batch (10) goes with a GTIN (GS1 General Specifications, 4.13.2). A label that breaks these rules can still scan, but the customer’s system may reject it.
How is the data built, and why do some GS1-128 barcodes give the wrong data?
GS1-128 is Code 128 with a Function 1 character (FNC1) in the first position after the start character, a position reserved for GS1 by agreement with AIM (GS1 General Specifications, 5.4). A reader reports it with the symbology identifier ]C1, so the receiving system knows to parse AIs. Fields with a predefined length, such as the GTIN and the dates, simply end. Fields with a variable length, such as the batch or the count, must be followed by an FNC1 separator if another field follows. GS1 advises putting fixed-length fields first and variable-length fields last.
Example, for illustration only. A homogeneous pallet of 48 cases might carry a second GS1-128 with (02)10614141123459(15)271130(37)48(10)L2610A: the case GTIN, best before 30 November 2027, the count and the batch. The count is variable length and not last, so an FNC1 must follow “48”. Without it, the receiving system reads the count as 4810L2610A and the batch disappears. The barcode still decodes, so a reader that only reports “read” passes it; a reader that parses the AIs and compares each field with the expected values catches it.
What is an SSCC, and why is it on the pallet label?
The SSCC, Serial Shipping Container Code, identifies one logistic unit, for example a pallet or a roll cage (GS1, SSCC). It is 18 digits: an extension digit (0 to 9) chosen by the company that builds the SSCC, its GS1 company prefix, a serial reference it allocates, and a check digit. The number stays with the unit for its life and must not be reallocated within one year of the shipment date; regulations or industry rules may extend that (GS1 General Specifications, 3.3.1 and 4.3.1).
The check digit uses the same weights as every GS1 key. GS1’s own example: the 17 digits 37610425002123456, weighted 3, 1, 3 … from the left, sum to 101; the next multiple of ten is 110, so the check digit is 9 and the SSCC is 376104250021234569 (GS1 General Specifications, Table 7-9).
The SSCC is the single mandatory element on every GS1 logistic label and is carried in GS1-128 with AI (00) (GS1 General Specifications, 6.6.3). The receiving distribution centre scans it and looks up, in the despatch advice sent by EDI, what the pallet should contain. That is why a wrong or duplicated SSCC causes more trouble than an unreadable one: it points to the wrong data. See the pallet identification system for how a dispatch line reads it.
What does the GS1 logistic label look like, and where does it go?
GS1 groups the label into three building blocks: a top block for free text and graphics, a middle block of text with data titles, and a bottom block with the barcodes and their human-readable text. Only the bottom block is mandatory, and the GS1-128 carrying the SSCC goes in the lowest part of the label, bars upright to the pallet base (GS1 General Specifications, 6.6.3–6.6.4). The GS1 Logistic Label Guideline describes the same layout in more detail (GS1 Logistic Label Guideline).
Swipe sideways to see the whole drawing →
| Label element | GS1 rule | What a line station checks |
|---|---|---|
| SSCC in GS1-128, AI (00) | The single mandatory element; in the lowest part of the label | Present, valid check digit, not used before, matches the dispatch record |
| Other barcodes | GTIN of contents, count, batch, dates as needed, in GS1-128 | Each field matches the pallet that was built |
| Human readable text | Required for every element string in a GS1-128 | Optional OCR, if the customer asks for it |
| Text with data titles | Data content at least 7 mm high; titles in English unless agreed otherwise | Normally not checked by the reader |
| Label size | Labeller’s choice; A6 or 4 × 6 in for the SSCC and a little more, A5 or 6 × 8 in for more data | Label present and in the expected area |
| Placement | 400 to 800 mm above the pallet base, at least 50 mm from a vertical edge; two identical labels on adjacent sides recommended | Reader height and number of readers |
The placement rules apply to all pallets: all GS1 barcodes between 400 and 800 mm above the base, as high as possible on pallets lower than 400 mm, and at least 50 mm from any vertical edge (GS1 General Specifications, 6.7.1.1 and 6.7.2).
How big must a GS1-128 be?
The size limits depend on whether the barcode is on a case or on a logistic label (GS1 General Specifications, 5.12.3.2 and 5.12.3.5).
| Parameter | Case label (table 2) | Pallet / logistic label (table 5) |
|---|---|---|
| X-dimension | Minimum and target 0.495 mm, maximum 1.016 mm | Minimum and target 0.495 mm, maximum 0.940 mm |
| Minimum bar height | 31.75 mm | 31.75 mm |
| Quiet Zone | 10X each side | 10X each side |
| Minimum print quality | 1.5/10/660 | 1.5/10/660 |
| Maximum symbol length | 165.10 mm | 165.10 mm; with an SSCC this caps the X-dimension at 0.940 mm |
| Maximum data | 48 data characters per symbol | 48 data characters per symbol |
The 165.10 mm length limit is why GS1-128 labels often split data into two barcodes: an SSCC alone in one, the contents, count, dates and batch in another. GS1-128 must not be used for more than 48 data characters in one symbol (GS1 General Specifications, 5.4.4.3).
How is a GS1-128 barcode checked on the line?
A fixed code reader reads the label after the labeller or print-and-apply unit, before the pallet leaves the wrapper or the case leaves the line. A station that protects the customer’s receiving process does five things:
- Reads every barcode on the label, and counts them, so a missing second barcode is caught.
- Parses the AIs, including FNC1 separators, rather than comparing raw strings.
- Compares each field: GTIN and count against the pallet that was built, batch and dates against the run data from the PLC or MES.
- Checks the SSCC: valid check digit, not seen before, and recorded against the dispatch order in the WMS.
- Stops or diverts a pallet with a wrong or unreadable label, and confirms it was stopped.
Carton and pallet verification covers the station; why barcodes that scan are still rejected at the DC covers what receiving checks beyond the read.
Frequently asked questions
What is the difference between GS1-128 and Code 128?
GS1-128 is Code 128 used under GS1 rules: it starts with the FNC1 character and carries data as GS1 Application Identifiers. A plain Code 128 barcode has no AIs, so a retailer’s system cannot interpret it as a GTIN, batch or SSCC.
Can the expiry date on the pack and in the GS1-128 barcode disagree?
Yes, if they come from different sources. A station that reads the barcode with AI (17) and the printed date with OCR can compare the two, and both with the expected date for the run.
Can we reuse SSCC numbers?
Not within one year of the shipment date, under the GS1 rule; regulations or your customers may require longer. A line station that keeps a list of issued SSCCs flags a repeat before the pallet ships.
Where should the pallet label go?
GS1 puts all barcodes between 400 and 800 mm above the pallet base and at least 50 mm from a vertical edge, and recommends two identical labels on adjacent sides.
Sources
- GS1 General Specifications, Release 26.0 (Jan 2026), GS1 South Africa copy: 3.2, 3.3.1, 4.13.2, 4.3.1, 5.4, 5.12.3, 6.6, 6.7, Table 7-9 (standard, checked 2026-10-27)
- GS1: Serial Shipping Container Code (SSCC) (standards body page, checked 2026-10-03)
- GS1 Logistic Label Guideline, Release 1.3 (GS1 guideline)
- GS1 South Africa: barcode types (standards body page, checked 2026-10-27)