dLSoft                software for barcodes and labelling                     


Barcode information - 2D types

Common 2D barcode types (follow links for linear 1D types or clocked types)


Aztec barcodes

Aztec is a matrix symbology which supports the entire ASCII character set and offers several error checking modes. Aztec symbols are square and may be read at any orientation.

Aztec barcode

 The symbol is made up of squares which "grow" from the centre around a centre mark. The size of the symbol is characterised by the number of "layers" outside the centre mark, and this can range from 1 – 32.

Security and Layers

In Normal mode the user may select any percentage of the symbol to contain error checking data within the range 1 – 99%. This is the Security Level in dLSoft libraries. If a value of 0% is used then the symbol will actually be produced with the default amount of error correction (which is 23% + 3 codewords). The higher the security level the greater will be the number of layers required to contain the symbol – and hence its overall size.

In Compact mode the user specifies the number of layers used to contain the symbols information – and this is restricted to the range 1 – 4.  Error correction data fills the space available.

In Full range mode again the user specifies the number of layers allowed for the symbol, but this time the range is 1 – 32. Again error correction data is used to fill otherwise unused space in the specified number of layers.

In Full range mode the maximum capacity of Aztec Code symbols is approximately as follows:

Digits only – maximum capacity 3800 digits
Alphanumeric text – maximum capacity 3000 characters*
Byte values – maximum capacity 1900 bytes

*Note that capital letters, punctuation and new lines/paragraphs reduce this value.

Runes are special Aztec symbols which consist of a single layer and have no security options. Appended symbols are not supported by dLSoft products at this time.

dLSoft dBarcode.NET components support the encoding of Unicode character data in Aztec symbols.


Codablock F

Codablock is a stacked barcode symbology based on Code 128. It can encode the full ASCII character set in a symbol which consists of multiple rows of Code 128 type symbols, using a common “Start A” start character and a common “Stop” stop character. Apart from the start and stop character the other characters in adjacent rows have a horizontal line between them.

Codablock F stacked barcode

Each row in a Codablock symbol contains (in addition to the common start and stop characters) a subset selector, a row indicator and a check digit, along with a number of data characters. This enables each row to be read by Code 128 scanners.

Codablock symbols can hold a maximum of 2725 characters, although this value is significantly reduced by the presence of subset change characters. Codablock symbols can have between 2 and 44 rows, and each row can hold between 4 and 16 characters plus the subset selector, row indicator and check digit.

Codablock symbols are character self-checking and may be scanned in any direction. The subtypes used in the symbol are essentially identical with those use in Code 128 symbology.


Code 16k barcodes

Code 16k barcodes are stacked barcodes which encode characters using a reverse video version of Code 128. Each row starts and ends with a UPC digit, which indicates the row number and the direction of scan.

 Code 16k barcode

Each row encodes 5 data characters and the Code 128 type C mode is used for numeric-only strings. A maximum of 16 rows are permitted.

Code 16k has three coding schemes and permit the inclusion of special characters not present on the keyboard. If no coding scheme is specified scheme B is used by default. Scheme C is used for any code, which has numbers in the first four digits. An alternative scheme may be selected within dLSoft products by selecting one of the following Start modes:

Start mode

Code set

leading char


















Shift B



Double Shift B


Code 49 barcodes

A code 49 barcode is a stacked symbol containing between 2 and 8 rows, each separated by a separator bar. Each row contains 16 “words” (which are generated from character pairs) and a start and stop character. The last row also contains the number of rows in the symbol and the check digit characters.

Code 49 stacked barcode

There are 2400 possible words which can be generated from each pair of characters (by taking the value of the right hand character plus 49 time the value of the left hand character). Symbols with less than 7 rows contain 2 check digits in the final row. Symbols with 7 or 8 rows contain 3 check digits in the final row.

A numeric mode allows 5 digits to be encoded in the same space as three alphanumeric characters, so offering a higher density.

Encoding Code 49 symbols may be accomplished only in Auto mode and there is no user choice in the number of rows or columns in a Code 49 symbol.


DataMatrix barcodes

DataMatrix is a two dimensional matrix symbology which is made up of square modules arranged within a finder pattern. DataMatrix symbols may be square or rectangular.

Square Datamatrix barcode                     Rectangular Datamatrix barcode

