Barcode Symbologies
In this guide, you will learn about barcode symbologies and their use cases.
Before you start…
To get the most out of this guide, we recommend that you first take a look at the following guides:
Supported Symbologies
Retail 1D Symbologies
European Article Number (EAN) |
|
|
![]() |
Universal Product Code (UPC) |
|
|
![]() |
EAN-2 / EAN-5 Add-On |
|
|
![]() |
GS1 DataBar |
|
|
![]() |
Industrial 1D Symbologies
Code 128 |
|
|
![]() |
Code 32 |
|
|
![]() |
Code 39 |
|
|
![]() |
Code 93 |
|
|
![]() |
ITF (Interleaved 2 of 5) |
|
|
![]() |
Codabar |
|
|
![]() |
Legacy 1D Symbologies
Code 11 |
|
|
![]() |
Code 25 |
|
|
![]() |
IATA 2 of 5 |
|
|
![]() |
Matrix 2 of 5 |
|
|
![]() |
MSI Plessey |
|
|
![]() |
2D Symbologies
QR Code |
|
|
![]() |
Micro QR Code |
|
|
![]() |
Rectangular Micro QR Code (rMQR) |
|
|
![]() |
Data Matrix |
|
|
![]() |
Data Matrix Rectangular Extension (DMRE) |
|
|
![]() |
Data Matrix Direct Part Marking (DPM) |
|
|
![]() |
PDF417 |
|
|
![]() |
MicroPDF417 |
|
|
![]() |
Aztec Code |
|
|
![]() |
MaxiCode |
|
|
![]() |
GS1 DotCode |
|
|
![]() |
GS1 Composite Codes
GS1 Composite Codes as defined in ISO/IEC 24723:2010 are made up of a 1D and 2D code. For technical details see our guide for scanning composite codes.
GS1 Composite Code A (CC-A) |
|
|
![]() |
GS1 Composite Code B (CC-B) |
|
|
![]() |
GS1 Composite Code C (CC-C) |
|
|
![]() |
Postal Code Symbologies
RM4SCC (Royal Mail 4 State Customer Code) |
|
|
![]() |
KIX (Klant Index) |
|
|
![]() |
Posi LAPA 4 State Code |
|
|
![]() |
USPS Intelligent Mail |
|
|
![]() |
Symbologies details
GS1 Data Carriers
The GS1 organisation defined a standard to encode application specific data in a barcode. The symbologies Code128, GS1 DataBar, DataMatrix and QR codes can contain GS1 encoded data. The barcode property Barcode.isGs1DataCarrier tells you if a barcode contains GS1 encoded data. GS1 data has to be accessed using Barcode.rawData and not Barcode.data because it is stored in machine readable form and might contain non-printable characters such as group separators (ASCII 29).
GS1 encoded data cannot be displayed directly to the user. The application identifiers cannot be distinguished from the data and non-printable characters might be part of the data. There are three different options to process the data. Use the Scandit parser API to convert the machine readable data into a human readable string, use the Scandit parser to extract all data elements (Application Identifiers) from the machine readable data or lastly use your own parser to transform the machine readable data.
Example of a correctly encoded GS1 Code128 (also known as GS1-128) barcode:

The machine readable data that gets scanned from the code above, where <GS> represents the non-printable group separator character:
1088748816455721123456789012<GS>11111228
The same data in the human readable representation:
(10)887488164557(21)123456789012(11)111228
The same data parsed into its application identifiers by the Scandit parser:
[
{
"name" : "01",
"parsed" : {
"indicator" : 1,
"company_prefix" : "0887488",
"item_reference" : "16455"
},
"rawString" : "10887488164557"
},
{
"name" : "21",
"parsed" : "123456789012",
"rawString" : "123456789012"
},
{
"name" : "11",
"parsed" : {
"year" : 2011,
"month" : 12,
"day" : 28
},
"rawString" : "111228"
}
]
Symbology Specific Notes
Code128 uses a leading FNC1 character (ASCII 21) to signal GS1 data. The FNC1 character is encoded but will not be returned in the barcode result.
GS1 DataBar always contains GS1 data.
DataMatrix and QR Code use an internal symbology specific FNC1 symbol to signal GS1 data carrier mode. The internal symbol is not returned as part of the result. The common mistake of adding a leading group separator character in raw byte mode does not turn the code into a GS1 data carrier.
There are many incorrectly encoded GS1 codes in the wild. The following image depicts two common error cases: The first incorrect code uses a leading group separator instead of the DataMatrix specific encoding scheme. The second error case encodes the human readable GS1 data representation in a normal DataMatrix code.

What’s next?
To dive further into the Scandit Data Capture SDK we recommend the following articles: