At this point, let’s begin the tour of symbologies! You will notice there are dozens of different types of barcode symbologies. Each symbology has its strengths and weaknesses and was designed for specific industries, applications and needs. Many symbologies are preserved for historical or commercial reasons, while others have definite technical advantages.

The description of each code will contain the following key points:

  • Character set/size: all symbologies have some limitations on the number (size) and type of characters that can be encoded (set). Barcodes can encrypt numeric only, alphabetical only or alphanumeric character sets. The values of these digits are determined by standards managed by GS1.
  • Fault tolerance: some symbologies are more fault tolerant than others, which means the symbology will be less affected by damage to the printed code. Generally, those with better readability are more fault tolerant. It is important to always test barcodes by subjecting them to some abuse and making sure the equipment will still read them, especially if you print your own barcodes.
  • Application: since all barcodes are created with a unique intended purpose, the selection of a barcode symbology is an important and often complex process. This section will describe the industries or applications that best fit the different symbologies to help you choose the right barcode for your business.


1D / Linear Simbologies

One-Dimensional (1D) barcode symbologies encode data along the length of the barcode (left and right), rather than in the height (up and down). If you draw a line through a barcode, you will see the single dimension. This is how a laser scanner works when it reads a 1D symbol. The height of the barcode just helps the scanner finds the label.

EAN/UPC (Universal Product Code)

The EAN/UPC barcode is the most commonly recognized symbology and identifies most consumer items worldwide.

When a product number is assigned to an item, a unique EAN/UPC barcode is created for each of the millions of products.

EAN/UPC barcodes consist of characters with two bars and two spaces each. As a multiwidth symbology, each bar or space can be one of four widths. Traditionally, EAN/UPC barcodes contain information about the manufacturer and product code. These barcodes also require a check character digit and allows two or five digit supplemental numbers.


EAN-13Character Set: Numeric only
Character Size: 13 fixed-length
Fault Tolerance: High
Application: International retail and grocery standard (Europe)

EAN-13 is a numeric only barcode that is very similar to its United States counterpart, UPC-A. Like UPC-A, EAN-13 has two “six-digit” halves and can only encode a relatively small amount of data. EAN-13 differs from UPC-A by being able to encode one additional character and the first two digits of the code identify a specific country. Furthermore, the first digit in this code, which is encoded in the “parity” of the left half of the label, cannot be “0”.


UPC-ACharacter Set: Numeric only
Character Size: 12 fixed-length
Fault Tolerance: High
Application: Retail and grocery standard (United States)

Likewise, the UPC-A is very similar to its European counterpart, EAN-13. UPC-A is a numeric only barcode, whose first digit is the number system character followed by a five-digit manufacturer number, a five-digit product number and a check character. Due to its limited encoding capabilities, UPC-A is primarily used in retail environment where highly detailed data is not vital to the business.


EAN-8Character Set: Numeric only
Character Size:
8 fixed-length
Fault Tolerance:
Small packages in retail (Europe)

EAN-8 is composed of two “flag digits”, five “data digits” (assigned by the Country Coding Authority), and one “check digit”. This numeric only code is commonly used for marketing small retail items sold in Europe due to the limited character size and set of the code.


UPC-ECharacter Set: Numeric only
Character Size: 6 fixed-length
Fault Tolerance: High
Application: Small packages in retail (United States)

UPC-E is a compressed barcode with an implied number system of “0”. This code is also well suited for small items due to the limited encoding possibilities, similar to its European counterpart, EAN-8.

Code 128

Code 128Character Set: Alphanumeric (uppercase/ lowercase), punctuation, controls
Character Size: Any
Fault Tolerance: High
Application: Best for full ASCII character set

Code 128 is best known for its generic code availability, compact size and diverse encoding capabilities. Code 128’s full ASCII character set can be encoded without double characters, which means two code characters are not required to represent letters, like Code 39. If the barcode has four or more consecutive numbers, they are encoded in double-density mode, which means the two characters are encoded into one character position. Code 128 also has five special, non-data function characters, which set reader parameters or return parameters. Code 128 has three different character-code
subsets, where two of its forms are for error checking, which make it a very stable bar code. Like EAN/UPC, the individual bars and spaces can be multi-width, versus being just wide and or just narrow such as in Code 39.

Code 39

Code 39Character Set: Alphanumeric (uppercase only), punctuation
Character Size: Limited by reader
Fault Tolerance: High
Application: Military, government

