What is GS1-128?
GS1-128 is a linear barcode based on Code 128 that uses Application Identifiers to carry several standardised data elements, such as an SSCC, GTIN, lot number and best-before date, together in a single symbol. The standard is maintained by GS1 and defined in the GS1 General Specifications; the underlying Code 128 symbology is specified in ISO/IEC 15417. GS1-128 is best known as the barcode on the pallet label: a pallet moving through a European distribution chain typically carries an SSCC encoded in GS1-128.
GS1-128 is the barcode that makes logistics labels “smart”: not just a number, but labelled data that every system reads the same way.
Until 2005, when EAN International and the US Uniform Code Council (which had joined EAN International in 2002) adopted the single name GS1, the symbol was called UCC/EAN-128. You will still find the names EAN-128 and UCC-128 in software and scanner manuals.
🧠 What makes GS1-128 different from plain Code 128?
A plain Code 128 symbol holds an arbitrary string; the reader has no idea what the characters mean. GS1-128 adds two agreements:
- FNC1 directly after the start character - by agreement between GS1 and AIM, this special function character in that position is reserved exclusively for the GS1 system. It tells the scanner that the content consists of GS1 data.
- Application Identifiers (AIs) - numeric prefixes of two to four digits that state which data element follows and in what format. They are printed in brackets below the bars, for example (00) or (17).
As a result a WMS, ERP system or MES can parse the content automatically, without supplier-specific agreements. That is the difference between a barcode as a “number plate” and a barcode as a structured data carrier. An overview of other types is in Barcode.
🧱 Which data can you encode in GS1-128?
GS1 defines hundreds of AIs. These are the ones most used in logistics and production:
| AI | Meaning | Format | Example |
|---|---|---|---|
| (00) | SSCC, identification of the logistic unit | 18 digits, fixed length | 387123450000000012 |
| (01) | GTIN of a trade item | 14 digits, fixed length | 08712345000011 |
| (02) | GTIN of the trade items contained on the pallet | 14 digits, fixed length | 08712345000011 |
| (10) | Batch or lot number | up to 20 characters, variable | L2027-0815 |
| (11) | Production date | YYMMDD | 270315 |
| (15) | Best before date (THT) | YYMMDD | 270930 |
| (17) | Use-by or expiry date | YYMMDD | 270930 |
| (21) | Serial number | up to 20 characters, variable | SN987654321 |
| (37) | Count of trade items | up to 8 digits, variable | 48 |
| (3103) | Net weight in kg, 3 decimals | 6 digits | 012500 (= 12.500 kg) |
| (400) | Customer’s purchase order number | up to 30 characters, variable | PO-445566 |
| (410) | Ship-to location (GLN) | 13 digits | 8712345000004 |
Note the difference between (15) and (17): (15) is the best-before date, a quality date, whereas (17) is the use-by or expiry date used for pharmaceuticals and medical devices. Choosing the wrong AI results in the wrong FEFO picking order in the WMS.
🔧 How is a GS1-128 barcode structured?
Read from left to right, a GS1-128 symbol consists of:
- Quiet zone of at least ten times the module width
- Start character (A, B or C) followed by FNC1
- Data as a sequence of AIs with their values
- Symbol check character calculated modulo 103, as in Code 128
- Stop character and another quiet zone
Code set C encodes two digits per symbol character, so numeric data takes half the space. The more digits and the fewer letters, the shorter the symbol, which is why most AIs are purely numeric.
AIs with a predefined length, such as (00), (01), (15) and (17), can follow each other directly. After a field of variable length, such as (10) or (21), an FNC1 must follow as a separator unless that field is the last one in the symbol. So put variable-length fields at the end.
The modulo-103 check character protects the symbol itself. On top of that, GS1 keys such as the SSCC and GTIN carry their own modulo-10 check digit as the last digit of the number. Both checks are needed: the first catches read errors, the second catches keying and numbering errors.
Example of the content:
(00)387123450000000012(17)270930(10)L2027-0815
This symbol holds an SSCC, an expiry date of 30 September 2027 and lot number L2027-0815. A scanner
transmits it as ]C1 followed by the characters, without brackets. That ]C1 is
the symbology identifier: the scanner adds it so that the software knows the data came
from a GS1-128 symbol. It is not encoded in the bars.
📏 What dimensions must a GS1-128 on a pallet label meet?
The GS1 General Specifications set the dimensions. For logistic units scanned in general distribution, the requirements are:
| Requirement | Value |
|---|---|
| Maximum symbol length | 165.10 mm including quiet zones |
| Maximum number of data characters | 48 per symbol |
| Module width (X-dimension) | 0.495 to 0.940 mm |
| Minimum bar height | 31.75 mm, excluding human-readable text |
| Left and right quiet zone | 10 × X |
| Minimum print quality | ISO grade 1.5 (C) |
| Common label sizes | A6 (105 × 148 mm) or A5 (148 × 210 mm); 4 × 6 or 6 × 8 inch in North America |
| Position on the pallet | barcodes between 400 and 800 mm from the base, ≥ 50 mm from a vertical edge |
GS1 recommends applying two identical labels on adjacent sides of the pallet, preferably on a short side and the side to its right. The label is divided into supplier, customer and carrier segments, with the SSCC barcode always at the bottom. If the data does not fit into 48 characters, it is split across two or three GS1-128 symbols.
🏭 Where is GS1-128 used?
| Application | What the barcode does |
|---|---|
| Pallet label in distribution | The SSCC links the pallet to the despatch advice (EDI DESADV) |
| Goods receipt in the WMS | One scan records item, quantity, lot and best-before date |
| Transport in the TMS | Track and trace per pallet or parcel |
| Production and release (GMP) | Lot and expiry date linked to the batch record and LIMS |
| UDI for medical devices | GTIN plus lot, serial number and expiry date |
| Utilities and assets | Meters and installations identified with a GSRN or GIAI |
Retailers and wholesalers in the Netherlands and across Europe usually make an SSCC pallet label in GS1-128 a condition of delivery. In healthcare, GS1 is one of the issuing entities designated by the EU for the UDI under the MDR (2017/745) and IVDR (2017/746), alongside HIBCC and others. Medicinal product packs, by contrast, use the 2D DataMatrix for serialisation.
🔄 How does GS1-128 compare with DataMatrix, QR Code and RFID?
| Feature | GS1-128 | GS1 DataMatrix | GS1 QR Code | RFID (EPC) |
|---|---|---|---|---|
| Type | 1D linear | 2D matrix | 2D matrix | Radio tag |
| Capacity | 48 characters | up to approx. 2,300 characters | up to several thousand characters | depends on chip |
| Reader | Laser or camera | Camera | Camera | RFID reader |
| Read distance | Up to several metres (large X) | Short | Short | Up to metres, no line of sight |
| Typical use | Pallet and case labels | Pharma, healthcare, parts | Consumer links | High-volume processes |
GS1-128 remains dominant in logistics because existing laser scanners read it and it can be scanned at a distance in a warehouse. The GS1 Sunrise 2027 initiative, which aims to make retail checkouts ready for 2D barcodes by the end of 2027, concerns consumer products, not the pallet label. For traceability across the whole chain, see Tracking and Tracing.
🛠️ How do you implement GS1-128 in your production and logistics process?
- Arrange your numbers - apply to your national GS1 organisation (GS1 Nederland in the Netherlands) for a GS1 company prefix. From it you create GTINs and SSCCs with a valid check digit.
- Define the content per label type - agree with your customers which AIs are mandatory; at least the SSCC, often supplemented with GTIN, count, lot and date.
- Generate labels at the source - let the ERP, MES or packaging line print the label with live data, so that the label and the despatch advice carry the same SSCC.
- Choose the right printer and media - a thermal transfer printer at 203 or 300 dpi can reach the required quality when the module width is matched to whole printer dots.
- Verify print quality - check samples with a barcode verifier according to ISO/IEC 15416 for grade C or better.
- Test the chain - scan received labels in the customer’s WMS and confirm that dates, lot and quantities are read correctly.
A common mistake is reusing an SSCC. GS1 requires that an SSCC is not reallocated within one year of the shipment date; sector requirements often extend that period.
In OT convergence, GS1-128 is a clear touchpoint: line controls and label printers in the OT environment produce data that flows straight into the supply chain systems of IT and trading partners. Errors on the shop floor therefore surface further downstream in supply chain management.
❓ Frequently asked questions
What is the difference between GS1-128 and Code 128?
GS1-128 is an application of Code 128 with an FNC1 character directly after the start character and Application Identifiers for the data. A plain Code 128 symbol only holds a string of characters with no agreed meaning. Thanks to that structure, every system interprets a GS1-128 barcode in the same way.
How much data fits in a GS1-128 barcode?
A GS1-128 barcode holds at most 48 data characters and may be no longer than 165.10 mm including quiet zones. If you need more information, you split the data across two or three symbols on the same label. A GS1 DataMatrix can hold far more data but requires a camera-based scanner.
Why are there brackets below a GS1-128 barcode?
The brackets around Application Identifiers such as (00) or (10) are only there to make the human-readable text easier to read. They are not encoded in the bars. The scanner transmits the data without brackets, preceded by the symbology identifier ]C1.
Is GS1-128 the same as UCC-128 or EAN-128?
Yes, UCC-128, EAN-128 and UCC/EAN-128 are older names for the same GS1-128 barcode. The name changed in 2005, when EAN International and the Uniform Code Council continued together as GS1. Scanners and label software sometimes still use the old names.
Is an SSCC pallet label with GS1-128 mandatory?
No law requires a GS1-128 pallet label, but most retailers, wholesalers and logistics service providers make it a condition of delivery. Without an SSCC the receiver cannot automatically match the pallet to the despatch advice. In practice, the label is therefore a requirement for being able to deliver.
Will 2D barcodes replace the GS1-128 barcode?
On consumer products the market is moving to 2D barcodes such as GS1 DataMatrix and QR Codes with GS1 Digital Link. On pallets and cases GS1-128 remains the standard, because it can be read at a distance with existing laser scanners. A pallet label may, however, carry an additional 2D barcode alongside the GS1-128 symbols.
📌 In summary
GS1-128 is the GS1 variant of Code 128: a linear barcode with FNC1 and Application Identifiers that carries up to 48 characters of structured data. On the pallet label it holds the SSCC, often supplemented with GTIN, count, lot and date, and so connects the physical flow of goods with EDI, the WMS and ERP. If you get the AIs, dimensions and print quality right, traceability down to the pallet becomes reliable, in real time at every scan point.
GS1-128 is a flexible barcode standard that captures multiple types of information in a single symbol and forms the backbone of traceability in logistics, healthcare and industry.
