Which symbologies are supported
The Scandit SDK supports the following 1D and 2D barcode symbologies. Configuration options for each symbology can be found on the C API symbologies page. Details about the supported GS1 Composite Codes can be found on the Scan composite codes page.
Retail 1D Symbologies
European Article Number (EAN)

- Also known as Japanese Article Number (JAN).
- Encodes a Global Trade Identification Number (GTIN).
- Contains 8 (EAN-8) or 13 (EAN-13) numerical digits.
- Last digit serves as a mod10 checksum.
- Additional data can be stored in an EAN-2 or EAN-5 add-on code.
- It has been standardised under ISO/IEC 15420.
Universal Product Code (UPC)

- Encodes a Global Trade Identification Number (GTIN).
- Contains 6 (UPC-E) or 12 (UPC-A) numerical digits.
- Last digit serves as a mod10 checksum.
- Additional data can be stored in an EAN-2 or EAN-5 add-on code.
- It has been standardised under ISO/IEC 15420.
EAN-2 / EAN-5 Add-On

- Encode additional product data like issue number, date or price.
- Can only be used in combination with an EAN-8, EAN-13, UPC-A or UPC-E code.
- EAN-2 encodes two digits, EAN-5 encodes five digits.
- Additional information can be found on the Scan add-on / extension codes page.
GS1 DataBar

- Used to encode a Global Trade Identification Numbers (GTIN) along with variable additional information defined by application identifiers (AI). Examples are price, weight or expiry date.
- Valid application identifiers (AI) are defined in the GS1 specification.
- Supports variable length data content.
- Barcode data is verified by an implicit checksum.
- Does not require quiet zones around the barcode.
- It has been standardised under ISO/IEC 24724.
- DataBar-14 is supported in the omnidirectional, truncated and stacked flavour.
- DataBar Expanded is supported in the normal and stacked flavour.
- DataBar Limited is supported since SDK version 4.11.
Industrial 1D Symbologies
Code 128

- Used in a wide range of applications.
- The barcode data can be encode numerical data only, two different subsets of the ASCII table or Latin-1 (ISO-8859-1) data. Combinations of the four different modes can be used in a single code.
- Supports variable length data content.
- A mandatory checksum is verified.
- It has been standardised under ISO/IEC 15417.
- Includes support for EAN-128 and GS1-128.
Code 32

- It is used for labelling pharmaceutical products in Italy.
- Also known as Italian Pharmacode, IMH, Codice 32 Pharmacode, Codice Farmaceutico Italiano and Radix 32.
- Contains nine numerical digits.
- Last digit serves as a mandatory checksum.
- Narrow to wide bar ratios of 1:2.5 is recommended.
- Specification can be found in Allegato A Caratteristiche tecniche del bollino farmaceutico from 18-7-2014 GAZZETTA UFFICIALE DELLA REPUBBLICA ITALIANA Serie generale - n. 165
- Support has been added in the SDK version 5.9.
Code 39

- Mostly used in logistics to encode application specific identifiers.
- The standard version can encode numbers 0-9, capital letters A-Z, symbols -.$/+% and space.
- Supports variable length data content.
- Narrow to wide bar ratios from 1:2 up to 1:3 are supported. 1:2.5 is recommended.
- By default no checksum is verified, but an optional mod43 checksum can be enforced.
- All ASCII characters including control characters encoding support can be enabled on demand.
- It has been standardised under ISO/IEC 16388.
Code 93

- Mostly used in logistics to encode application specific identifiers.
- Data in standard encoding (numbers 0-9, capital letters A-Z, symbols -.$/+% and space) and Full ASCII mode (including control characters) are supported.
- Supports variable length data content.
- Two mod47 checksums are verified.
ITF (Interleaved 2 of 5)

- It is used primarily in the distribution and warehouse industry.
- Encodes an even number of numerical characters.
- Supports variable length data content.
- Narrow to wide bar ratios from 1:2 up to 1:3 are supported. 1:2.5 is recommended.
- By default no checksum is verified.
- It has been standardised under ISO/IEC 16390.
- An optional mod10 checksum can be enforced.
- Alternative names for this symbology include Leitcode, or Identcode. Both of these have a mandatory mod10 checksum.
Legacy 1D Symbologies
Code 11

