GS1-128 is an application standard of the GS1implementation using the Code 128barcodespecification. The former correct name was UCC/EAN-128. Other no longer used names have included UCC-128 and EAN-128. The GS1-128 standard was introduced in 1989 [1] and uses a series of Application Identifiers to include additional data such as best before dates, batch numbers, quantities, weights and many other attributes needed by the user.
GS1-128 is an application standard of the GS1 implementation using the Code 128 barcode specification. The former correct name was UCC/EAN-128. Other no longer used names have included UCC-128 and EAN-128. The GS1-128 standard was introduced in 1989 and uses a series of Application Identifiers to include additional data such as best before. With Code 128 almost all barcode readers on the market today will will expect a checksum with the barcode. If the code does not scan you may have created it without a checksum, a common mistake when using a Code 128 barcode font, see below. Scanner recommendation for Code 128 Especially older barcode scanners may not support Code 128 at all.
Overview[edit]
The GS1-128 standard is an application standard within the Code 128 barcode. It identifies data with Application Identifiers (AI). Without spaces below, a simple SSCC (Serial Shipping Container Code) barcode would look something like this:
In the example above, [FNC1] is the single character Function Code 1, which specifies that a Code 128 barcode is a GS1-128 code. 00 is the serial shipping container code ('SSCC') AI that designates the following data as a serial shipping container code. 12345678 is the company number. 0000000001 is the container number.
Code 128 Barcode Free
It is possible to encode several pieces of data in one barcode. For example, a product serial number (application identifier code 21), production date (code 11), and expiration date (code 17) together would look something like this:
An additional FNC1 is required before the production date, because the preceding product serial number is variable length. This is not required before the expiration date, because the production date is fixed length. Reordering the components to place a variable-length field last produces a more compact form:
Mapping to EPC codes[edit]
As EPC and EAN respectively UCC as code systems are not congruent, GS1-128 gets mapped to EPC-GTIN with a reference list including both codes per type of product. However, there is no mapping for the serial number with EPC-SGTIN.
Full list of Application Identifiers[edit]
This list is from 2003 and therefore out of date and possibly incorrect. Also this is copyrighted by GS1 – for the up to date list please see the link below for the GS1 General Specifications[2] Because code 128 is more efficient at coding pairs of digits, preference is given to even lengths in numeric fields.
All dates are formatted as YYMMDD.
y in the AI gives a number of decimal places in the following value. The represented value is the following integer divided by 10y. For example, a net weight of 22.7 kg could be coded as 3101 000227, 3102 002270, 3103 022700, or 3104 227000.
Code | Description | data length (without AI) |
---|---|---|
00 | Serial Shipping Container Code (SSCC) | 18 |
01 | Global Trade Item Number (GTIN) | 14 |
02 | GTIN of Contained Trade Items | 14 |
10 | Batch/Lot Number | variable, up to 20 |
11 | Production Date | 6 |
12 | Due Date | 6 |
13 | Packaging Date | 6 |
15 | Best Before Date (YYMMDD) | 6 |
17 | Expiration Date | 6 |
20 | Product Variant | 2 |
21 | Serial Number | variable, up to 20 |
22 | Secondary Data Fields | variable, up to 29 |
23n | Lot number n | variable, up to 19 |
240 | Additional Product Identification | variable, up to 30 |
241 | Customer Part Number | variable, up to 30 |
242 | Made-to-Order Variation Number | variable, up to 6 |
243 | Packaging component number | variable, up to 20 |
250 | Secondary Serial Number | variable, up to 30 |
251 | Reference to Source Entity | variable, up to 30 |
253 | Global Document Type Identifier | variable, 13–17 |
254 | GLN Extension Component | variable, up to 20 |
255 | Global Coupon Number (GCN) | variable, 13–25 |
30 | Count of items | variable, up to 8 |
310y | Product Net Weight in kg | 6 |
311y | Product Length/1st Dimension, in meters | 6 |
312y | Product Width/Diameter/2nd Dimension, in meters | 6 |
313y | Product Depth/Thickness/Height/3rd Dimension, in meters | 6 |
314y | Product Area, in square meters | 6 |
315y | Product Net Volume, in liters | 6 |
316y | Product Net Volume, in cubic meters | 6 |
320y | Product Net Weight, in pounds | 6 |
321y | Product Length/1st Dimension, in inches | 6 |
322y | Product Length/1st Dimension, in feet | 6 |
323y | Product Length/1st Dimension, in yards | 6 |
324y | Product Width/Diameter/2nd Dimension, in inches | 6 |
325y | Product Width/Diameter/2nd Dimension, in feet | 6 |
326y | Product Width/Diameter/2nd Dimension, in yards | 6 |
327y | Product Depth/Thickness/Height/3rd Dimension, in inches | 6 |
328y | Product Depth/Thickness/Height/3rd Dimension, in feet | 6 |
329y | Product Depth/Thickness/3rd Dimension, in yards | 6 |
330y | Container Gross Weight (kg) | 6 |
331y | Container Length/1st Dimension (Meters) | 6 |
332y | Container Width/Diameter/2nd Dimension (Meters) | 6 |
333y | Container Depth/Thickness/3rd Dimension (Meters) | 6 |
334y | Container Area (Square Meters) | 6 |
335y | Container Gross Volume (Liters) | 6 |
336y | Container Gross Volume (Cubic Meters) | 6 |
340y | Container Gross Weight (Pounds) | 6 |
341y | Container Length/1st Dimension, in inches | 6 |
342y | Container Length/1st Dimension, in feet | 6 |
343y | Container Length/1st Dimension in, in yards | 6 |
344y | Container Width/Diameter/2nd Dimension, in inches | 6 |
345y | Container Width/Diameter/2nd Dimension, in feet | 6 |
346y | Container Width/Diameter/2nd Dimension, in yards | 6 |
347y | Container Depth/Thickness/Height/3rd Dimension, in inches | 6 |
348y | Container Depth/Thickness/Height/3rd Dimension, in feet | 6 |
349y | Container Depth/Thickness/Height/3rd Dimension, in yards | 6 |
350y | Product Area (Square Inches) | 6 |
351y | Product Area (Square Feet) | 6 |
352y | Product Area (Square Yards) | 6 |
353y | Container Area (Square Inches) | 6 |
354y | Container Area (Square Feet) | 6 |
355y | Container Area (Square Yards) | 6 |
356y | Net Weight (Troy Ounces) | 6 |
357y | Net Weight/Volume (Ounces) | 6 |
360y | Product Volume (Quarts) | 6 |
361y | Product Volume (Gallons) | 6 |
362y | Container Gross Volume (Quarts) | 6 |
363y | Container Gross Volume (U.S. Gallons) | 6 |
364y | Product Volume (Cubic Inches) | 6 |
365y | Product Volume (Cubic Feet) | 6 |
366y | Product Volume (Cubic Yards) | 6 |
367y | Container Gross Volume (Cubic Inches) | 6 |
368y | Container Gross Volume (Cubic Feet) | 6 |
369y | Container Gross Volume (Cubic Yards) | 6 |
37 | Number of Units Contained | variable, up to 8 |
390y | Amount payable (local currency) | variable, up to 15 |
391y | Amount payable (with ISO currency code) | variable, 3–18 |
392y | Amount payable per single item (local currency) | variable, up to 15 |
393y | Amount payable per single item (with ISO currency code) | variable, 3–18 |
400 | Customer Purchase Order Number | variable, up to 30 |
401 | Consignment Number | variable, up to 30 |
402 | Bill of Lading number | 17 |
403 | Routing code | variable, up to 30 |
410 | Ship To/Deliver To Location Code (Global Location Number) | 13 |
411 | Bill To/Invoice Location Code (Global Location Number) | 13 |
412 | Purchase From Location Code (Global Location Number) | 13 |
413 | Ship for, Deliver for, or Forward to Location Code (Global Location Number) | 13 |
414 | Identification of a physical location (Global Location Number) | 13 |
420 | Ship To/Deliver To Postal Code (Single Postal Authority) | variable, up to 20 |
421 | Ship To/Deliver To Postal Code (with ISO country code) | variable, 3–15 |
422 | Country of Origin (ISO country code) | 3 |
423 | Country or countries of initial processing | variable, 3–15 |
424 | Country of processing | 3 |
425 | Country of disassembly | 3 |
426 | Country of full process chain | 3 |
7001 | NATO Stock Number (NSN) | 13 |
7002 | UN/ECE Meat Carcasses and cuts classification | variable, up to 30 |
7003 | expiration date and time | 10 |
7004 | Active Potency | variable, up to 4 |
703n | Processor approval (with ISO country code); n indicates sequence number of several processors | variable, 3–30 |
8001 | Roll Products: Width/Length/Core Diameter/Direction/Splices | 14 |
8002 | Mobile phone identifier | variable, up to 20 |
8003 | Global Returnable Asset Identifier | variable, 14–30 |
8004 | Global Individual Asset Identifier | variable, up to 30 |
8005 | Price per Unit of Measure | 6 |
8006 | identification of the components of an item | 18 |
8007 | International Bank Account Number | variable, up to 30 |
8008 | Date/time of production | variable, 8–12 |
8018 | Global Service Relationship Number | 18 |
8020 | Payment slip reference number | variable, up to 25 |
8100 | Coupon Extended Code: Number System and Offer | 6 |
8101 | Coupon Extended Code: Number System, Offer, End of Offer | 10 |
8102 | Coupon Extended Code: Number System preceded by 0 | 2 |
8110 | Coupon code ID (North America) | variable, up to 30 |
8200 | Extended Packaging URL | variable, up to 70 |
90 | Mutually Agreed Between Trading Partners | variable, up to 30 |
91–99 | Internal Company Codes | variable, up to 90 |
References[edit]
- ^'GS1 Historic Timeline'. GS1. Retrieved 9 October 2018.
- ^General specifications(PDF), GS1.
External links[edit]
- Make sure that the code symbology Code 128 is actually activated in the barcode scanner. Consult your scanner's manual.
- The print quality must be adequate. For Code 128, a resolution of 150-200dpi or higher is recommended. Also, make sure that the code is not printed too small. The minimum module width (i.e. the width of the narrowest bar) should not be below 0.3 mm. The height should not be below 10 mm. A space (the so called 'quiet zone') of at least five to ten millimeters should be left around the code.
- By default, many scanners require a barcode to encode at least four characters. If so, a barcode with only three characters will not scan. Check your barcode scanner's manual.
- With Code 128 almost all barcode readers on the market today will will expect a checksum with the barcode. If the code does not scan you may have created it without a checksum, a common mistake when using a Code 128 barcode font, see below.
Scanner recommendation for Code 128
Especially older barcode scanners may not support Code 128 at all or may have problems reading wider codes or codes printed with low resolution. We canrecommend the following scanners for reliably scanning Code 128:Scanner with USB connection and stand for hands-free operation: Taotronics Handheld Scanner
Scanner with wireless connection: Tera Wireless Scanner
Using a Code 128 barcode font in Excel, Google Sheets
When using a so called barcode font, you might have to add start and stop symbols to the data. When using a barcode font in office applications like Word or Excel, you can't just simply select the data and change the font. Code 128 is a very advanced barcode type which requires preparing your data for use with a font. Usually a macro, add-in, or stand-alone app will be supplied with the font that handles all necessary steps.As an example, here's the Softmatic Barcode Add-in for Excel 365 which uses barcode fonts to create Code 128 and other symbologies:Near the end of the video, note the text in the edit line above the actual sheet. At 38s it shows the textual value of the cell A1: 'Ü*öö,ä'. This is the content of the cell ('100000'), properly formatted by the Add-in for use with the Softmatic Code 128 font.
More about our barcode add-in for Excel.
Code 128 sample barcode
Use the following verified sample barcode to test the settings of your scanner. It encodes nine characters, has the required start/stop symbols, the proper checksum, and sufficient quality.Right-click and 'Save as...' to print the barcode out. A good CCD scanner or reader app will also be able to scan the code directly from the screen.
For more sample 128 barcodes and a general introduction to Code 128, see our page Code 128 explained.
Creating compliant Code 128 barcodes
For the creation of compliant, working barcodes like the one above, use Softmatic BarcodePlus V5. The app creates all common retail barcodes, like EAN, UPC or ISBN. In addition BarcodePlus V5 supports a wide variety barcodes for warehousing, pharmaceuticals and 2D symbologies like QR, Aztec or PDF417.This software is very easy to use. Simply select 'Code 128', enter your data and the code is created right away. Video shows creation of a 128 GS1 code:
- Mac: Download from the Mac App Store (macOS 10.15 or higher, pre 10.15: here)
- Windows: Download from Softmatic (Windows 10 or higher)
Bulk creation of Code 128
For bulk creation of standards-compliant Code 128 and many other linear and 2D symbologies, see Softmatic BarcodeFactory V5:- Mac: Download from the Mac App Store (macOS 10.15 or higher, pre 10.15: here)
- Windows: Download from Softmatic (Windows 10 or higher)
Code 128 REST APIs
Code 128 Barcode Gen
Developers love our easy to use Barcode REST API for Code 128 and Code 128 GS1. The Barcode API supports all common linear and 2D code symbologies and can be used from JavaScript / Node, Ruby, Python, PHP, Swift and many other languages and environments. The API comes with a generous free tier and is available through RapidAPI. Documentation and sample code are here.