A family of barcodes including 2 of 5, IATA 2 of 5, Interleaved 2 of 5 (ITF), Matrix 2 of 5 and the China Postal code
2 of 5 is a discrete, self-checking numeric only symbology which is not very efficient and is rarely used.
2 of 5
A variation of the Standard 2 of 5 symbology commonly used in the airline industry
IATA 2 of 5
One of the most common symbologies outside the retail area is Interleaved 2 of 5, a high density, continuous, self-checking numeric symbology which codes digit pairs (ie. 00 is encoded as one set of bars, 01 as another, and so on). Because of this I-2 of 5 can only be used for even numbers of digits. If an odd number of digits is used in the dLSoft components, a leading 0 is added automatically to the front of the number.
Interleaved 2 of 5
Matrix 2/5 is an older discrete, non-self-checking numeric-only symbology, with an optional modulo 10 check digit. Not recommended for new applications.
Matrix 2 of 5
The China Postal Code is a variant on Matrix 2 of 5 but with modified start and stop characters.
ITF-14 ises the Interleaved 2 of 5 symbology to create a larger code intended for use on the outside of packing cases and scanning a a distance. In this form it most commonly uses the same code and EAN-13, but with a LEADING 0. If a check digit is calculated by dBarcode for this code then the EAN-13 check digit is produced.
(shown reduced in size)
The horizontal bars supporting the bars of the barcode are called Bearer Bars, and these are recommended rather than mandatory.
(shown reduced in size)
Similarly optional H printer gauge marks (and the accompanying extra light margin space) are optional, because these were also features of older printing technologies, designed to check for impression depth and ink spread.
A shortened version of this code is ITF-6
The ITF 6 code is not intended to have H gauges.
Note that these ITF codes use the same encoding scheme but are intended for different uses than Interleaved 2 of 5 (I-2of5)
Codabar is a discrete and self-checking symbology developed by Monarch Marking Inc in 1972. It is know as NW-7 in Japan, as it has Narrow and Wide bars and 7 elements per character. It is also known as USD-4 and 2 of 7 code.
The Codabar coding scheme is a self-checking system which has 16 characters in its character set; the digits 0 -9, and the characters $ : / . + -. It has a choice of four start & stop characters, although some versions allow a choice of eight!. By default dLSoft barcode products uses A and C for start and stop respectively. However, by prefixing the barcode with a caret (^) and two symbols, any of the allowed Codabar characters may be used for start and stop; ie.
causes A to be used as the start character and T to be used for the stop character.
The allowed Codabar start and stop characters are: A B C D E N T *
The start and stop characters are not displayed in text form.
Codabar does not define a check digit. However, Mod 10 or Mod 16 check digits are often used in Codabar symbols, so the dLSoft products will generate a Mod 10 or Mod 16 check digit if required.
Code 11 is an older discrete, non-self-checking numeric symbology that was used by a number of large organisations, but is rarely found on retail scanners.
Code 11 barcodes can contain only digits and the - symbol. It can be used with one or two Mod 11 check characters, with the - symbol used when the check character value is 10.
Code 128 is a modern very high density symbology which is continuous and self-checking. It has three coding schemes and permits the inclusion of special characters not present on the keyboard.
Scheme A encodes uppercase letters, digits, punctuation and the non-printable ASCII characters (values below 32)
Scheme B encodes upper and lower case letters, digits and punctuation
Scheme C codes only the digit pairs 00-99.
GS1-128 barcodes use the same coding schemes as Code 128, but are distinguished by having an FNC1 character as the first character. GS1-128 is different from Code 128 and the two should not be regarded as interchangeable.
Some dLSoft products provide the control codes for switching between Code 128 subtypes automatically, although this facility can be turned off. Users should note that if this option is used then the barcode produced may not appear identical to a sample obtained from another source - although it will scan to produce the same characters.
The majority of support calls result from users not using the correct 128 scheme (ie. A, B or C) or not being aware of which scheme a customer is expecting. Some customers expect only scheme C, while others start in scheme A and then switch to scheme C, etc. It is important to be aware that the three schemes exist and will commonly be encountered within the same barcode. For this reason it is essential to ascertain which type the customer wants and if and where the scheme should change along the barcode.
Code 39 (also known as 3 of 9) is by far the most common barcode symbology outside the retail area and is read by most scanners, although it is not as compact as Code 93 or Code 128. The normal Code 39 scheme encodes both numbers and upper case letters, and was the first alphanumeric symbology.
Standard Code 39
Code 39 is a discrete, self-checking symbology - so the gap between ciphers may be larger than a unit space. Some users mistake that inter-cipher gap for a space and become concerned because it is not the same size as in another barcode representing the same characters. There is no substitute for testing the barcode with a scanner!
Code 39 has an optional Mod 43 checkdigit.
Extended Code 39
The Extended Code 39 scheme also includes the lower case letters and much punctuation.
Extended Code 39
It should be noted that Extended Code 39 represents most of the additional characters by using two characters from the standard Code 39 character set. Consequently Extended Code 39 symbols are about twice as long as standard Code 39 symbols.
Code 39 is a discrete symbology - so the gap between ciphers may be larger than a unit space. Some users mistake that inter-cipher gap for a space and become concerned because it is not the same size as in another barcode representing the same characters. There is no substitute for testing the barcode with a scanner!
Also the start and stop characters are the same, and sometimes may be represented in the human readable form by an asterisk.
Code 93 is a variable length, continuous symbology using four
element widths with each character consisting of three bars and
three spaces. Code 93 was designed to complement Code 39 and is a
more compact code than the latter. Code 93 is not a self-checking
Code 93 symbols include two Mod 47 check characters.
Special codes are used to allow full ASCII characters to be incorporated, making the system more reliable than Code 39.
The standard Code 93 encodes numbers and upper-case letters, while the Extended Code 93 encodes the full ASCII character set.
Code B is a discrete numeric-only code, which is fairly efficient in use of space.
Code B does not define a standard check character and is rarely used in modern applications
The Interleaved 2 of 5 barcode forms the basis of the German Identcode and Leitcode symbols used by Deutschen Post. These are 12 and 14 digit barcodes respectively, including an unusual weighted Mod 10 check digit.
Checking the EXTRA1 checkbox in applications, or setting the flags parameter bit DL_FLAG_EXTRA1 (bit 4 of the flags variable) turns on the Deutschen Post check digit when auto-check digit is also on, enabling the I-2 of 5 barcode image to be used as Identcode and Leitcode symbols.
Note that spaces and periods are removed from the strings supplied for I-2 of 5 barcodes before the barcode image is created – so the correct layout for Identcode and Leitcode text may be used to create the symbols.
DUN is not really a barcode type. It’s a Distribution Unit Number. However, it is frequently constructed from 12/13 digit retail barcode numbers, and uses a special checkdigit.
DUN-14 in GS1-128 barcode form may be created by providing 13 digits (the Logisitcal Variant digit – normally 0 in the UK) followed by the first 12 of the retail digits (eg. from EAN-13 numbers but without EAN's check digit). The DUN check digit is then calculated and the barcode symbol produced using GS1-128 symbology. The symbols are then known as EAN-14 symbols.
EAN is the European name for a group of barcode standards which have their counterparts in the US UCC standards. Both are now more commonly known as GS1 barcodes. These standards define several different barcode types used for traded articles.
For more details see GS1 barcodes
EAN-13 is the main scheme used throughout Europe for retail article numbering and is identical to UCC-13 used in the USA. It is a numeric only coding scheme. The > symbol in the right margin is a light margin indicator. In the left margin the first code digit is used as the margin indicator. No other marking should appear in the light margins.
EAN-13 / UCC-13
EAN codes require 13 digits (12 if the check digit is calculated automatically. Numbers used for EAN article numbering are assigned by the country’s GS1 Member Organisation (GS1-UK in the UK).
EAN codes may contain 2 or 5 digit supplementaries:
The ISBN coding scheme is EAN13, with the first three digits being 978, and 9 digits the ISBN number of the book (without check digit). The final digit is the EAN calculated check digit.
The ISSN coding scheme is EAN13, with the first three digits being 977, 7 digits showing the ISSN number of the periodical (without check digit), and 2 spare digits (used in the UK to indicate price code changes). The final digit is the EAN calculated check digit.
Bookland barcodes are unique numbers that are printed on the covers of books. They contain the book's ISBN number and pricing information encoded using EAN 13 bar codes with a 5 digit supplementary code.
For a book with ISBN 1-234-5678-9 retailing at $19.95 in the US, the data to encode is generated by taking 978, followed by the ISBN number 12345678 (the last digit of the ISBN number is a check digit and is not included), followed by a currency digit (5 for US$) and a four digit price (51995), ie.
The JAN coding scheme is EAN13 with the first two digits being 49.
Note that there is not a one to one correspondence between bars and the code numbers.
EAN-8 is a smaller and shortened version of the EAN code.
EAN-8 requires 8 digits (7 if the check digit is calculated automatically by dLSoft products), and support 2 and 5 digit supplementaries.
The 8 digits may consist of a 1, 2 or 3 digit GS1 prefix; the remaining digits comprise an item reference and a check digit. Where the prefix consists of the digit 0 or 2 the remaining 6 digits are available for internal (ie. non-traded) use, plus the check digit. In this case the GS1-8 symbols are mainly used for encoding local information - such as the price of an item in a supermarket.
EAN-14/UCC-14 numbers may be represented by ITF or GS1-128 barcodes, and modern implementations are recommended to use GS1-128128 – so that is what the dLSoft barcode libraries use. EAN-14 barcodes may be constructed from the 12/13 digit retail UPC/EAN/UCC barcode numbers by left-filling the numbers with zeros, and use a special checkdigit.
EAN-14 in GS1-28 barcode format may be created by providing 13 digits; the Logistical Variant digit (normally 0 in the UK) followed by the first 12 of the retail digits (eg. from EAN-13 numbers but without EAN's check digit). Creation from UPC-A numbers requires two 0s followed by the first 11 digits of the UPC-A barcode number without the check digit. dLSoft barcode libraries calculate the EAN-14 check digit if Auto-checkdigit is enabled, and then produce the GS1-128 barcode complete with a (01) Application Identifier.
If an alternative AI is required from the dLSoft libraries, a standard GS1-128 barcode should be created by providing the require AI in the data.
GS1-128 barcodes (formerly EAN-128 or UCC-128) are modern very high density codes. The scheme is based on Code 128 but is distinguished from it by having its first character as an FNC1 character.
GS1-128 barcodes commonly include Application Identifiers (the characters enclosed in brackets) which identify the function of the characters following the brackets. Application Identifiers are defined by GS1, and some examples are shown below:
Users of GS1-128 should note that while there is a nominal size for these symbols (31.8 mm high and 11*n+2 mm long, where n is the number of characters including control codes), many applications of these codes use recommended sizes of between 50% and 84% of nominal.
Barcodes used by suppliers to the health industry may be those specified by the Health Industry Business Communications Council (HIBCC), or by other international organizations. A labeler that chooses to utilize the HIBC Labeler Identification Code (LIC) should follow the HIBC LIC data and symbology format.
The HIBC LIC barcodes have an initial + encoded in the data, and modern systems should surround the human readable text with asterix to indicate that the text is complete.
Barcodes may be encoded using either Code 128 or Code 39 symbologies, but in each case the barcode must contain a Mod 43 check character. dLSoft products that support HBIC symbols can generate the appropriate check character and can include the * (usually by selecting the Extra1 option in the barcode properties).
HIBC Code 128 barcode
HIBC Code 39 barcode
Details of the requirements for HIBC symbols may be found on the
HIBCC we site at
The IM™ Package Barcode consists of a data string encoded in a barcode that generally follows the GS1-128 specification. However, the US Postal Service has many unique operational requirements and deviates slightly from the GS1 specification where necessary.
IM Package Barcode
The barcode data consists of a number of fields.
Not every barcode type may use every field, and some fields will be
suppressed from the human-readable representation of the barcode.
Note that labels containing an IMPB barcode also have other requirements including the USPS Tracking number and horizontal lines. Some dLSoft C/C++ products that support graphic images can generate these items (our .Net products do not support these). The Height specified for the barcode image is the total height from the upper horizontal line to the lower – typically 45 mm or 1.8 inch.
If the data is provided in the form
Then the barcode is created with a gap above the bars to allow for tracking information to be included. However, if the data is provided with a trailing / and the Extra2 flag is set, then characters following the / may be used to provide the tracking information.
For example, the data
(92)12391234567812345678901/TRACKING CODE #
results in the barcode shown below
The ISBN-10 barcode coding scheme is EAN-13/UCC-13, with the first three digits being 978 OR 979, and 9 digits the ISBN number of the book (without the ISBN check digit). The final digit is the EAN/UCC calculated check digit. Since the introduction of the ISBN-13 system the first three digits have been assigned as part of the ISBN-13 number.
Note that the final digit of the older 10 digit ISBN numbers is an ISBN check digit and this is NOT included in the barcode image. The barcode image will contain the EAN check digit.
Since January 2007 the ISBN Agencies began assigning 13-digit identifiers to books and book-related products. These identifiers, "ISBN-13s", incorporate the older Bookland EAN into a new book identifier where the prefix can be either '978' (current value) or '979'.
dLSoft Barcode components automatically recognize ISBN-13 barcode data starting with 978 or 979 and generate the appropriate ISBN-13 barcode. dLSoft Barcode components will generate ISBN-13 barcodes using the ‘978’ prefix from data supplied as the older ISBN 10 data. See also ISBN barcodes
The International Standard Serial Number (ISSN) is an internationally accepted code which identifies the title of serial publications. It is an eight digit number consisting of seven digits plus a check digit which enables a computer to recognise when the number is incorrectly cited. The check digit may be an X, otherwise the ISSN is fully numeric.
For more details see ISSN barcodes
The ISSN coding scheme for barcodes is EAN13, with the first three digits being 977, 7 digits showing the ISSN number of the periodical (without the ISSN check digit), and 2 spare digits (used in the UK to indicate price code changes). The final digit is the EAN calculated check digit.
ISSN with a 2 digit add-on are supported by most dLSoft products. The supplementary characters may need to be separated from the ISSN numbers with a / character.
The International Standard Music Number (ISMN) is a unique machine-readable identification number for printed music publications from all over the world, whether the item is a part, a score, or an element in a multi-media kit. The ISMN numbering system is managed by the International ISMN Agency.
The ISMN changed from 10 to 13 digits on 1 January 2008. Since the end of 2008 all publications of notations should carry and be listed with the 13-digit number
\since 2008 the ISMN barcode has used the EAN-13 symbology, with the first
three digits being 979. The ISMN number should be supplied complete
with hyphenation, and this will appear above the barcode.
Unused older (10 digit) ISMNs may be converted to the new format by prefixing the 10 digit ISMN with 9790.
The Italian Postal 3/9 code is encoded using Code 39 symbology, except that the check digit is calculated from the first 8 digits using a weighted Mod 11 algorithm, and the normal Code 39 check character is not used.
Italian Postal 3/9
The code data consists of
two alphabetical characters
one check digit
two alphabetical characters.
The dLSoft library calculates the check digit when required, and inserts spaces between the components of the code. The data may be supplied without spaces.
The Italian Postal 2/5 code is encoded using Interleaved 2 of 5
symbology, except that a check digit is calculated using a Mod 10
Italian Postal 2/5
The code data consists of
one check digit
The dLSoft library calculates the check digit when required, and inserts a dash or a space between the components of the code. A dash is normally inserted, but a space may be inserted by checking the EXTRA1 checkbox in applications, or setting the flags parameter bit DL_FLAG_EXTRA1 (bit 4 of the flags variable). The data may be supplied without a space/dash.
MSI, also known as the Modified Plessey Code, is a relatively weak code which is inefficient in use of space.
MSI with single check digit
Normally this code has a single Modulo 10 check digit. However, there are two variations of a double check digit form in common use. One uses a Mod 11 check digit before the normal Mod 10 check digit, the other uses two Mod 10 check digits.
MSI with extra Mod 10 check digit
MSI with extra Mod 11 check digit
Some scanning equipment cannot read both forms. (in fact some scanning equipment cannot read either of the two checkdigit forms). Check your scanners documentation to ensure that you choose an appropriate combination.
An older code still popular in some industries, the Plessey code supports numbers and the characters X, B, C, D, E and F, plus an 8 bit CRC split into two check characters.
It is common practice in some industries using Plessey barcodes to separate the barcode characters from their checkdigits. With dLSoft products this can be done by setting the EXTRA2 flag in applications or setting the flags parameter bit DL_FLAG_EXTRA2 (bit 5 of the flags variable), or by manually including a space character at the end of the barcode data.
This barcode type has more exacting printing requirements than most other 1D barcodes as it includes bar widths ranging from 1 to 5 X units.
PZN (Pharma-Zentral-Nummer) is a variant of Code 39 including a Modulo 11 check digit, and is used for marking pharmaceutical and health care products in Germany.
The Serial Shipping Container Code is a unique identification of individual shipping containers. The standard includes a unique barcode symbology, GS1-128, using the GS1 Application Identifier Standard.
The SSCC uses an 18 digit number which consists of:
a) a single extension digit assigned by the
company that constructs the SSCC
b) the GS1 company prefix. (Those assigned by UCC are prefixed with 0).
c) a serial reference number that must remain unique for at least 12 months
d) a single Mod 10 check digit.
When an SSCC barcode is generated using dLSoft components the data is prefixed by the (00) Application Identifier. The Mod 10 check digit may be generated by selecting the Auto-check digit option. The Show check digit option is ignored, as the Mod 10 check digit must always be shown in the human readable form.
Unlike most other barcodes the SISAC barcode symbol does not have a one-to-one correspondence with the SICI code printed underneath it. The SISAC scheme uses a complex table-lookup method for converting the SICI code into the SISAC code - which is then reproduced using Code 128 barcode symbology.
dLSoft products which support SISAC codes SC generates the SISAC barcode from the SICI code, and it can only do this if the SICI code itself is correct.
The SICI code must contain at least the following items:
The ISSN number complete with a hyphen between digits 4 and 5,
A date item enclosed in brackets. If no date item is required the () symbols MUST STILL BE PRESENT.
A number item is optional. e.g. 14:1
Index or supplement numbers are optional, e.g. *1
The standard version number which is currently ;1- and all three characters MUST BE PRESENT
A SICI check digit may immediately follow the - of the version number. The check digit may be entered manually or may be calculated by dBarcode by enabling Auto Checksum.
Note: When copying SICI codes from publications it is not always easy to distinguish the : and ; characters. SICI codes ALWAYS end with (semicolon) ;1-n where n is a check digit.
(dLSoft products do not currently support SICI location codes.)
Telepen provides three coding schemes, each having its own pair of start and stop characters:
The switch from ASCII to Compressed numeric (or vice versa) is accomplished by the insertion of an ASCII DLE character, but this is permitted only once in any symbol.
The dLSoft barcode library provides standard Telepen (in which the above are followed), Telepen N (which uses the above scheme but forces the full ASCII start and stop bars), and Telepen A (which encodes all data as ASCII without compressed numeric). The Telepen ASCII mode provides the full ASCII character set. Codes below 32 (space) may be entered as <ALT>0XYZ, where XYZ is the 3 digit ASCII code +128. The ASCII ESC character required on some Telepen Numeric systems as the first character may be obtained by checking the EXTRA1 checkbox in applications, or setting the flags parameter bit DL_FLAG_EXTRA1 (bit 4 of the flags variable) or BarCode.Extra1 in the OCX. Normally a switch from Compressed numeric to ASCII is used to handled odd length digit strings, but by checking the EXTRA2 checkbox in applications, or setting the flags parameter bit DL_FLAG_EXTRA2 (bit 4 of the flags variable) or BarCode.Extra1 in the OCX, the library will prefix the digits with a 0 to make the total number of digits even.
UPC (Universal Product Code) barcodes are specified by the UCC - now GS1-US - and are being replaced over time by the newer EAN/UCC barcodes. UPC barcodes are still widely used in the USA as a retail code.
The actual UPC code is a 10 digit code. The 10 digit number is preceded by a "number system" digit, which is 0 for the retail version, and followed by a check digit. In many retail systems only the 10 digits of the UPC code need to be entered in the event of a mis-scan, so there have been times when the leading 0 has not been included in the human readable form. However, other values of the number system digit are used for specific purposes (eg. 6 or 7 are used for manufacturing identification numbering, 3 for drug products, etc.).
The UPC-A code is one variant of a number of 12 digit codes widely used in the USA. Retail codes are usually thought of as those with 10 digits (or 11 if the checkdigit is being entered explicitly), and in fact are 12 digit codes made up of a leading 0, followed by 10 product digits and 1 checkdigit.
This system allows alternative leading digits to be used for their intended purposes. Users of such alternative codes will know what those leading digits may be, or may obtain the information from the authorised code provider.
UPC-A codes support 2 and 5 digit supplementaries.
UPC-E codes are smaller barcodes supporting 6 digits and a check digit.
UPC codes support 2 and 5 digit supplementaries.