GS1 DataMatrix – Label Printing Software and Guide
Printing Labels with GS1 DataMatrix – Software Guide

This guide will walk you through the process of creating and printing labels and other media featuring GS1 DataMatrix using our labeling software Barcode Forge.
The content encoded in GS1 DataMatrix can also be printed as text on the label, as shown in the image. This represents the simplest form of a label, which can be further customized by adding text, barcode or graphic elements according to your needs.
GS1 DataMatrix – Maximum Security through Data Validation in the Software
GS1 DataMatrix codes are used in a wide range of industries, including sensitive sectors such as healthcare, where data integrity and traceability are paramount. To meet these high standards, our label software performs additional data validation checks beyond the built-in security mechanisms of the GS1 DataMatrix.

Before a GS1 DataMatrix is printed on a label, the software verifies date values such as the production date and expiry date to ensure their validity. It also validates other key information, such as GTIN and SSCC against its check digit. Other data elements are checked for compliance with prescribed formats, such as allowed characters and length.
If the software detects any errors in the data to be encoded, a detailed error description will be shown in the label preview instead of the GS1 DataMatrix code, allowing you to correct the issue before printing.
Through these extensive checks, our software minimizes input errors and ensures that the resulting GS1 DataMatrix codes meet the security standards required in critical applications.
GS1 DataMatrix basics – The difference from DataMatrix
The term "DataMatrix" refers to a barcode format, similar to the QR Code, that translates any type of information into a pattern of dots and spaces typical of two-dimensional codes.
"GS1 DataMatrix", on the other hand, specifies a standard that uses DataMatrix codes as a data carrier to store specific types of information. This standard is managed by the global GS1 organization to enable product identification and traceability in global supply chains.

Information that can be encoded in a GS1 DataMatrix includes the Serial Shipping Container Code (SSCC), Global Trade Item Number (GTIN), production and expiry dates, and approximately 150 additional data types listed in the appendix of this guide.
A GS1 DataMatrix includes the FNC1 character, which serves as the identifier to distinguish it from a standard DataMatrix. The FNC1 character is placed before the content encoded in the barcode, allowing a barcode scanner to immediately switch to the correct processing mode and interpret the subsequent data correctly. Our label software inserts the FNC1 character automatically, so you don’t need to insert it manually.
Summary: While "DataMatrix" refers to a generic barcode format, "GS1 DataMatrix" represents a structured type of information stored in DataMatrix codes.
Creating and Printing GS1 DataMatrix Labels using the Software
An example project [download link] serves as the basis for the following
steps. The 30-day trial version of the software is sufficient for opening and testing. The project contains a simple
label layout featuring a GS1 DataMatrix and a text element, which displays the content of the code as readable text. The
printout is on A4-sized paper, so a standard A4 printer is sufficient for printing.
The Data section contains a table with three datasets consisting of typical GS1 information. By right-clicking
on the table header, you can rename, delete or add new columns to the table.
This information is linked to individual layout elements in the Label section through placeholders.
Right-click the GS1 DataMatrix object on the label and select Edit. This will open the object's properties
window. Then, navigate to the Text tab.
As shown in the image, the information is listed line by line, with one piece of information per line. Each line starts with an Application Identifier (AI) in parentheses, followed by a placeholder linking to a column in the table above, where the information is stored.
You can insert additional information later in the same way, using the Insert data field button to place the appropriate placeholders.
The GS1 Application Identifier concept and FNC1 as a separator
As explained in the previous section, each piece of information in a GS1 DataMatrix is preceded by a number called the Application Identifier (AI). The AI defines the meaning and format of the information. A table with all supported AIs is provided in the appendix.
Depending on the AI, the length of the information can either be fixed or variable. While AI 01 and AI 17 in our example always have a fixed length (14 and 6 characters, respectively), AI 10 and AI 30 may consist of a variable number of characters. For such AIs, the end of the information must be marked with an FNC1 character so that a barcode scanner is able to correctly recognize the exact number of characters that make up the information.
Note: The FNC1 character thus serves a dual purpose: As mentioned earlier, it marks a DataMatrix code as a GS1 DataMatrix and also acts as a delimiter to separate individual pieces of information within the code.
Our label software inserts the FNC1 character automatically, so you don't need to insert it manually. However, it can still be useful to understand the role of the FNC1 character: Always place variable-length AIs at the end, as shown with AI 30 in the example. This way, the FNC1 character is not required, resulting in one less character that needs to be encoded in your GS1 DataMatrix.
Note: You can insert the FNC1 character manually by using the Insert special char button. This is, however, only necessary if you enter the information consecutively in a single line, instead of arranging it one below the other as shown above.
GTIN and SSCC – Check Digit Verification and Calculation by the Software
SSCC (AI 00) and GTIN (AI 01 + 02) are among the most common types of information encoded in a GS1 DataMatrix. Both are numeric values containing a check digit in the last position – position 14 for the GTIN and position 18 for the SSCC. The check digit is automatically verified for correctness by our label software.
If the check digit is missing, you can instruct the software to calculate it automatically and insert it in the appropriate position.
To do this, use the Insert function field button and select [-Mod10-]. This can be applied to both the GS1 DataMatrix code and the textual representation of its content. For our example, the result should look as follows:

Adjusting the Module Size of GS1 DataMatrix Codes in the Software
Compared to other two-dimensional codes, GS1 DataMatrix stands out for its significantly higher information density, meaning it takes up less space for storing data. This becomes evident when comparing it to a GS1 QR Code, which encodes the same information even while using the lowest possible error correction level (7%):

This characteristic, along with the ability to choose between square and rectangular shapes, makes GS1 DataMatrix particularly flexible for use in very confined areas. Despite this compactness, the limited space available, for example on packaging, may sometimes require choosing the smallest possible size for the code. However, certain limitations must be taken into account in such cases.
In regulated industries, such as healthcare, there are specific rules regarding the so-called module size. Modules are the small square elements that make up the code. Thus, the overall size of the code directly depends on the size of the individual module. It also depends on the amount of information to be encoded – the more data to be encoded, the more modules are required.
In addition to regulatory standards, scanner capabilities can also be a limiting factor. In this context, the minimum module size may be subject to agreements between supply chain partners, taking into account the capabilities of the scanning equipment being used.
By default, our label software prints the GS1 DataMatrix code in the size in which it was created by the user on the
label, with the module size being automatically derived from the code's overall size. However, you can set the module
size manually if needed, which will prompt the software to use it as the basis for calculating the overall size:
Note: As shown in the image, there is another size option available. This option allows for manual setting of the number of modules that the GS1 DataMatrix should consist of. By default, the software automatically selects the smallest number of modules required based on the amount of data to be encoded, which is typically the optimal choice in most cases.
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
All available Application Identifiers for GS1 DataMatrix
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 DataMatrix or our label software, please contact us!