The Intelligent Mail Barcode (IM barcode) is a 65-bar barcode for use on mail in the United States. The term “Intelligent Mail” refers to services offered by the United States Postal Service for domestic mail delivery. The IM barcode is intended to provide greater information and functionality than its predecessors POSTNET and PLANET. An Intelligent Mail barcode has also been referred to as a One Code Solution and a 4-State Customer Barcode, abbreviated 4CB, 4-CB or USPS4CB. The complete specification can be found in USPS Document USPS-B-3200. It effectively incorporates the routing ZIP code and tracking information included in previously used postal barcode standards.
The barcode is applied by the sender; the Postal Service required use of the Intelligent Mail barcode to qualify for automation prices beginning January 28, 2013. Use of the barcode provides increased overall efficiency, including improved deliverability, and new services.
The Intelligent Mail barcode is a height-modulated barcode that encodes up to 31 decimal digits of mail-piece data into 65 vertical bars.
The code is made up of four distinct symbols, which is why it was once referred to as the 4-State Customer Barcode. Each bar contains the central "tracker" portion, and may contain an ascender, descender, neither, or both (a "full bar").
The 65 bars represent 130 bits (or 39.13 decimal digits), grouped as ten 13-bit characters. Each character has 2, 5, 8, or 11 of its 13 bits set to one. The Hamming distance between characters is at least 2. Consequently, single-bit errors in a character can be detected (adding or deleting one bit results in an invalid character). The characters are interleaved throughout the symbol.
The number of characters can be calculated from the binomial coefficient.
The total number of characters is two times 1365, or 2730. Log2(2730) is 11.41469. So the 65 bars (or 130 bits) encode a 114-bit message.
The encoding includes an eleven-bit cyclic redundancy check (CRC) to detect, but not correct, errors. Subtracting the 11 CRC bits from the 114-bit message leaves an information payload of 103 bits (the specification sets one of those bits to zero). Consequently, 27 of the 130 bits are devoted to error detection.