Data Matrix Barcode FAQ & Tutorial

The Data Matrix barcode is a high-density, two-dimensional (2D) symbology that encodes text, numbers, files and actual data bytes. This FAQ provides information and answers to commonly asked questions about the 2D Data Matrix barcode symbology.


Data Matrix Barcode Overview

Data Matrix is a very efficient, two-dimensional (2D) barcode symbology that uses a small area of square modules with a unique perimeter pattern, which helps the barcode scanner determine cell locations and decode the symbol. Characters, numbers, text and actual bytes of data may be encoded, including Unicode characters and photos.

The encoding and decoding process of Data Matrix is very complex. Several methods have been used for error correction in the past. All current implementations have been standardized on the ECC200 error correction method, which is approved by ANSI/AIM BC11 and the ISO/IEC 16022 specification. IDAutomation 2D Data Matrix barcode products all support ECC200 by default. The Reed-Solomon error correction algorithms of ECC 200 allow the recognition of barcodes that are up to 60% damaged.

Specific standards and specifications for the 2D Data Matrix barcode symbology include the following:

  • AS9132 – Society of Automotive Engineers (SAE) parts marking
  • Air Transportation Association’s (ATA) Spec 2000
  • Automotive Industry Action Group (AIAG):
    AIAG B-4 – parts identification
    AIAG B-8 – shipping labels
    AIAG B-11 – tire and wheel identification
    AIAG B-13 – symbology white paper
    AIAG B-17 – direct parts making
  • DOD UI – Department of Defense Guide to Uniquely Identifying items
  • EIA 706 – Electronics Industry Marking Standard
  • EIA 802 – Electronics Industry Marking Standard
  • GS1 DataMatrix – standard for encoding GTIN numbers on small items with camera-based readers
  • ISO/IEC 15418:1999 – symbol data format semantics
  • ISO/IEC 15434:1999 – symbol data format syntax
  • ISO/IEC 15415 – 2-D print quality standard
  • MIL-STD-130L – US DOD Department of Defense standard
  • NASA-STD-6002 – aerospace parts marking
  • NASA-HDBK-6003 – aerospace direct part marking methods and techniques
  • SAE AS9132 – Society of Automotive Engineers (SAE) aerospace industry marking standard
  • Semiconductor Equipment and Materials International (SEMI):
    T2-0298E – silicon wafers marking
    T3-0302 – wafer box labels
    T7-0302 – double sided wafers
    T8-0698E – flat panel display substrates
    T9-0200E – lead-frame strips marking
    T10-0701 – direct mark quality test method
  • X6721 – Korean standard

Data Matrix Size and Accuracy

Data Matrix is one of the smallest and most dependable barcode symbologies. Compared to other barcode types, DataMatrix is approximately 30 times smaller than a Code 39 barcode representing the same data. The size difference of popular barcode types is compared in the Barcode Symbology Evaluation and Test Sheet. The 2D Data Matrix is barcode also the recommended choice when sending barcodes over faxed documents, because the symbol can withstand many poor resolution and scanning issues.

The required Reed-Solomon error correction built into Data Matrix ECC200 is able to reconstruct and verify the data scanned for improved accuracy. In a study at The Center for Automatic Identification at Ohio University, the statistical probability of a misread error with Data Matrix is 1 in 10.5 million scans, compared to a misread error probability of 1 in 1.7 million with the Code 39 barcode.

Products for Printing and Generating Data Matrix

The IDAutomation Data Matrix Barcode Font and Encoder is a collection of encoders and components that generate ECC200 Data Matrix symbols with fonts or graphics. Several types of encoders are available in the package that generates DataMatrix symbols as graphics or fonts.

IDAutomation also offers new patent-pending Native Barcode Generators for Crystal Reports, Microsoft Access and JavaScript that create ECC200 DataMatrix symbols without any plug-ins or fonts.

Barcode Integration Guides are also available that offer one or more integration options. These options may be examined to determine the best implementation method. A few of the guides offered include the following:

Verifying Barcodes

Printed barcode symbols may be easily verified with the Print Quality Assessment test found in the Hand Held Products 2D Imager. The quality assurance test will grade the symbol and report any possible problems. The report below was generated when scanning the symbol in Fig. 1 with PQA enabled:

>> PQA from Hand Held Products <

Generating GS1-DataMatrix Barcodes