DataMatrix symbols can encode the entire ASCII character set and uses multiple encoding modes, which are, in order of efficiency:

Double digits – maximum capacity 3100 digits
Alphanumeric text – maximum capacity 2300 characters*
Byte values – maximum capacity 1550 bytes

*Note that capital letters, punctuation and new lines/paragraphs reduce this value.

In dLSoft products supporting Datamatrix the user may specify either a security level for the symbol (the proportion of the symbol devoted to error correction) or the number of barcode elements across the symbol.

dLSoft 2D barcode products support only ECC200 symbols – the older ECC140 (and below) are not supported. Also at this time ECI and Appended symbols are not supported. dLSoft dBarcode.NET components support the encoding of Unicode character data in Datamatrix symbols.


GS1 Composite symbols

GS1 Composite symbols consist of a linear component associated with an adjacent 2D component which is used for encoding supplementary data – such as a batch number or expiration date. The linear component should be scannable by normal 1D scanners even though such scanner may ignore the 2D component.

The linear component may be one of the following: EAN-13, UPC-A, EAN-8, GS1-128 or a Databar symbol.

The 2D component may be a CC-A or CC-B component (a variant of Micro PDF417) or, in the case of GS1-128 linear components, may be a CC-C component (a variant of PDF417). The choice between CC-A and CC-B components is made on the basis of the amount of data to be encoded in the 2D component. CC-A can accommodate up to 56 digits (excluing any control characters), while CC-B can hold up to 338 digits. A CC-C component may be used only with a GS1-128 linear component, but can hold up to 2360 digits.

The 2D component includes a linkage flag to distinguish the component from a stand-alone 2D barcode and to ensure that the 2D component does not scan without the linear component.


EAN13 barcode        UPC-A barcode        EAN-8 barcode
EAN-13 with CC-A                            UPC-A + 2 with CC-A                        EAN-8 with CC-A


GS1-128 with CC-C
GS1-128 with CC-C


GS1-128 with CC-A           
GS1-128 with CC-A


Databar Limited with CC-A       Databar Stacked with CC-A            Databar Omnidirectional with CC-A
Databar Limited with CC-A            Databar Stacked with CC-A        Databar Omnidirectional with CC-A


Databar Expanded-Stacked with CC-A                    Databar Stacked-Omindirectional with CC-A
Databar Expanded-Stacked with CC-A            Databar Stacked-Omindirectional with CC-A


GS1-DataBar barcodes (formerly RSS)

The GS1 DataBar symbology - formerly known as EAN.UCC Reduced Space Symbology (RSS) - is a family containing three linear symbologies and three stacked variants, known as GS1-DataBar barcodes. GS1-DataBar-14 encodes the full 14 digit GS1/EAN/UCC item identification in a linear symbol that can be scanned in any direction. GS1-DataBar Limited encodes item identification suitable for use on small items, but not for use at point-of-sale.

Databar Omnidirectional (RSS 14) barcode

 GS1-DataBar -Expanded encodes the 14 digit GS1/EAN/UCC item identification plus supplementary AI elements.

Databar Expanded barcode

Databar Stacked barcode

GS1-DataBar -14 Stacked is a variant which is stacked in two rows, either as a truncated version (above) used for small item marking, or as an omni-directional version (below) designed to be read by omnidirectional scanners.

Databar Omnidirectional Stacked barcode

The GS1-DataBar -14 based versions encode the full 14 digit GS1/EAN/UCC item identification number and this may be prefixed with the (01) AI – although this is NOT encoded.

The dLSoft DataBar implementation uses the following Start Mode property values to specify the symbol:

Start Mode DataBar version
0 DataBar-14
1 DataBar-14 Truncated
2 DataBar Limited
3 DataBar-14 Stacked
4 DataBar-14 Stacked Omnidirectional
5 DataBar Expanded
6 DataBar Expanded Stacked

All DataBar symbols are based on Xunit size, where the Yunit (height) is treated as a multiplier of the Xunit value.

The following height values should be used:

DataBar-14: a minimum height of 33 X

DataBarTruncated: a minimum height of 13 X

DataBar-14 Stacked: a fixed height (top row 5X, bottom row 7X, separator 1X)

DataBar-14 Stacked Omnidirectional: minimum height 33X (each row)