- Primarily used for labelling telecommunication equipment. Also known as USD-8.
- The barcode data can be encode numerical data, the dash and dot character.
- Supports variable length data content.
- For up to 10 data digits a single check digit is used, otherwise two check digits are used.
Code 25

- Also known as Standard 2 of 5, Industrial 2 of 5 or Discrete 2 of 5.
- Legacy numerical barcode format with a low data density.
- Supports variable length data content.
- By default no checksum is verified.
- An optional mod10 checksum can be enforced.
- Support has been added in the SDK version 4.13.
IATA 2 of 5

- Also known as Computer Identics 2 of 5.
- Used by International Air Transport Association (IATA) for managing air cargo.
- Supports variable length data content.
- By default no checksum is verified.
- An optional mod1010 checksum can be enforced.
- Support has been added in the SDK version 5.15.
Codabar

- This symbology is used by U.S. blood banks, photo labs, libraries, and on FedEx airbills.
- Encodes numbers and the characters –$:/.+
- First and last symbols (the guard patterns) are one of A, B, C, or D. They are returned as part of the data string.
- Supports variable length data content.
- Some standards that use Codabar will define a check digit, but there is no agreed-upon standard checksum algorithm.
- The width ratio between narrow and wide can be chosen between 1:2.25 and 1:3.
- Different checksum algorithms are in use, though they are not standardized. Supported optional checksums are a mod11 and mod16 checksum.
MSI Plessey

- MSI is used primarily for inventory control, marking storage containers and shelves in warehouse environments.
- Encodes any number of numerical characters.
- By default a mod10 checksum is verified. Alternative supported checksum options are mod11, mod1010 and mod1110.
2D Symbologies
QR Code

- Supports variable length data content.
- Data encoding modes support numeric, alphanumeric, binary data and kanji characters.
- Different sizes (called versions) and error correction levels can be defined.
- The Scandit SDK supports Model 1 codes. Mirrored, or color-inverted codes are not supported.
- It has been standardised under AIM ISS 97-001.
- The Scandit SDK supports Model 2 codes including color inversion, mirroring and GS1 data content.
- It has been standardised under ISO/IEC 18004.
Micro QR Code

- Miniature version of the standard QR code that supports variable length data content up to 35 characters
- Different error correction levels can be defined with a data recovery rate of up to 25%
- Optimized to transfer small amounts of data such as a phone number or a website URL
- The Scandit SDK supports Rectangular Micro QR Code extension, standardized in ISO/IEC 23941
- The Scandit SDK supports color inversion and mirroring
Data Matrix

- Supports variable length data content.
- Encodings and sizes defined in the Data Matrix ECC 200 standard are supported.
- Different error correction levels can be defined.
- It has been standardised under ISO/IEC 16022.
- The decoder supports the Data Matrix Rectangular Extension (DMRE) as defined in the AIM-D Symbology Specification Revision 1.01.
- Data Matrix code are often used for direct part marking (DPM). For scanning these types of codes, it is recommended to enable the direct_part_marking extension_mode.
- Includes support for GS1 encoded data (GS1 Data Matrix).
PDF417

- Used in a wide range of applications such as transport tickets and document processing.
- Supports variable length data content.
- The number of rows and columns are configurable.
- Different error correction levels can be defined.
- It has been standardised under ISO/IEC 15438.
- Truncated PDF417 (Compact PDF417) codes can be used to save space.
MicroPDF417

- More space efficient version of PDF417 without start and end patterns.
- Used in GS1 Composite Codes type A (CC-A) and B (CC-B).
- Supports variable length data content using one to four columns and up to 44 rows.
- All size versions have a fixed error correction level.
- It has been standardised under ISO/IEC 24728.
Aztec Code

- Used for tickets in the transport industries, e.g. railway companies.
- Data can be encoded in ASCII or extended ASCII.
- Supports variable length data content.
- Different error correction levels can be defined.
- It has been standardised under ISO/IEC 24778.
MaxiCode

- Fixed size 2d symbology originally created by UPS in 1992.
- Used for tracking and managing shipments of packages.
- It has been standardised under ISO/IEC 16023.
- Supports encoding of a Structured Carrier Message or data in extended ASCII.
- Uses Reed-Solomon error correction.
GS1 DotCode