GS1 DataMatrix barcode symbols may be easily created with IDAutomation DataMatrix products by appending ~1 to the data being encoded in the ASCII encoding mode. For example, the DataToEncode string of ~1010001234567890 creates a symbol encoding the 14-digit GTIN of (01) 00012345678905, as demonstrated in Fig. 1 below. GS1 Data Matrix barcode symbols do not encode the last digit of the GTIN, which is a check digit. If the full 14-digit GTIN is needed after reading the symbol, it may be generated with a MOD10 calculation. GS1-DataMatrix is not currently approved by GS1 for all retail checkout systems. However, the GS1 DataBar Symbology (aka: RSS) may be used in retail checkout systems after January 1, 2010.

Fig. 1: GS1 DataMatrix Symbol encoding (01) 00012345678905
GS1 DataMatrix Symbol Encoding GTIN-14

Reading Data Matrix Barcodes

The most common method of reading Data Matrix barcodes is with a camera-based image reader (aka: barcode imager). Most of the hand-held barcode imagers recommended by IDAutomation perform keyboard emulation and receive power from the USB port so that no external power supply is needed. When a barcode symbol is read using keyboard emulation, the data appears at the cursor as if it had been typed in from the keyboard.

Most barcode imagers have the ability to read Data Matrix barcodes by default, such as the Symbol, Metrologic and Hand Held Products Barcode Imagers. Many hand-held imagers also read very small symbols, such as the Hand Held Products 2D Imager, which reliably reads the IDAutomation ECC200 Data Matrix Barcode Font when printed as small as 3 points, which is an X-dimension of 10 mils.

In many cases, it may be desired to have the scanner trigger a form or action in an application. IDAutomation has documented simple methods of accomplishing this task in the USB Barcode Scanner Application Integration Guide.

Encoding ASCII Functions (such as Tabs and Returns)

DataMatrix allows ASCII codes to be easily encoded for various functions such as tabs and returns. In all IDAutomation products, the tilde (~) may be used to encode ASCII functions according to the documentation. For example; ~d009 is used to encode a tab and ~d013 encodes a return. In many development environments, Chr or Char may also be used to encode the ASCII value directly. For example, the programming examples below encode « ECC » 200:

Java: DataToEncode= « ECC » + (char)9 + « 200 »;
Visual Basic: DataToEncode= « ECC » & Chr(9) & « 200 »

Encoding Double Byte, Unicode and Extended ASCII Characters

It is possible to scan and encode international and extended characters provided the instructions below are followed:

  1. Encode the data using BASE256 encoding. This option encodes all data, byte-by-byte.
  2. Scan the data via the serial interface option (data bits have to be 8N) on the scanner. Normally, keyboard wedges and USB scanners do not support extended characters above ASCII 128, and only scan characters that are actually on the keyboard. Contact the scanner vendor for more information as some of the scanner’s internal settings may need to be changed.

Amount of Data Encoded

It is recommended to limit the amount of data encoded in each symbol to 800 characters or less if possible. Although the AIM Data Matrix specifications state, « up to 2335 alpha numeric characters can be encoded, » it has been determined that these numbers are not realistic. The amount of data that can be encoded will vary depending upon the type of data, the encoding mode and what the indented scanner can read. In most implementations, the amount of data that can be encoded is significantly decreased due to mode switching between different types of characters, such as between numbers, upper case, lower case and punctuation.

Most camera based imagers and hand-held scanners have a difficult time reading symbols that contain over 800 characters. In the best case scenario, up to 1200 ASCII characters have been successfully encoded and read by using the text encoding mode of the IDAutomation Data Matrix Barcode Forms Control with the Hand Held Products 2D Barcode Imager.

DataMatrix Encoding Modes & Determining Size

Products such as the IDAutomation Data Matrix Barcode Fonts and the Data Matrix Components all support the encoding modes listed below. By default, the encoding mode for most components is BASE256. If the choice is to encode text or numbers only and size is a concern, a change of the encoding mode to ASCII, TEXT or C40 may produce a smaller symbol. The data represented in the symbol may be compressed using one of the following modes:

  • ASCII is used to encode data that mainly contains ASCII characters (0-127). It encodes approximately one alphanumeric or two numeric characters per byte. As a general rule, use ASCII to encode text that includes uppercase and lowercase letters with or without numbers and punctuation.
  • C40 is used to encode data that contains only numeric and upper case characters. C40 encodes approximately three alphanumeric data characters into two bytes.
  • TEXT is used to encode data that mainly contains numeric and lowercase characters. TEXT encodes approximately three alphanumeric data characters into two bytes.
  • BASE256 is used to encode images, double-byte characters, binary data and 8 bit values.