Code 39 (Code 3 of 9) is the most common barcode used for custom applications. Its popularity is driven from its ability to support alphanumeric characters and punctuation as well as its ability to support any number of characters that the reader can scan. This ability makes it a very flexible code for the user, especially for government and military applications where codes should have fewer limitations. Code 39 can also be read by almost any barcode reader in its default configuration, which saves installation and set-up time. Code 39, a binary or “two-width” barcode, is one of the oldest of modern barcodes. These barcodes are also self-checking and are not prone to substitution errors. Generally, Code 39 does not require a check character, but it is recommended.

Extended Code 39 (Code 39 Full ASCII)

Extended Code 39Extended Code 39, a derivative of Code 39, is a symbology  that uses combinations of two standard Code 39 characters for every character in the ASCII character set (0-127). Extended Code 39 allows for special characters, such as lowercase letters and control characters (i.e. a Carriage Return (CR), Line Feed (LF), ACK, BEL
or unprintable ASCII characters) at the expense of size. Generally, the more special characters that are used, the longer the barcode will become. Most barcode readers in their default configuration will not read Extended Code 39. If you want to use this symbology, you will need to configure the reader. If you need to read both uppercase and lowercase, Code 128 is the better choice.

GS1 DataBar Omnidirectional

GS1 OmnidirectionalCharacter Set: Numeric only
Character Size: 14 fixed-length
Fault Tolerance: High
Application: GTIN in small format

Formerly known as RSS-14, this symbology is a fixed length code with a built in check digit designed to encode a GTIN (Global Trade Identification Number). The symbology was designed to encode information in a smaller space than the traditional UPC-A/EAN-13 labels. Like UPC/EAN and Code 128, GS1 DataBar uses multi-width bars and spaces to encode characters. This symbology can be stacked to create GS1 DataBar Stacked Omnidirectional Codes, described in the “Stacked” section of this white paper.

GS1 DataBar Expanded

GS1 ExpandedCharacter Set: Numeric only
Character Size: Variable-length
Fault Tolerance: High
Application: GTIN, applications in ID fields

An extension of the GS1 DataBar symbology, GS1 DataBar Expanded was designed to encode Application Identifiers (AI) with the data (like GS1-128). Application Identifiers are fields within the barcode data that mean specific things to specific applications (programs running on a computer). For example, a combination of numbers in a specific location of the barcode may indicate the country of origin, or manufacture date, or carton/container number, etc. This symbol allows users to encode detailed information about the product as per the GS1 specifications. For example, this code could be used to include a product GTIN, use-by date, and manufacturer and/or supplier data. Like GS1 DataBar Omnidirectional code, GS1 DataBar Expanded can be stacked or combined with other codes to create composite codes or coupons.

Interleaved 2 of 5

InterleavedCharacter Set: Numeric only
Character Size: Variable-length
Fault Tolerance: Moderate
Application: Dense numeric codes

The Interleaved 2 of 5 barcode, also known as ITF, is unique because it only encodes an even number of digits. If an odd number of digits are necessary, a leading zero is added. Since the ITF barcode is prone to substitution errors, a check character is always recommended. This code is used primarily in warehouse and distribution systems. It is a denser, more compact variant of Standard 2 of 5 symbology.


GS1-128Character Set: Alphanumeric
Character Size: Variable-length
Fault Tolerance: High
Application: Many uses in supply chain; lots, containers, batches, retail.

Formerly known as UCC/EAN-128, GS1- 128 code is a special version of the C128 symbology, which encodes the user data and the context or meaning of the data as defined by the UCC/EAN128 standard. This is done by encoding the values for one or more Application Identifiers (AIs) as defined by the EAN/UCC-128 standard. The AIs tells the application what the data means: if the data is a shipping container number, expiration date, product weight, size, or other possible values. The standard describes many two or four digit AIs that have specific meanings. In addition, the structure of a UCC/EAN-128 barcode is very specific. It contains a C128 start character, a “Function Code” 1 character, the AI, the data packet (length depends on the AI) and the C128 check character. It is important to note that this barcode is not really a separate symbology, but just a C128 label with a very specific data format. A barcode scanner that is configured to read C128 labels can read UCC/EAN-128 labels without modification.

Code 93

Code 93Character Set: Alphanumeric (uppercase/lowercase),
Character Size: Variable-length
Fault Tolerance: High
Application: Higher density than Code 39

Code 93 is a compressed version of Code 39 and Extended Code 39. It supports the same characters as Code 39, but in a smaller character width and is secured with two required check characters.


MSI PlesseyCharacter Set: Numeric only
Character Size: 3 to 16 fixed-length
Fault Tolerance: High
Application: Grocery