- Public Domain optical data carrier designed to be printed reliably at very high speed.
- Flexible code shape: rectangular codes of virtually any size and width/height proportion can be used.
- Strong error correction by using message encoding inspired by Code 128 and strengthened by Reed-Solomon.
- Allows to apply real time data with GS1 application identifiers, such as expiration date, lot number and serial number to products at production line speeds.
- It has been standardised in the AIM specification AIMD013 Revision 3.0.
ArUco Codes

- Used mainly for camera pose estimation in augmented reality and robotics, developed at the University of Cordoba
- Consists of an n x n bit matrix (n can be any integer value, most commonly used are values ranging from 4 to 7) and a one element wide black border
- Does not store any data directly, the bit matrix uniquely identifies the marker in a dictionary (collection of markers of the same bit matrix size)
- Requires a dictionary, it can be computed or an available preset can be used (we provide a subset of the OpenCV presets)
Postal Code Symbologies
Royal Mail 4-State (RM4S)

- Postal code symbology used by Royal Mail and Singapore Post for encoding the destination address.
- Supports codes with the data encoding type 'Customer Code' (RM4SCC) only.
- Codes are printed in black or in fluorescent orange and are easily read by a machine at high speed.
- Uses a checksum digit for verifying data.
KIX (Klant Index)

- Uses the same symbol alphabet as RM4SCC.
- Does not use a checksum for data verification, nor does it have a start/end pattern.
- KIX codes can be read from left-to-right or right-to-left. Depending on the reading direction, the data is completely different. To determine which of the two orientations is correct, the Scandit BarcodeScanner SDK matches the data against a set of encoding rules and returns the data that matches the rule.
Posi LAPA 4-State Code
- Uses the same symbol alphabet as RM4SCC
- Uses Reed-Solomon error correction. It can correct up to 8 erasures or 4 errors.
- LAPA can be read from left-to-right or right-to-left. The direction can be determined by reading the leftmost or the rightmost bar.
- Thanks to its fixed length and error correction, it offers better robustness than RM4SCC.
UPU (Universal Postage Union) S18 4-State

- The UPU 4-State barcode is a variable-length and alphanumeric barcode.
- It is used to add identifier tags to UPU postal items.
- It has two possible encoding formats, 18C and 18D.
- It can be either 19 or 25 symbols in length.
- It uses a Reed-Solomon error detection and correction scheme.
- The Universal Postage Union manages the UPU S18 4-State specification (CEN/TS 15844-4:2010).
Australian Post 4-State

- This symbology is used by Australia Post for postal code and automatic mail sorting.
- The Australian Post 4-State barcode specifies three formats. Each format corresponds to a fixed length barcode of a unique number of bars.
- The Standard Customer Barcode has 37 bars, Customer Barcode 2 has 51 bars and Customer Barcode 3 has 67 bars.
- All barcodes contain a two-digit Format Control Code Field and an eight-digit Sorting Code Field, also know as Delivery Point ID (DPID).
- The Standard Customer Barcode has no Customer Information Field. Customer Barcode 2 and Customer Barcode 3 have respectively 16 and 31 bars for encoding customer information.
- Australian post specifies two encoding tables. Table N encode numeric data and table C encodes alphanumeric characters and special symbols.
- The Standard Barcode format only carries numeric values, while the Customer Information section of Barcode Formats 2 and 3 can carry alphanumeric information coded using Table N and Table C. Customers can also use their own scheme to encode data in the Customer Information field.
- The symbology uses a Reed-Solomon error detection and correction scheme, and can correct up to 2 errors or 4 erasures.
- Australian Post manages the Guide to Printing the 4-State Barcode specification (latest revision 16 Mar 2012).
French Post

- This symbology is used by La Poste (France).
- The French Post symbology consists of two codes: a Chronomark and a Routing code. The two codes are printed side by side.
- The Chronomark has 38 positions and the Routing code has 46 positions.
- La Poste manages the specifications.
Swiss Post
- This symbology is used by Swiss Post for mail piece identification.
- The Swiss Post 4-State barcodes have a fixed length of 93 bars.
- Swiss Post manages the specifications.