DataBar Limited: minimum height 10 X.

DataBar Expanded: minimum height 34 X

DataBar Expanded may also be used in a stacked version, and the extent of stacking may be specified using the PairsPerRow property, which can range be set between 1 and 10, where 1 represents the minimum allowed width of the symbol. Again each row shall have a minimum height of 34 X.

DataBar Expanded may be used to encode AIs in addition to the item identification number as listed below:

(01)………(3103)…… - 6 digit metric weight
(01)………(3202)…… - 6 digit pound weight
(01)………(392x)…… - 3 digit price
(01)………(393x)…… - 3 digit ISO currency code followed by price
(01)..……..(310x)…….(yy)…….. – metric weight and six digit date
(01)…..…..(320x)…….(yy)…….. – English weight and six digit date

(where yy may be 11 (production date), 13 (packaging date), 15 (best before date) or 17 (expiration date).


Maxicode symbols

MaxiCode is not really a barcode – it doesn't have any bars. It is a fixed size matrix symbology made up of offset rows of hexagonal modules, with a Finder pattern in the centre.

MaxiCode symbols are reproduced at a width of 25.5 mm and a height of  24.4 mm (in each case there is a tolerance of 1.5 mm).

Intended primarily for encoding addresses for postal and delivery applications, it has a relatively low information content. On the other hand the fixed physical size of the image simplifies the facilities required for both printing and scanning the symbols.

Maxicode symbol

MaxiCode is characterised by the two "messages" which make up its data content – the Primary message and Secondary message. The symbology may be used in 5 modes which utilise the two message in different ways and with different levels of error correction, as shown in the table below:





obsolete (not supported)


obsolete (not supported)


Primary message encode numeric postal code, country code and service code,    secondary message encodes additional data


Primary message encode alphanumeric postal code, country code and service code, secondary message encodes additional data


Any data up to 84 data characters automatically split between primary and secondary messages.


Any data up to 68 data characters automatically split between primary and secondary messages. Enhanced error correction used


Similar to 4, but used for reader control.


In modes 4, 5, and 6 virtually any ASCII data may be encoded up to the maximum number of data characters allowed. However, encoding introduces additional shift and latch characters whenever characters other than uppercase letters and numbers are used and the maximum length of text becomes correspondingly smaller.

Modes 2 and 3 are for Structured Carrier Messages and require specific data in the correct order to produce a scan able symbol. Basically the data consists of the sequence:
postal code G country code G service class G secondary message
where the 4 components are separated by ASCII 29 characters, shown as G.

In mode 2 the postal code must be numeric only and up to 9 digits. In mode 3 the postal code may be up to 6 alphanumeric characters. The country code and service class elements must be three digits each.

Mode 2 or 3 message which begin with the sever character sequence [)>R01G (where G is ASCII 29 and R is ASCII 30) are treated in the special way described in the MaxiCode specification. Any secondary message can terminated with an End of Transmission character (ASCII 4).

Because the non-printable ASCII characters are a required part of MaxiCode messages in Modes 2 and 3, dLSoft software recognises the following keyboard sequences for the entry of such characters:


ASCII value









An example of a Caption string for a Mode 2 Maxicode is:

[)><RS>01<GS>96152382802<GS>840<GS>001<GS>1Z00004951<GS>UPSN<GS>06X610<GS>159<GS>1234567<GS>1/1<GS><GS>Y<GS>634 ALPHA DR<GS>PITTSBURGH<GS>PA<RS><ET>

Appended symbols are not supported by dLSoft software at this time.

MaxiCode symbols are sensitive to the gap between hexagons. For printing on a 300 dpi laser we recommend the line width reduction parameter be set to 12.

Micro PDF417 barcodes

Micro PDF417 is a multi-row symbology based on PDF417 and designed for applications requiring a greater area efficiency but lower data capacity than PDF417. A specific and limited set of symbol sizes is available, each size including a fixed level of error correction.

Micro PDF417 symbol

MicroPDF417 provides for three encoding modes: Text, Byte and Numeric compaction. Text is for general text, Numeric for encoding data consisting only of digits, and Byte to allow for the first 127 ASCII characters but with a reduced level of efficiency. Four symbol widths are permitted, each specifying the number of data columns (1 – 4). Within each symbol width a variable number of rows provide for a maximum data capacity of:

  • Text compaction mode 0: 250 characters (2 data characters per codeword)
  • Byte compaction mode 1: 150 characters (1.2 data characters per codeword)
  • Numeric compaction mode 2: 366 characters (2.93 data characters per codeword)

Appended symbols are not supported at this time.


Micro QR Code

Micro QR Code symbols are very small QR Code symbols suitable for applications that require a smaller space and use smaller amounts of data than normal QR Code barcodes, such as ID of printed circuit boards and electronics parts, etc. The efficiency of data encoding has been increased with the use of only one position detection pattern.

Micro QR Code barcode

The capacity of Micro QR Code symbols at the lowest error correction level is:

Numeric data    35 digits
Alphanumeric data        21 characters
Byte data          15 bytes

Note that Alphanumeric includes digits and uppercase letters, the space and the $ % * + - . / : characters only.


PDF417 barcodes

PDF417 (Portable Data File 417) is a stacked barcode symbology capable of encoding over a kilobyte of data in a symbol. PDF417 may include extensive error-correction enabling data to be recovered from a symbol which has been damaged or corrupted.

PDF417 barcode

There are 900 different patterns (codewords) which may be incorporated into a PDF417 symbol, and several modes available for encoding.

Encoding Modes

EXC (Extended Alphanumeric Compaction mode) - allows encoding of all printable ASCII characters into about 2 characters per codeword. Within the EXC mode there are several submodes:

EXC Alpha - starts in upper case
EXC Lower - starts in lower case
EXC Mixed - numeric and other punctuation
EXC Punctuation - punctuation & bracket characters.

Binary/ASCII Plus mode - allows encoding of 256 international characters including the full ASCII set plus any 8-bit value in the range 0 - 255. This mode allows encoding approximately 1.2 bytes per codeword and so is considerable less efficient than EXC mode.

Numeric mode - allows encoding of a string of digits with a density of approximately 2.95 digits per codeword. Recommended where more than 13 digits are to be encoded. Numeric mode symbols may not contain non-numeric characters.

The maximum capacity of PDF417 symbols is approximately as follows:

Numeric mode – maximum capacity 2700 digits*
Alphanumeric text – maximum capacity 1800 characters*
Byte values – maximum capacity 1100 bytes

*Note that capital letters, punctuation, mode shifts and new lines/paragraphs reduce these value.

Security level

One of PDF417’s most valuable features is its ability to allow correction of errors. This ability is provided by the inclusion of additional codewords within the symbol, so that the data codewords may be reconstructed even if some are defaced or misread.

The number of damaged codewords (Nmax) which may be recovered depends on the security level (which in turn determines the number of additional characters included in the symbol)


Security level





















PDF417 symbols may be reproduced with different number of codewords per row, and therefore in several widths.

The user may specify the number of codewords per row in all dLSoft products support PDF417, subject to the limitation that all PDF417 must contain at least 3 rows. In general tall, thin barcodes read more reliably than short, wide symbols, although there may be restrictions applied by the type of barcode scanner employed.

dLSoft dBarcode.NET components support the encoding of Unicode character data in PDF417 symbols.

Appended symbols are not supported at this time.

QR Code barcodes

QR Code is a matrix symbology consisting of a square array of modules with a finder pattern located at three corners. A wide range of symbol sizes is supported along with four levels of error correction, and the symbology is noted for its high data density.

Small QR Code barcode            Large QR Code barcode


The dLSoft libraries support QR Code Version 2 in Numeric, Alphanumeric and Byte modes. (Kanji mode is supported at this time on the the .NET products).

The maximum data capacity of the symbols (at Level 0 error correction) are:

Numeric data            7089 digits
Alphanumeric data        4296 characters
Byte data                  2953 bytes

Note that Alphanumeric includes digits and uppercase letters, the space and the $ % * + - . / : characters only.

dLSoft dBarcode.NET components support the encoding of Unicode character data in QR Code symbols.

Truncated PDF417

PDF417 symbols that are missing one data codeword and the stop bars from each row are known as Truncated PDF417 symbols. Most scanners will read such symbols, but some will not!

Truncated PDF417

Truncated PDF417 symbols have the advantage of being smaller than full PDF417, but the disadvantage of being less able to tolerate damage without becoming unreadable.