Code 128 – Techy Tip

Code 128 is one of the most popular, highest-density linear barcodes, widely used in applications where a relatively large amount of data must be encoded in a relatively small amount of space. For the most part, it tends to replace Code 39 and Interleaved 2 of 5 as a more compact and flexible code for warehouse and distribution applications thanks to its continuous, self-checking bidirectional features. You will also find it commonly used in the health industry, blood banking and electronics manufacture.

Diagram of the elements of a Code 128 barcode

The name Code 128 stems from the fact that it encodes not only text, numbers and numerous functions but also the entire ASCII 128 character set. Another relatively unknown bit of trivia (or coincidence) is that was created back in the early 1980’s by Ted Williams from Computer Identics (not of baseball fame) to meet the needs of the then-thriving printed circuit board industry.

A strong survivor amongst a multitude of early generation barcodes, it is classified as a variable length barcode. Every Code 128 barcode contains a start character, a string of data, a Modula or Mod 103 check digit and a stop character. The entire code offers a total of 107 different printed “patterns” (103 data symbols, 3 start codes and 1 stop code.)

Each barcode can, in turn, have one of three different meanings based on the specific Character Set used (A, B, or C) and initiated by one of the 3 start codes. Due to the complexity of the character sets, it even has the feature to automatically switch between character sets to best fit the label.

  • 128A – Contains ASCII characters 00-95 (0-9, A-Z plus control codes) and special characters
  • 128B – Contains ASCII characters 32-127 (0-9, A-Z, a-z) and special characters
  • 128C – Contains 00-99 (double density of numeric data only and FNC1.
  • 128 Auto – Encodes your data with the shortest number of bars automatically and should be used whenever possible

To recognize Code 128, each character in a Code 128 symbol begins with a bar and ends with a space (except for the stop character which adds an extra bar). Each is made up of three bars and three spaces. The bars and spaces have 4 different widths (1, 2, 3 or 4 units) with the sum of the bar widths being even and the sum of the spaces being odd for a total of 11 units per character.

Over time, Code 128 has been adapted with specific industry standards to handle complex product identification:

  • GS1-128 (formerly UCC128 or EAN128) – established by the same organization that controls UPC barcodes and which handles the SSCC-18 and SSCC-14 used for shipping containers
  • AIAG – the Automotive Industry Action Group
  • ISBT-128 – for blood products
  • SSCC-18 – for shipping containers
  • USPS – uses a basic Code 128 for delivery confirmations
  • USPS – uses Code USPS-L-3216, a 24 digit label for tubs and sacks