top of page

What is the DM code (Data Matrix)? GS1/HIBC /UDI/GTIN/ECC? Find it out in one article!

Updated: Jul 26, 2021

DM (Data Matrix) code: According to Wikipedia, a DM code is "a two-dimensional barcode (also known as a matrix) consisting of black and white color blocks (cells) in a square or rectangular shape". It looks and is used much like the QR Code which we are familiar with. In simple terms, a DM code is a code that converts a human-readable text into a machine-readable code to facilitate the transmission and reading of data.

The image below shows the DM code on the left and the QR Code on the right. Both scans show the same URL -

What is the DM code (Data Matrix)? GS1/HIBC /UDI/GTIN/ECC? Find it out in one article!

Compared to QR Code, DM (Data Matrix) code is more baffling. One reason for this is that DM codes are mostly used by manufacturers or inspection units of goods, and are less likely to be used by the general public. At the end of the spectrum, the users of DM codes are likely to be mainly shopkeepers operating POS machines. Another reason for this is that international standards have been developed in response to the needs of these manufacturers. As you can imagine when you look at international standards, there are a lot of unintelligible codes and specifications, and that's where the main confusion lies!

It's the international standards that you don't understand, not the DM (Data Matrix) code!

The English system really likes to use a lot of abbreviations. Although convenient, they are often confusing and difficult to understand. Therefore, except for the key terms that need to be explained, we have tried to omit the abbreviations in this article to make it easier for beginners to understand. For those who wish to go deeper, look up the individual abbreviations! In addition, the term "barcode" is actually a generic term for 1D and 2D codes. In the early days, 1-dimensional codes were used in the mainstream, meaning some pieces of black lines, called barcode. In between the 1D and 2D codes, there was a kind of "Stacked Linear Code", which consisted of multiple 1D codes stacked on top of each other. Later, two-dimensional codes, such as QR code and DM code, were developed. The name "barcode" may not seem appropriate to imagine these 2D codes, but no new name has been invented for them in the English and Chinese systems. Since no new name has been invented in the Chinese and English systems, they are all still referred to as "barcode".

What are GS1 and HIBC?

Both GS1 and HIBC are international standards for commodity coding.

We can think of GS1 and HIBC as specifications for the writing of basic product information. For example, the relevant information must include the Global Trade Item Identification Number (GTIN), batch number, manufacturing date, best taste period, expiry date, serial number, etc. When these basic data are written in an internationally standardized way, they can be automatically identified, accessed, and even managed automatically or intelligently by machines.

The difference between GS1 and HIBC is that they have different coding principles, so which international standard to use depends on your needs! As HIBC is mostly used in medical-related systems and GS1 is relatively common for various products, this article thus will first explain the coding principles related to GS1, so that you can have a more practical understanding of its usage.

How should I write my GS1 code?

This article will briefly explain the principles of GS1 coding. For internal use, you can of course write your own code according to these principles. However, if the code is to be used for certain standard labeling, it should be written in accordance with the code specifications. For example, the UDI is a standard for the labeling of medical devices.


UDI is a labeling standard for medical devices in accordance with the GS1 or HIBCC system.

The FDA (US Food and Drug Administration) requires all medical devices to contain a Unique Device Identifier (UDI) by 2020. A UDI is a barcode containing a specific set of messages that the FDA requires all medical devices to have. This requirement requires all medical devices to be labeled. The barcode on the label must be graded according to GS1 or HIBCC regulations and include the batch number, serial number, and expiry date of the product (where applicable). This requirement is generally accepted worldwide and is promoted in each country.

In the case of GS1, after coding, the UDI needs to use one of two carriers, GS1-128 (1-dimensional barcode) or GS1-Data Matrix (2-dimensional barcode), in order to convert it into a barcode that can be easily marked and read. The coding method required by the FDA must be in accordance with GS1 or HIBCC regulations. In addition to the 1D and 2D barcodes required by these two organizations, the Ministry of Health and Welfare also allows a third carrier: RFID.

The key information contained in the GS1 system by UDI includes:

  1. Global Transaction Item Identifier

  2. Manufacturing date

  3. Effective Date

  4. Lot Number

  5. Serial No.


The Global Trade Item Identification Number (GTIN) is an internationally recognized commodity passport number, which can be thought of as a commodity ID number.


ECC is the version number of the DM (Data Matrix) code.

Glossary of Terms

  1. The DM (Data Matrix) code can be encoded with various characters, similar to the QR Code.

  2. The DM (Data Matrix) code is specifically designated by the GS1 system as one of the standard presentation methods.

  3. Both GS1 and HIBC are international standard systems for commodity coding.

  4. UDI is a GS1 or HIBCC-compliant system, specifically for the marking of medical devices.

  5. The Global Trade Item Identification Number (GTIN) is an internationally recognized commodity passport number, which can be thought of as a commodity ID number.

  6. ECC is only the version number of the DM (Data Matrix) code and is emphasized by the special upgrade of the error correction function in the ECC200 version.

UDI+GS1+DataMatrix example


The GS1 compliant UDI code is used as an example to illustrate the following. The number in the brackets () is called the Application Identifier (AI) in the GS1 system. This code defines the format and the number of bits of data. Examples of common Application Identifiers (AI) are as follows:

01: Global Transaction Item Number (GTIN), 16 digits including 01 (n2+n14)

10: Lot number, up to 22 digits including 10 (n2+X..20)

11: Manufacturing date (YYMMDD), 8 digits including 11 (n2+n6)

15: Best Tasting Period (YYMMDD), 8 digits including 15 (n2+n6)

17: Expiry date (YYMMDD), 8 digits including 17 (n2+n6)

21: Serial number, up to 22 codes including 21 (n2+X..20)

The UDI codes listed above can therefore be interpreted as:

Global Transaction Item Number (GTIN): 03453120000011

Expiry date: 2019/11/25

Lot number: ABCD1234

If you look deeper into the coding logic of Data Matrix, the () is not in the coding symbol, and the [d2 is added at the beginning of the word, which means it is a GS1 code. Some scanners will scan the first FNC1, which also means it is a GS1 code! Unless you are a system engineer, you do not need to know the internal codes of these machines, so this article will not delve into them for now.

785 views0 comments


bottom of page