Many customers are adopting variations of the GS1 standards and might be trying to implement EPP Label Template updates in order to add GS1 barcodes to their label printing processes.
This post primarily focuses on a few considerations when implementing GS1 data in DataMatrix, Code 128, and QR codes, for Zebra printers. This guide is intended to help provide customers a starting point for GS1 barcoding but may not answer all questions or scenarios for every businesses specific requirements.
Methods for Using GS1 Escape Codes
When using barcodes to store GS1 data, there usually needs to be a particular order and character usage, like the FNC1 non-printable character. It’s recommended to assemble the data for the GS1 barcode using a Data Dictionary Concatenated item. The concatenation can use data dictionary constants and variable inputs to assemble the GS1 string.
Each EPP installation contains a sample GS1 label template with ‘UCC/EAN-128’ and ‘Data Matrix’ barcode examples; using GS1 formatted concatenation formulas.
For ZPL QR Codes, you’ll want to use ‘>8’ for FNC1 chars which can be easily set as CONSTANT items in your data dictionary. Some printers may need firmware updates in order to support the control switches that tell the printer to use some of the special characters and formatting.
EPP does not render the barcode images for label printers, but only provides the printer with instructions for the printer to draw the barcode to contain the defined data and switches.
Admins could also implement the application identifiers as data dictionary constant items before putting them in a concatenation formula. I created some quick addition examples below.
Enabling Code-128 Compression Modes
These escape sequences tell the printer what compression mode to use for different data/character types, allowing additional control of the resulting width of the barcode. You may be able to process some characters as alpha-numeric, then switch to handle the rest of the barcode compression with numeric only encoding, resulting in a narrower barcode.
Start character options:
-
Subset/Start Code A: >9
- ASCII characters 00 to 95 (0–9, A–Z and control codes), special characters, and FNC 1–4
-
Subset/Start Code B: >:
- ASCII characters 32 to 127 (0–9, A–Z, a–z), special characters, and FNC 1–4
-
Subset/Start Code C: >;
- Numeric only. 00–99 (encodes two digits with a single code point) and FNC1
Common Q&A
Q. Do I need to include parenthesis wrappers around AI tags, in the barcode data?
Examples: "(00)008112340099999992" or "(15)300101(10)A3517"
A. No, you should not need to include the parenthesis in the barcode data but some printers may show the parenthesis in the human readable text, when enabled in the label design. Many choose to disable the human readable attribute in the barcode properties and will use EPP Concatenation formulas to include the parenthesis as well as having more control of the font, sizing, and position of the text for users to read.
Q. How is GS1 mode activated for these barcodes?
A. By placing a FNC1 character at the beginning of the data used in the barcode.
Q. How can I tell if my Zebra printer can support GS1 QR codes?
A. According to Zebra, the GS1 formatting support in QR codes was added in Link-OS 6.6. You can confirm if your printer has Link-OS 6.6+ by checking the printer configurations list page OR by printing out your configurations. Not all printer models will be able to acquire this update, but any that can should be able to install a firmware update, to gain the functionality.
Q. How do I control the size of a UCC/EAN-128 or UCC/EAN-128(SSCC-18) barcode?
A. The width of barcodes is primarily controlled by the density configurations of the barcode properties and the amount/type of data being passed to the barcode. Some details about controlling the data compression type is described above, in the ‘Enabling Code-128 Compression Modes’ section.





