GS1-128 Barcodes – Label Software for Printing
Printing Labels with GS1-128 Barcodes – Software Guide
Follow this step-by-step guide to learn how to create GS1-128 barcodes with our Barcode Forge software and print them on labels or other media.
GS1-128, previously known as EAN-128 or UCC-128 depending on the region, is the most complex type of 1D barcode. It allows encoding extensive information in a single barcode. GS1-128 is used worldwide to manage and track goods throughout the entire supply chain – from production to delivery.
Structure of GS1-128
A GS1-128 barcode can encode one or multiple pieces of information within the same barcode. Each piece of information is introduced by an Application Identifier (AI). The Application Identifier is a numeric value that specifies the meaning and format of the encoded information. Example:
According to the table in the appendix, the GS1-128 barcode shown above encodes a 14-digit GTIN (AI 01) followed by a 6-digit expiration date (AI 15) in the YYMMDD format. Application Identifiers are highlighted in the human-readable line of the barcode using parentheses, though these are not encoded in the barcode itself.
As the table shows, there are around 150 such Application Identifiers used for various types of data. Each AI has a specific format that defines the length and allowed characters of the information.
GS1-128 on the Outside, Code 128 at the Core
Technically, GS1-128 is not a standalone barcode type that translates information into the characteristic pattern of bars. Rather, it is a standard for the structured storage of information that uses the "Code 128" barcode as its medium. This standard enables the identification and traceability of products in global supply chains and is managed by the internationally operating GS1 organization.
As a result, barcode scanners initially recognize a GS1-128 barcode as Code 128. To identify itself as GS1-128 and ensure proper data processing, the barcode always starts with the FNC1 function character. This character is automatically added by our software, so you do not need to handle it yourself.
The FNC1 character also serves a secondary purpose within GS1-128, which is explained in detail in a later section.
Data Integrity through Additional Software Validation
GS1-128 includes built-in mechanisms to detect errors during data entry and barcode scanning. To ensure maximum data integrity, our software performs additional validation of each piece of information within the GS1-128 barcode. For example, dates are checked for validity, while GTIN and SSCC values are verified using their check digits. Other data is validated according to the defined format (see appendix table).
If an error is detected, the software displays a detailed error message in the preview instead of generating the barcode. This allows you to correct any issues before printing.
Creating and Printing GS1-128 Barcodes with the Software
A sample project (download link) and the following explanations show you how to print GS1-128 barcodes in series. The project prints three different GS1-128 barcodes on an A4 sheet and can be tested using the 30-Day Trial version of the software and a standard A4 printer.
The Data section contains three datasets with typical GS1 information. You can rename or delete columns and add new ones by right-clicking the table header.
The data in the table is linked to a GS1-128 barcode object in the Label section. To see how this linking works, right-click the object, select Edit, and switch to the Barcode tab.
The illustration shows how placeholders represent individual pieces of information. These placeholders correspond to columns in the table shown above.
The red-highlighted placeholder FNC1 represents the FNC1 character. As mentioned earlier, this character serves a special purpose. Depending on the Application Identifier (AI), the length of the information can be fixed or variable. While AI 01 and AI 17 in our example always have fixed lengths (14 and 6 characters, respectively), AI 10 and AI 30 consist of a variable number of characters. For such AIs, the end of the information must be marked with an FNC1 character to ensure that a barcode scanner can correctly determine the length of the information.
You can refer to the appendix table to see which AIs require an FNC1 character at the end and which do not.
Tip: To save space on the label, place AIs with variable lengths at the end of the barcode whenever possible, as shown in our example with AI 30. This eliminates the need for the FNC1 character, reducing the width of your GS1-128 barcode by one character.
SSCC and GTIN – Check Digit Calculation
SSCC (AI 00) and GTIN (AI 01 + 02) are among the most commonly used pieces of information in GS1-128 barcodes. Both are numeric values that include a check digit as the last character. The software automatically validates this check digit.
If the check digit is missing, you can use a # symbol in its place. The software will then calculate the check digit and replace the # symbol with the correct value. For example, if your table contains 13-digit GTINs without check digits, set up the link in the Edit dialog as follows:
Appendix: Explanations for the Following Table
1. In the Format column, an "N" indicates that only numeric data is allowed, while "X" indicates alphanumeric data (plus additional characters). A double point (..) indicates that the number of characters can vary within a specified range. For example, "N..6" indicates a numeric value with a maximum length of 6 digits. Conversely, "N6" indicates a numeric value that must be exactly 6 digits in length.
2. Application Identifiers (column AI) ending with an "x" are intended to indicate fractions. The fraction is encoded without a decimal point. Instead, the number of fractional digits is inserted into the application identifier at the position of the "x".
For example, 310x (Net weight, kilograms):(3100)123456 = 123456 kg
(3101)123456 = 12345.6 kg
(3102)123456 = 1234.56 kg
(3103)123456 = 123.456 kg
(3104)123456 = 12.3456 kg
(3105)123456 = 1.23456 kg
Application Identifiers for the GS1-128
AI | Description | Format | FNC1 required |
---|---|---|---|
00 | Serial Shipping Container Code (SSCC) | N18 | |
01 | Global Trade Item Number (GTIN) | N14 | |
02 | GTIN of contained trade items | N14 | |
10 | Batch or lot number | X..20 | ✔ |
11 | Production date (YYMMDD) | N6 | |
12 | Due date (YYMMDD) | N6 | |
13 | Packaging date (YYMMDD) | N6 | |
15 | Best before date (YYMMDD) | N6 | |
16 | Sell by date (YYMMDD) | N6 | |
17 | Expiration date (YYMMDD) | N6 | |
20 | Internal product variant | N2 | |
21 | Serial number | X..20 | ✔ |
22 | Consumer product variant | X..20 | ✔ |
235 | Third Party Controlled, Serialised Extension of GTIN (TPX) | X..28 | ✔ |
240 | Additional product identification assigned by the manufacturer | X..30 | ✔ |
241 | Customer part number | X..30 | ✔ |
242 | Made-to-Order variation number | N..6 | ✔ |
243 | Packaging component number | X..20 | ✔ |
250 | Secondary serial number | X..30 | ✔ |
251 | Reference to source entity | X..30 | ✔ |
253 | Global Document Type Identifier (GDTI) | N13+X..17 | ✔ |
254 | GLN extension component | X..20 | ✔ |
255 | Global Coupon Number (GCN) | N13+N..12 | ✔ |
30 | Variable count of items (variable measure trade item) | N..8 | ✔ |
310x | Net weight, kilograms (variable measure trade item) | N6 | |
311x | Length or first dimension, metres (variable measure trade item) | N6 | |
312x | Width, diameter, or second dimension, metres (variable measure trade item) | N6 | |
313x | Depth, thickness, height, or third dimension, metres (variable measure trade item) | N6 | |
314x | Area, square metres (variable measure trade item) | N6 | |
315x | Net volume, litres (variable measure trade item) | N6 | |
316x | Net volume, cubic metres (variable measure trade item) | N6 | |
320x | Net weight, pounds (variable measure trade item) | N6 | |
321x | Length or first dimension, inches (variable measure trade item) | N6 | |
322x | Length or first dimension, feet (variable measure trade item) | N6 | |
323x | Length or first dimension, yards (variable measure trade item) | N6 | |
324x | Width, diameter, or second dimension, inches (variable measure trade item) | N6 | |
325x | Width, diameter, or second dimension, feet (variable measure trade item) | N6 | |
326x | Width, diameter, or second dimension, yards (variable measure trade item) | N6 | |
327x | Depth, thickness, height, or third dimension, inches (variable measure trade item) | N6 | |
328x | Depth, thickness, height, or third dimension, feet (variable measure trade item) | N6 | |
329x | Depth, thickness, height, or third dimension, yards (variable measure trade item) | N6 | |
330x | Logistic weight, kilograms | N6 | |
331x | Length or first dimension, metres | N6 | |
332x | Width, diameter, or second dimension, metres | N6 | |
333x | Depth, thickness, height, or third dimension, metres | N6 | |
334x | Area, square metres | N6 | |
335x | Logistic volume, litres | N6 | |
336x | Logistic volume, cubic metres | N6 | |
337x | Kilograms per square metre | N6 | |
340x | Logistic weight, pounds | N6 | |
341x | Length or first dimension, inches | N6 | |
342x | Length or first dimension, feet | N6 | |
343x | Length or first dimension, yards | N6 | |
344x | Width, diameter, or second dimension, inches | N6 | |
345x | Width, diameter, or second dimension, feet | N6 | |
346x | Width, diameter, or second dimension, yard | N6 | |
347x | Depth, thickness, height, or third dimension, inches | N6 | |
348x | Depth, thickness, height, or third dimension, feet | N6 | |
349x | Depth, thickness, height, or third dimension, yards | N6 | |
350x | Area, square inches (variable measure trade item) | N6 | |
351x | Area, square feet (variable measure trade item) | N6 | |
352x | Area, square yards (variable measure trade item) | N6 | |
353x | Area, square inches | N6 | |
354x | Area, square feet | N6 | |
355x | Area, square yards | N6 | |
356x | Net weight, troy ounces (variable measure trade item) | N6 | |
357x | Net weight (or volume), ounces (variable measure trade item) | N6 | |
360x | Net volume, quarts (variable measure trade item) | N6 | |
361x | Net volume, gallons U.S. (variable measure trade item) | N6 | |
362x | Logistic volume, quarts | N6 | |
363x | Logistic volume, gallons U.S. | N6 | |
364x | Net volume, cubic inches (variable measure trade item) | N6 | |
365x | Net volume, cubic feet (variable measure trade item) | N6 | |
366x | Net volume, cubic yards (variable measure trade item) | N6 | |
367x | Logistic volume, cubic inches | N6 | |
368x | Logistic volume, cubic feet | N6 | |
369x | Logistic volume, cubic yards | N6 | |
37 | Count of trade items or trade item pieces contained in a logistic unit | N..8 | ✔ |
390x | Applicable amount payable or Coupon value, local currency | N..15 | ✔ |
391x | Applicable amount payable with ISO currency code | N3+N..15 | ✔ |
392x | Applicable amount payable, single monetary area (variable measure trade item) | N..15 | ✔ |
393x | Applicable amount payable with ISO currency code (variable measure trade item) | N3+N..15 | ✔ |
394x | Percentage discount of a coupon | N4 | |
400 | Customers purchase order number | X..30 | ✔ |
401 | Global Identification Number for Consignment (GINC) | X..30 | ✔ |
402 | Global Shipment Identification Number (GSIN) | N17 | |
403 | Routing code | X..30 | ✔ |
410 | Ship to - Deliver to Global Location Number | N13 | |
411 | Bill to - Invoice to Global Location Number | N13 | |
412 | Purchased from Global Location Number | N13 | |
413 | Ship for - Deliver for - Forward to Global Location Number | N13 | |
414 | Identification of a physical location - Global Location Number | N13 | |
415 | Global Location Number of the invoicing party | N13 | |
416 | GLN of the production or service location | N13 | |
417 | Party GLN | N13 | |
420 | Ship to - Deliver to postal code within a single postal authority | X..20 | ✔ |
421 | Ship to - Deliver to postal code with ISO country code | N3+X..9 | ✔ |
422 | Country of origin of a trade item | N3 | |
423 | Country of initial processing | N3+N..12 | ✔ |
424 | Country of processing | N3 | |
425 | Country of disassembly | N3+N..12 | ✔ |
426 | Country covering full process chain | N3 | |
427 | Country subdivision Of origin | X..3 | ✔ |
7001 | NATO Stock Number (NSN) | N13 | |
7002 | UN/ECE meat carcasses and cuts classification | X..30 | ✔ |
7003 | Expiration date and time | N10 | |
7004 | Active potency | N..4 | ✔ |
7005 | Catch area | X..12 | ✔ |
7006 | First freeze date (YYMMDD) | N6 | |
7007 | Harvest date | N6..12 | ✔ |
7008 | Species for fishery purposes | X..3 | ✔ |
7009 | Fishing gear type | X..10 | ✔ |
7010 | Production method | X..2 | ✔ |
7020 | Refurbishment lot ID | X..20 | ✔ |
7021 | Functional status | X..20 | ✔ |
7022 | Revision status | X..20 | ✔ |
7023 | Global Individual Asset Identifier (GIAI) of an assembly | X..30 | ✔ |
703x | Number of processor with ISO Country Code | N3+X..27 | ✔ |
7040 | GS1 UIC with Extension 1 and Importer index | N1+X3 | |
710 | National Healthcare Reimbursement Number (NHRN) - Germany PZN | X..20 | ✔ |
711 | National Healthcare Reimbursement Number (NHRN) - France CIP | X..20 | ✔ |
712 | National Healthcare Reimbursement Number (NHRN) - Spain CN | X..20 | ✔ |
713 | National Healthcare Reimbursement Number (NHRN) - Brasil DRN | X..20 | ✔ |
714 | National Healthcare Reimbursement Number (NHRN) - Portugal AIM | X..20 | ✔ |
723x | Certification reference | X2+X..28 | ✔ |
7240 | Protocol ID | X..20 | ✔ |
8001 | Roll products (width, length, core diameter, direction, splices) | N14 | |
8002 | Cellular mobile telephone identifier | X..20 | ✔ |
8003 | Global Returnable Asset Identifier (GRAI) | N14+X..16 | ✔ |
8004 | Global Individual Asset Identifier (GIAI) | X..30 | ✔ |
8005 | Price per unit of measure | N6 | |
8006 | Identification of an individual trade item piece | N14+N2+N2 | ✔ |
8007 | International Bank Account Number (IBAN) | X..34 | ✔ |
8008 | Date and time of production | N8+N..4 | ✔ |
8009 | Optically Readable Sensor Indicator | X..50 | ✔ |
8010 | Component/Part Identifier (CPID) | Y..30 | ✔ |
8011 | Component/Part Identifier serial number (CPID SERIAL) | N..12 | ✔ |
8012 | Software version | X..20 | ✔ |
8013 | Global Model Number (GMN) | X..30 | ✔ |
8017 | Global Service Relation Number to identify the relationship between an organisation offering services and the provider of services | N18 | |
8018 | Global Service Relation Number to identify the relationship between an organisation offering services and the recipient of services | N18 | |
8019 | Service Relation Instance Number (SRIN) | N..10 | ✔ |
8020 | Payment slip reference number | X..25 | ✔ |
8026 | Identification of pieces of a trade item (ITIP) contained in a logistic unit | N14+N2+N2 | ✔ |
8110 | Coupon code identification for use in North America | X..70 | ✔ |
8111 | Loyalty points of a coupon | N4 | |
8112 | Paperless coupon code identification for use in North America | X..70 | ✔ |
8200 | Extended Packaging URL | X..70 | ✔ |
90 | Information mutually agreed between trading partners | X..30 | ✔ |
91 | Company internal information | X..90 | ✔ |
92 | Company internal information | X..90 | ✔ |
93 | Company internal information | X..90 | ✔ |
94 | Company internal information | X..90 | ✔ |
95 | Company internal information | X..90 | ✔ |
96 | Company internal information | X..90 | ✔ |
97 | Company internal information | X..90 | ✔ |
98 | Company internal information | X..90 | ✔ |
99 | Company internal information | X..90 | ✔ |
For questions about the GS1-128 or our software, please contact us!