Control Characters and use of the Tilde

IDAutomation Data Matrix Barcode Fonts, Components and Applications use the tilde character « ~ » to recognize special characters when « Apply Tilde » or « Process Tilde » is enabled. The following tilde options are available:

  • ~dNNN: Represents the ASCII character encoded by the 3 digits NNN. For example, ~d009 represents a tab, ~d013 represents a return and ~d065 represents the character ‘A’.
  • ~1: Represents the character FNC1. When FNC1 appears in the first position (or in the fifth position of the first symbol of a Structured Append), it indicates that the data conforms to the UCC/EAN Application Identifier standard format.
  • ~2: Is used to represent Structured Append. Structured Append is used to link information from several symbols in a sequence. The ~2 must be followed by 3 additional bytes. The first 4 bits of the first byte identify the position of the particular symbol in the sequence. The last 4 bits identify the total number of symbols in the sequence. The second and third bytes are used as file identifiers and can have a value between 1 and 254 (up to 254*254=64516 identifiers). See the DataMatrix Specification for more information about this (ISO 16022).
  • ~3: Is only allowed in the first position of the symbol. It indicates that the data contains commands for the barcode reader.
  • ~5 and ~6: Are only allowed in the first position of the symbol. If either ~5 or ~6 is used the header [)> ASCII30 ASCII05 ASCII29 will be transmitted by the barcode reader before the data in the symbol and the trailer ASCII30 ASCII04 will be transmitted after the data.
  • ~7NNNNNN: Specifies the Extended Channel to be used, where NNNNNN is a value between and 000000 – 999999. For example: ~7000010 means Extended Channel 10. Extended channel is used for encoding character sets other than ASCII. Refer to the Data Matrix Specification (ISO 16022) for more information.

2D Data Matrix Barcode Formats

IDAutomation 2D Data Matrix ECC 200 barcode products support all formats. The following table contains the size, capacity and error correction features of each format. By default, the encoding mode is BASE256 (or binary) for compatibility reasons. The encoding mode may be changed to reduce the symbol size in some situations. The chart below illustrates the smallest symbol size, in the best-case scenario, for the amount of data encoded.

Format Number


Max Numeric Capacity

Max Alphanumeric capacity

Max Binary capacity

Max Correctable Error/Erasure

0 10 x 10





1 12 x 12 10 6 3 3
2 14 x 14 16 10 6 5/7
3 16 x 16 24 16 10 6/9

18 x 18





5 20 x 20 44 31 20 9/15

22 x 22






24 x 24






26 x 26





9 32 x 32 124 91 60 18/33
10 36 x 36 172 127 84 21/39
11 40 x 40 228 169 112 24/45
12 44 x 44 288 214 142 28/53
13 48 x 48 348 259 172 34/65
14 52 x 52 408 304 202 42/78
15 64 x 64 560 418 278 56/106
16 72 x 72 736 550 366 72/132
17 80 x 80 912 682 454 96/180
18 88 x 88 1152 862 574 112/212
19 96 x 96 1392 1042 694 136/260
20 104 x 104 1632 1222 814 168/318
21 120 x 120 2100 1573 1048 204/390
22 132 x 132 2608 1954 1302 248/472
23 144 x 144 3116 2335 1556 310/590
24 8 x 18 10 6 3 3
25 8 x 32 20 13 8 5
26 12 x 26 32 22 14 7/11
27 12 x 36 44 31 20 9/15
28 16 x 36 64 46 30 12/21
29 16 x 48 98 72 47 14/25

Is a License Required for Use?

Acuity CiMatrix / Siemens invented the Data Matrix ECC200 symbology and placed it in the public domain. Acuity CiMatrix and AIM Global both believe the Data Matrix ECC200 barcode is a public domain symbology and that license fees are not necessary for recent Data Matrix Patent Claims.

Cet article a été publié dans Uncategorized. Ajoutez ce permalien à vos favoris.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:


Vous commentez à l'aide de votre compte Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s