Data Matrix Barcode FAQ & Tutorial
Data Matrix Barcode ISO/IEC 16022 FAQ
The Data Matrix barcode (ISO/IEC 16022) 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 and are based on the ANSI/AIM
BC11 and the ISO/IEC 16022 specifications. The Reed-Solomon error correction
algorithms of ECC200 allow the recognition of barcodes that are up to
Specific standards & specs for the 2D Data Matrix barcode
- 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 UID - Department of Defense Guide to Uniquely Identify items
- EIA 706 - Electronics Industry Marking Standard
- EIA 802 - Electronics Industry Marking Standard
- GS1 DataMatrix - standard for
GTIN numbers on small items with camera-based readers
- ISO/IEC 15418 – symbol data format semantics
ISO/IEC 15434 – symbol data format syntax
- ISO/IEC 15415 – 2-D print quality standard
MIL-STD-130 - 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 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
Products for Printing & Generating Data
Data Matrix Barcode Font and Encoder is a collection of encoders
and components that generate ECC200 Data Matrix symbols with fonts or
Several types of encoders are available in the package to generate
Data Matrix symbols.
Source code is also available in VB .NET, VB 6, Java and C#. A
C++ header file is also available.
IDAutomation 2D Image Generator includes a local generation Windows application that can easily create single or multiple
Data Matrix image files. To generate
dynamic content symbols, IDAutomation offers Native Barcode Generators for
that create symbols without any plug-ins or fonts.
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:
Printed barcode symbols may be easily verified with the Print Quality
Assessment test found in the
2D Barcode Scanner. 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 <<
DATA MATRIX ECC200: 16 x 16 modules in size
Data Field: 12 data & 12 chks in 1 block(s) of GF(256)
X roughly = 0.016"
[A] < Fixed Patterns: 0 module errors
[A] < Data Safety Margin = 100%
[A] < Horizontal Print Growth = +9% of X
[A] < Vertical Print Growth = +14% of X
GS1 Data Matrix barcode symbols may be easily created with
IDAutomation DataMatrix products. The following must all be true to
properly create GS1 symbols:
- The encoding mode must be set to ASCII.
- The ApplyTilde or ProcessTilde function must be enabled.
- The data within the symbol must start with the non-printable FNC1
character, which is encoded automatically when a number exists with
parentheses around it, or ~1 is encoded.
- The number surrounded with parentheses or the number directly after the ~1 is the
Application Identifier (AI). The AI combined with its associated data
makes up an element string.
- Multiple element strings may be encoded in a single symbol according to
GS1 rules. Additional FNC1 characters may be encoded by including
As demonstrated in Fig. 1, the DataToEncode
string of (01)0001234567890 creates
a symbol encoding the 14-digit
GTIN of (01)00012345678905. GS1
Data Matrix barcode symbols do not encode the last digit of the GTIN, which is a
Fig. 1: GS1 Data Matrix symbol encoding
GS1 Data Matrix
symbol encoding multiple element strings with a single FNC1 function. Because the variable
length AI of (10) is included at the end of the encoded data, it is not
necessary to encode additional FNC1 characters into the symbol.
(01)0401234567890(17)050101(10)ABC123 is encoded as
produce this symbol.
According to GS1 specifications, the first FNC1 character should
be decoded as "]d2" and any additional FNC1 characters will be decoded
as <GS> (ASCII 29). The <GS> function is usually only visible when scanned
with the Barcode
Scanner ASCII String Decoder. Not all scanners properly decode the
first FNC1 character as "]d2".
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
2D Barcode Scanner, which reliably reads the IDAutomation
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.
to be easily encoded for various functions such as tabs, returns and
the RS, GS and EOT characters required for
DOD UID labels. In all IDAutomation products, the tilde (~) may
be used to encode
according to the documentation. For
example; ~d009 is used to encode a tab
and ~d013 encodes a return. These functions
are not usually visible when scanned unless the
ASCII String Decoder is used with the scanner.
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<tab>200:
ProcessTilde: = "ECC~d009200"
Java: = "ECC" + (char)9 + "200";
Visual Basic: = "ECC" & Chr(9) &
It is possible to scan and encode international and extended characters
provided the instructions below are followed:
- Encode the data using BASE256 encoding. This option
encodes all data, byte-by-byte.
- 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.
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
2D Barcode Scanner.
DataMatrix Encoding Modes & Determining
Products such as the IDAutomation
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
(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.
use the tilde character "~" to recognize special characters when "Apply
Tilde" or "Process Tilde" is enabled. The following tilde options are
- ~dNNN: Represents the
character encoded by the 3 digits NNN. For example, ~d009 represents
a tab, ~d013 represents a return and ~d065 represents the character
- ~1: Represents the character FNC1. When FNC1 appears in the
first position, it indicates that the data conforms to the
GS1 Application Identifier standard format. Additional parentheses
functionality has been included to comply with the
GS1 Data Matrix specification.
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.
||Max Numeric Capacity
||Max Alphanumeric capacity
||Max Binary capacity
||Max Correctable Error/Erasure
||10 x 10
||12 x 12
||14 x 14
||16 x 16
||18 x 18
||20 x 20
||22 x 22
||24 x 24
||26 x 26
||32 x 32
||36 x 36
||40 x 40
||44 x 44
||48 x 48
||52 x 52
||64 x 64
||72 x 72
||80 x 80
||88 x 88
||96 x 96
||104 x 104
||120 x 120
||132 x 132
||144 x 144
||8 x 18
||8 x 32
||12 x 26
||12 x 36
||16 x 36
||16 x 48
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 made by Acacia and other companies.
Cognex recently challenged, and
won a case relating to
Data Matrix patent claims by Acacia and Veritec.
Back to Top