

128C (Code Set C) – 00–99 (encodes two digits with a single code point) and FNC1.128B (Code Set B) – ASCII characters 32 to 127 (0–9, A–Z, a–z), special characters, and FNC 1–4.128A (Code Set A) – ASCII characters 00 to 95 (0–9, A–Z and control codes), special characters, and FNC 1–4.The shifts are done using code points 98 and 99 in code sets A and B, 100 in code sets A and C and 101 in code sets B and C to switch between them):


Within each code set, some of the 103 data code points are reserved for shifting to one of the other two code sets. The initial subset is selected by using the appropriate start symbol. Code set C is used to efficiently encode digit strings. Together, code sets A and B cover all 128 ASCII characters. To represent all 128 ASCII values, it shifts among three code sets (A, B, C).

A scanner seeing the reverse stop symbol then knows it must skip the 2-module bar and read the rest of the barcode in reverse.ĭespite its name, Code 128 does not have 128 distinct symbols, so it cannot represent 128 code points directly. When the stop pattern is read right-to-left, the reverse stop symbol (followed by a 2-module bar) is recognized. When the stop pattern is read left-to-right (the usual case), the stop symbol (followed by a 2-module bar) is recognized. The stop pattern permits bidirectional scanning. The stop pattern is composed of two overlapped symbols and has four bars. Each bar and space is 1 to 4 modules wide, and the symbols are fixed width: the sum of the widths of the three black bars and three white bars is 11 modules. All widths are multiples of a basic "module". Each symbol consists of three black bars and three white spaces of varying widths. The check symbol is calculated from a weighted sum ( modulo 103) of all the symbols.Ĭode 128 includes 108 symbols: 103 data symbols, 3 start symbols, and 2 stop symbols.
