Christina S. Barkan
Major Linear Symbologies
Code 128 Symbology Overview
Code 128 is a fairly high density linear bar code symbology capable of encoding
the full 128-character ASCII character set and extended character sets. It is a
variable length, continuous symbology with multiple element widths. One of its
unique features is its ability to change character sets to optimize symbol length.
This is done with unique "start" and "shift" characters specifying that the data
following is numeric, alphanumeric, or special characters. It has three separate
start characters that define the beginning character set encoded in the message.
A shift character is used to change from one character set to another.
set „C‟, the numeric code set, symbol length is optimized by representing two
numeric digits with one bar / space pattern. Printing algorithms analyze the data
string and select the appropriate start and shift characters to minimize symbol
Alphanumeric Code 128 is somewhat more compact than Code 39, but a
slight amount of scanning working range is lost because Code 128 is a modular
symbology. It is often selected over other linear symbologies in new applications
because of its density, it‟s built in check character, and its large character set.
The Code 128 character set includes the digits 0-9, the letters A-Z (upper and
lower cases), and all standard ASCII symbols and control codes. The codes are
divided into three subsets A, B, and C. As noted previously, there are three
separate start characters to indicate which subset will be used and each subset
includes control characters to switch to another subset in the middle of the bar
code. Subset A includes the standard ASCII symbols; digits, upper case letters,
and control codes. Subset B includes standard ASCII symbols; digits, upper and
lower case letters. Subset C compresses two numeric digits into each character,
i.e. 00, 01, 02 …99, making it 48% smaller than an equivalent Code 39 symbol.
Each character consists of 3 bars and 3 spaces, each of which may be 1, 2, or 3
elements wide (1 element = 1/11th of the character width). It is self-checking with
the bars always having an even number of elements and the spaces having an
odd number of elements. Each Code 128 bar code includes a Modulo 103