Codabar

Codabar is a linear barcode symbology developed in 1972 by Pitney Bowes Corp. It and its variants are also known as Codeabar, Ames Code, NW-7, Monarch, Code 2 of 7, Rationalized Codabar, ANSI/AIM BC3-1995 or USD-4. Although Codabar has not been registered for US federal trademark status, its hyphenated variant Code-a-bar is a registered trademark.

Codabar was designed to be accurately read even when printed on dot-matrix printers for multi-part forms such as FedEx airbills and blood bank forms, where variants are still in use. Although newer symbologies hold more information in a smaller space, Codabar has a large installed base in libraries. It is even possible to print Codabar codes using typewriter-like impact printers, which allows the creation of many codes with consecutive numbers without having to use computer equipment. After each printed code, the printer's stamp is mechanically turned to the next number, as for example in mechanical mile counters.

Check digit
Because Codabar is self-checking, most standards do not define a check digit.

Some standards that use Codabar will define a check digit, but the algorithm is not universal. For purely numerical data, such as the library barcode pictured above, the Luhn algorithm is popular.

When all 16 symbols are possible, a simple modulo-16 checksum is used. The values 10 through 19 are assigned to the symbols, respectively.

Encoding
Each character comprises 7 elements, 4 bars and 3 spaces, and is separated from adjacent characters by an additional narrow space. Each can be either narrow (binary value 0) or wide (binary value 1). The width ratio between narrow and wide can be chosen between 1:2.25 and 1:3. The minimum narrow width varies with the specification, with the smallest being 0.0065 inches (0.165 mm), allowing 11 digits per inch to be encoded.

The characters are divided into three groups, based on the number of wide elements:
 * 1) The basic 12 symbols (digits 0–9, dash, and $) are encoded using all possible combinations of one wide bar and one wide space.
 * 2) An additional 4 symbols (:/.+) are encoded using 3 wide bars and no wide spaces.
 * 3) 4 start and stop symbols (designated ABCD, or in some specifications, EN*T) are encoded using one wide bar and two wide spaces.

The original Pitney-Bowes specification actually varies the narrow:wide width ratio to make all characters the same width. That is, characters with 2 wide elements use a 3:1 ratio, while characters with 3 wide elements use a 2:1 ratio, so all characters are 10 narrow elements wide (plus the inter-character space makes 11). "Rationalized codabar" uses a fixed ratio and allows the character widths to vary.

Depending on the particular specification, for example the Association for Automatic Identification and Mobility's Uniform Symbol Specification, the body of a Codabar string may only encode the numerals 0 through 9. Some variants allow the symbols dollar, dash, plus sign, colon, slash, and dot.

The alphabet characters A, B, C, D (in some specifications, E, N, asterisk, and T) are used to mark the beginning and end of the barcode. They do not appear in the body of a Codabar string. The 16 possible combinations of start and stop symbol may be used to distinguish different applications. For example, the library barcode illustrated begins with A and ends with B. FedEx tracking number barcodes, on the other hand, begin with B and end with D.

Although there are 12 combinations of one wide bar (four choices) and two wide spaces (three choices), the start/stop codes are limited in two ways:
 * 1) The wide spaces are required to be adjacent (so only 011 and 110 are allowed; 101 is not), and
 * 2) The reversed forms of the valid codes are not valid, to identify the direction in which to read the code.