The MSI/Plessey barcode is generally used in grocery stores for shelflabels or in environments with significant wear and tear. The MSI/Plesseybarcode requires a check character, which can be generated in several different ways. Designed in the 1970’s, this symbology has been replaced by more modern codes for most of its original applications.


CodabarCharacter Set: Numeric, punctuation
Character Size: 6 (punctuation characters) variable-length
Fault Tolerance: High
Application: Library

The Codabar is a unique barcode, capable of encoding numeric characters, up to six punctuation characters (i.e. -$:/.+) and spaces. There are also four special “start and stop characters”, which include A, B, C and D. Naturally, Codabar is a popular symbology for encoding dollar figures and mathematical figures with its ability to encode punctuation. It is also a self-checking barcode.

Code 32

Code 32Character Set: Numeric only
Character Size: 8 digit (plus one check character)
Fault Tolerance: High
Application: Pharmaceutical industry (Italy)

Code 32 is a barcode with limited applications as it was designed to encode pharmaceutical products in Italy. Since this symbology is used only in Italy, many scanners do not decode Code 32 by default and require programming to enable decoding.

2D Stacked Simbologies

2D Stacked Symbologies

Two-Dimensional (2D) barcode symbologies contain information in both the X and Y axis of the symbol. In other words, there is different data encoded in the horizontal and vertical dimensions. To properly decode the data, a scanner must read the entire symbol, in both dimensions simultaneously. This can be done by sweeping the
scan line (in the case of a laser or linear imaging scanner) over the symbol, or by using a 2D array equipped scanner, which acts as a camera. Since the data can be stored in two dimensions, 2D barcode symbologies allow vast amounts of data to be stored. A great example of potential data storage of these codes is that of a 2D code no larger than a standard UPC barcode that can contain the entire Gettysburg Address, a document consisting of 246 words.

There are two kinds of 2D barcode symbologies: stacked codes and matrix codes.

Stacked codes consist of multiple layers of linear barcodes and matrix coodes encode data using cells within a matrix.


PDF 417Character Set: Alphanumeric (uppercase/lowercase), punctuation, controls
Character Size: Variable-length
Fault Tolerance: High
Application: Driver licenses, transportation, inventory management, government

The PDF417 (Portable Data File) barcode is a stacked linear barcode that consists of 3 to 90 rows, each of which is like a small linear barcode. The PDF417 can link other barcodes scanned in sequence, which allows more data to be stored. It also has user-specific dimensions. This lets the user decide how wide the narrowest vertical bar (X dimension) and the height/quantity of the rows (Y dimension). The PDF417 barcode has a public domain format, which means that anyone can implement systems using this code without a license. PDF417 can be used in many applications in differing environments,  such as a substitution for paper boarding passes. The PDF417 is the standard barcode selected by the airline industry’s Barcoded Boarding Pass standard (BCBP) as the official symbology, and by the Department of Homeland Security in the United States for machine readable zone technology for RealID compliant driver licenses.

Codablock F

Codablock FCharacter Set: Numeric only
Character Size: Up to 5,450 characters variable-length
Fault Tolerance: High
Application: Healthcare

Codablock F is an extension of the Code 128 symbology and provides encoding for the full ASCII table. Codablock F allows a Code 128 label to be cut into pieces and stacked, which makes it perfect for environments that need a more compact format. A Codablock F label can have from 2 to 44 rows with 4 to 62 characters per row, thus encoding up to 5450 numeric characters.

GS1 DataBar™

Emerging as the replacement for the restrictive and continuously limiting EAN/UPC codes, GS1 DataBar has been approved for marking trade items in the retail supply chain. GS1 DataBar is a family of linear 1D and stacked 2D barcodes. It is a more compact symbology than UPC/EAN and it has the capability of encoding much more information.

GS1, the global retail standards-setting organization formerly known as EAN International and Uniform Code Council, set January 1st, 2010 as the sunrise mandate for global adoption of this new barcode type. As of 2010, all manufacturers around the world have the option of marking their packages with GS1 DataBarcodes as an alternative, or update, to the EAN/UPC barcodes still used today. Retailers must be ready to scan these packages at the point-of-sale, on the shelf, in the stockroom and elsewhere within their logistics systems.

GS1 DataBar Stacked Omnidirectional

GS1 Stacked OmnidirectionalCharacter Set: Numeric
Character Size: 14 fixed-length
Fault Tolerance: High
Application: Grocery (Produce)

A variant of GS1 DataBar Omnidirectional code, the stacked version uses the same data character set and size. The stacked version was created to provide a compact way to mark small items, specifically produce. In this version, there are only two rows containing the data with a separator pattern between the two data rows. This narrow separator contains no data, but helps the scanner decode the two parts.

