In GoodLabel Designer, GS1-128 and GS1 DataMatrix labels are made in 6 steps: ① choose the barcode type → ② enter the Application Identifiers (AIs) and numbers in the GS1 data settings window → ③ put fixed-length AIs first and variable-length AIs last → ④ link Excel columns when dates or lots change → ⑤ set the bar width in printer dots to match the X in the GS1 symbol specification tables → ⑥ check by scanning.

Where to obtain a GTIN and which barcode goes on items, cases and pallets are covered in GS1 barcode basics (info.woojuoa.co.kr).

The GS1 data settings window in GoodLabel Designer

  1. In Barcode in the tool panel, choose GS1-128 or GS1 Data Matrix.
  2. Click the Configure GS1 data… button in the data field on the General tab of the Properties panel. The "GS1 data settings - GS1-128" window opens, and its first row starts with (01).
  3. When you choose an AI in Select AI code, its format and an example are shown; enter the number in the input field. Add rows with Add AI code.
  4. Check the full string (01)…(17)…(10)… under Generated GS1 code at the bottom of the window and click OK.

The (01) and (02) fields calculate the check digit themselves. If you enter 13 digits, they are treated as the first 13 digits of a GTIN-14 and a 1-digit check digit is appended; if you enter 14 digits, the last digit is replaced with the calculated check digit. So entering a 13-digit GTIN-13 as is produces a completely different 14-digit number; instead, paste the 14 digits with the leading 0 in one go. When typing one character at a time, the check digit is appended as soon as you reach the 13th digit, so type only up to 0880123456789. The (00) SSCC field handles 17 and 18 digits the same way.

The beta items GS1_128(NEW) and GS1DATAMATRIX(NEW) let you choose the input format (AIs in parentheses, or raw text of AI numbers joined with GS separators), check digit handling (generate or validate) and Validate AI association rules separately. Their check digit handling doesn't automatically fix a wrong check digit. Their Barcode width also moves one printer dot per step and shows mm and dots together, such as "0.5 mm · 4 dot", which makes it easy to match X from the specification table below in dots.

Formats of 7 AIs entered in the GS1 data settings window

AIContentFormatInput example
(00)SSCC, the number of a logistic unit such as a pallet or box18 digits, fixed(00)088012345000000012
(01)GTIN, the product identification number14 digits, fixed(01)08801234567893
(10)Batch or lot numberUp to 20 alphanumeric characters(10)LOT2609A
(11)Production date6-digit YYMMDD(11)260930
(15)Best before date6-digit YYMMDD(15)270331
(17)Expiration date6-digit YYMMDD(17)270930
(21)Serial numberUp to 20 alphanumeric characters(21)SN000125

When you put a 13-digit GTIN-13 in (01), add a 0 in front to make 14 digits. 8801234567893 becomes 08801234567893, and because the leading 0 doesn't affect the check digit calculation, the last digit stays the same.

If the day (DD) of a date AI is 00, it is read as the last day of that month. For healthcare products, however, from January 1, 2025 an actual day such as 31 is used instead of 00.

AI entry order and the FNC1 separator

(00), (01), (02), (11)–(17) and (20) have predefined lengths, so no separator is needed even when another AI follows them. When another AI follows a variable-length AI such as (10) or (21), an FNC1 separator (passed to the scanner as the GS character, ASCII 29) has to go in, so put variable-length AIs last. If you include both (10) and (21), one separator between them can't be avoided.

  • Good order: (01)08801234567893(17)270930(10)LOT2609A — 0 separators.
  • Order to avoid: (01)08801234567893(10)LOT2609A(17)270930 — one more separator goes in after (10), making the barcode longer.

In the human-readable interpretation (HRI), AIs are shown in parentheses, but the parentheses themselves are not encoded in the barcode. If you enter data in parenthesis notation in the designer's GS1 data settings, FNC1 is added automatically when the barcode is generated.

Making many GS1 labels from Excel data

When you link an Excel column to the barcode, the GS1 data settings button is locked, and the column content becomes the barcode data as is. The most reliable way is to make one column in Excel with the full string, such as (01)08801234567893(17)270930(10)LOT2609A, and choose it as the barcode's linked field. If the GTIN is in column A, the expiration date in column B and the lot in column C, join them with ="(01)"&A2&"(17)"&TEXT(B2,"yymmdd")&"(10)"&C2. Date conversion isn't applied when you join them with Combine data blocks, so turn the date column into 6 digits beforehand.

Print window check (GS1-128 and GS1 Data Matrix items)Result
(01) or (02) is not 14 digitsError; that row can't be selected
(00) is not 18 digitsError; can't be selected
(11)(12)(13)(15)(17) is not 6 digitsError; can't be selected
GTIN or SSCC check digit differs from the calculationWarning only; it still prints

Instead of the checks in this table, the (NEW) items check the check digit as well when generating the barcode and give an error if it's wrong. A check digit mismatch in the standard items doesn't block printing, so compare the GTIN column in Excel against the issued numbers once before loading it. Row selection and the quantity column are covered in Bulk printing from Excel or CSV.

Matching the X-dimension in GS1 specification tables to printer dots

GS1 symbol specification table (5.12.3)Bar or cell width XMinimum heightQuiet zoneMinimum quality
GS1-128 for logistic units (Table 5)0.495–0.940mm31.75mm10X left and right1.5/10/660
GS1-128 for healthcare non-retail (Table 6)0.170–0.495mm12.70mm10X left and right1.5/06/660
GS1 DataMatrix for healthcare non-retail (Table 6)0.254–0.990mm, target 0.380mmSet by the amount of data1X on all 4 sides1.5/08/660

A minimum quality of 1.5/10/660 means grade 1.5 (C) or higher, measured with a 10mil (0.25mm) aperture and 660nm light. The 0.495mm minimum X for logistics GS1-128 is met with 4 dots at 203dpi (0.500mm) or 6 dots at 300dpi (0.508mm); 5 dots at 300dpi (0.423mm) falls short. For healthcare non-retail GS1-128, 2 dots at 300dpi is 0.169mm, 0.001mm short of the 0.170mm minimum, so start from 3 dots. The standard GS1 Data Matrix item takes module size in 0.1mm steps, so enter 0.4mm, the closest to the 0.380mm target.

One GS1-128 holds up to 48 data characters and up to 165.10mm in length including quiet zones. Filling a 20-character lot in (01)(17)(10) comes to 46 characters including the AI digits, close to the limit, so put any further information in a second GS1-128 line or move it to a GS1 DataMatrix.

Checking with a 2D imager

GS1 DataMatrix can be read only by a 2D imager. The Zebra DS2208 reads Data Matrix down to 6.0mil (about 0.152mm), so a 0.380mm target cell leaves plenty of margin. If you scan into Notepad, you get a string without parentheses: 01 and the 14-digit GTIN, 17 and the 6-digit date, 10 and the lot number, run together. Check that this order and these digit counts match the Excel source. For bar width, quiet zone and density problems, go on to the checklist in When a barcode won't scan.