GS1 DataBar Expanded Stacked

GS1 Expanded StackedCharacter Set: Numeric
Character Size: Variable-length
Fault Tolerance: High
Application: Coupons

This variant of GS1 DataBar Expanded contains the same data and format as the Expanded version, but allows stacking of the code to make it more compact, in terms of being narrower and higher. This barcode can have anywhere from 2 to 11 rows, each up to 20 segments long. Like the Stacked Omnidirectional version, the data rows are separated by a narrow non-data row.

Code 49

Code 49Character Set: Alphanumeric
Character Size: Up to 49 alphanumeric characters or 81 numeric
Fault Tolerance: High

The Code 49 barcode is a multiple-row barcode that can encode the full ASCII character set below ASCII 128. The characters in this code are encoded into two to eight rows, where each row is divided by a separator bar. The top and bottom of the symbol also have separator bars that extend to the ends of the minimum quiet zones. All characters are encoded in double-density mode, or that two characters are encoded into one character width, making the size of the barcode smaller. For example, sequences of five digits are represented as three code characters. Code 49 barcodes also have three forms of error detection. Parity is checked for each character to ensure each row contains a check character as the last row character. Two to three check characters are always attached to the end of the barcode.

Code 16K

Character Set: Alphanumeric
Character Size: Up to 77 full ASCII characters or 154 numeric characters
Fault Tolerance: High
Application: Healthcare

The Code 16K barcode is a multiple-row barcode that was created to resolve Code 49’s memory problems for encoding and decoding tables and algorithms. Code 16K barcodes can encode the full ASCII character set below ASCII 128 and uses existing UPC and Code 128 character set patterns, where characters are encoded into 2 to 16 rows. Each row is divided by a separator bar. The top and bottom of the symbol also have separator bars that extend to the ends of the minimum quiet zones. Code 16K is like Code 128 as a choice can be made between three subsets of Code 16K directly or you can choose Code 16K Auto for auto switching mode. When choosing Code 16K Auto, it is important to note that if the barcode has four or more consecutive numbers, the numbers are encoded in double-density mode. Code 16K barcode has three forms of error detection. Parity is checked for each character to ensure each row contains a check character as the last row character. Two to three check characters are always attached to the end of the barcode.

Composite barcodes

Goldfish Flakes 1Goldfish Flakes 2Goldfish Flakes 3Composite barcodes, a special type of stacked barcode, consists of a linear part and a 2D part. The linear portion can be either EAN-13, EAN-8, UPC-A, GS1-128, or GS1 DataBar. Above the linear code is the 2D portion, which is a form of PDF417 (including a variant called Micro PDF417). The linear portion contains the usual product code, while the 2D portion may contain additional data, like the expiration date or manufacturer information. Special characters within the 2D portion prevent a scanner from reading the 2D component without reading the linear code.

2D Matrix Simbologies

2D Matrix Symbologies

Another form of a 2D symbology is called “matrix code”. Some define a matrix code as simply a code rather than a barcode, because the data elements are not simply bars and spaces. For simplicity, most still refer to such 2D symbols as barcodes.
In a matrix code, the data is encoded in black elements within the symbol and each element is the same size. At first glance, these barcodes look a little like a cross-word puzzle.
There are many benefits to using a matrix code, such as the ability to encode a lot of data in a small space, high readability, resistance to
poor quality printing/damage to the label and support of the full ASCII character set, with some able to encode Kanji characters. On the downside, it requires a 2D imager rather than a laser scanner to read them.

Data Matrix

Data MatrixCharacter Set: Alphanumeric, Uppercase/Lowercase Letters, Punctuation, Controls
Character Size: Up to 2,335 characters fixed-length
Fault Tolerance: High
Application: Marking small items, printed on labels and letters, industrial engineering for marketing components

Data Matrix code, a 2D matrix barcode, consists of black and white cells arranged in either a square or a rectangular pattern. The code has two solid dark edges in an “L shape”, used as a “finder pattern”. It also has alternating dark and light patterns on the other two edges, which is used to identify the location and number of rows and columns, called a “timing pattern”.
Inside these borders are rows and columns of cells encoding information.
As more data is encoded in the symbol, the number of cells (rows and columns) will increase. Data Matrix can encode up to 3,116 numeric digits per symbol. Error correction codes are added to increase symbol strength, which ensures the code can still be read despite damage. Data Matrix codes can be quickly read, and because the data is encoded in the center of the cell, it is highly immune to printing errors such as ink spread. Data Matrix is an infinitely scalable code, with commercial applications as small as 300 micrometers and as large as a 1 meter squared.

QR Code

QR CodeCharacter Set: Alphanumeric, Uppercase/Lowercase Letters, Punctuation, Controls. Includes Kanji characters
Character Size: Up to 7,000 numeric characters or 4,296 alpha characters variable-length
Fault Tolerance: High
Application: Automobile manufacturing, mobile phone codes

Named QR for “Quick Response”, QR Codes are square codes that can be quickly read due to their design. QR Codes are square symbols, containing three distinctive “finder” squares embedded in three corners of the symbol. A fourth smaller alignment square is near the lower right corner of the symbol. When read by a QR-enabled reader linked to a browser, the code can direct a user to a web site. The QR code also has a variant symbology known as the Micro QR Code, which can hold 35 characters in a small space. QR Codes were invented in 1994 by Denso-Wave in Japan to support the automobile manufacturing industry. Despite its trademark, the format is open, which allows royalty-free use of the symbology.

Aztec Code

Aztec CodeCharacter Set: Alphanumeric, Uppercase/Lowercase Letters, Punctuation, Controls
Character Size: 3,000 characters
Fault Tolerance: High
Application: Part marketing in manufacturing, large capacity for small items, transportation and logistics and government

Aztec Codes are general purpose barcodes that were formally published by AIM International in the fall of 1997 after being created by Welch Allyn Inc. Despite its patent, the code has been released to the public domain.
With a square shape and a distinctive concentric square pattern (bullseye) in the center, Aztec Codes can be thought of in two basic formats: a compact symbol will display a 2-ring bulls-eye and the full range symbol will display a 3-ring bulls-eye. Together, the two formats create a sequence of 33 distinct symbol sizes. This enables the Aztec Code to encode small to large amounts of data, despite its small size (13 to 3,832 numeric characters or 12 to 3,067 alpha characters). The Aztec character set includes the entire ASCII and extended-ASCII set (character 0 – 255). The symbology utilizes a Reed-Solomon error correction technique, with user-selectable levels of security.


MaxicodeCharacter Set: Alphanumeric, Uppercase/Lowercase Letters, Punctuation, Controls
Character Size: 93 alphanumeric characters or 138 numeric characters fixed-length
Fault Tolerance: High
Application: Sorting, tracking

Designed with the intention of encoding postal information, Maxicode is a unique barcode array of hexagonal dots, rather than rectangular bars, and distinctive center target of concentric circles. Although Maxicode encodes far less data than other matrix codes, it has the perfect amount of data store for encoding most package addressing.
Maxicode was developed by United Parcel Service of America, Inc. (UPS) and since has been adopted by AIM and ANSI as the suggested symbology for product sorting and tracking.

Postal Codes

Postal CodesPostal Code symbologies are another type of barcode symbology that cannot be described as purely a 2D or a 1D linear barcode, but somewhere in between. Typically, these codes do not contain data in the bar and space width, but instead, in the position and height of the bars. Most postal codes are numeric only, but some do encode letter characters as well.

Digimarc Barcode®

Digimarc® Barcode

We conclude our tour in this virtual museum with the last room: the introduction of a new type of barcode, a method that improves throughput productivity, while delivering a wealth of new benefits to retailers and customers. What are we talking about?

Digimarc® Barcode (or GS1 DWCode) is a very innovative technology enabling barcodes being printed invisibly multiple times over the entire surface of a given package. Digimarc Barcodes use the same data commonly found in UPC / EAN or GTIN 1D barcodes. The invisible Digimarc barcodes are used for improved traceability and brand authentication, and to defeat barcodes swapping frauds. Since the entire package or label surface is encoded, packaging and labels with Digimarc Barcode are easier to read by all supported devices.

Cashier clerks as well as shoppers using self-checkout services can scan items faster, without having to hunt for the barcode on an item and position it appropriately towards the reading window.

In addition, packaging with Digimarc Barcode can provide mobile-enabled shoppers with extra product information, special offers, recommendations, reviews, social networks, and more.

Retailers use Digimarc Barcode for easier, more reliable, secure and versatile checkout. They significantly improve their operational efficiency and gain effectiveness in inventory control activities. It becomes an unobtrusive and seamless element of packaging artwork and can also be applied to in-store printed labels, for more efficient smartphone scanning tasks performed by cashiers and shoppers. Digimarc Barcode makes thermal labels scanning smoother, helping cashiers scan more easily torn, wrinkled or damaged fresh food labels.