Code 128 FAQ Overview
Code 128 is a high density, alphanumeric barcode commonly used for, but not limited to, shipping labels, ID cards, USPS applications, and some medical applications. It is able to encode upper and lower case letter, numbers, numerous symbols, control characters, and special functions.
Code 128 offers a number of benefits for its users. First, it is able to encode all 128 ASCII characters as well as a number of special function characters. For 1-D barcodes, Code 128 is generally the most compact (able to encode the most data in the smallest physical space). The amount of data is variable allowing the user to encode as much or as little data as is needed. Finally, it maintains a high level of data integrity with parity bits to verify each character and a check character to verify the data package as a whole.
Overall Structure
A Code 128 barcode begins with a START character, followed by the DATA characters, followed by the CHECK character, and finally a STOP character. The whole barcode symbol must also include a quiet zone of white space both before the START character and after the STOP character.
Character Structure
Each individual character is comprised of 3 bars and 3 spaces where the length of the bars and spaces are varied to form 106 unique combinations or 106 unique VALUEs. This VALUE will identify a character in one of three different Code Sets (Set A, Set B, or Set C). Code Set A includes upper case letters, numbers, symbols, and control characters. Code Set B is very similar to Set A except that most of the ASCII control characters are replaced with lowercase letters. Code Set C is a set of digit pairs ranging from 00 to 99 and enable doubling the density of numeric-only data. All three Code Sets include a few special function characters. A complete listing of characters, Code Sets, and VALUEs can be found at the end of this document.
START Character
The START character identifies the beginning of the barcode and which Code Set is initially used. Its VALUE must be 103, 104, or 105; identifying Code Set A, B, or C respectively. Within the DATA, special characters enable changing the Code Set at any time and as often as necessary.
DATA Characters
Code 128 specifications allow encoding any number of data characters in the barcode. Although there is no limitation in the specification, there will be practical limitations due to physical size of the barcode and scanning equipment. See the data table at the end of this document for Code Set information.
Beyond DATA characters that hold information, there are also special function characters that may be encoded within the DATA for various purposes. Within each Code Set there are characters for switching to the other two Code Sets. The A and B Code Sets also have a SHIFT character which will switch only the next character from Set A to Set B or vice versa. These may be used as frequently as necessary and may enable further compression of the barcode. There are also characters referred to as FNC1, FNC2, FNC3, and FNC4, which serve as instructions specifically for the barcode reader. Generally, FNC1 is reserved for use in EAN applications. FNC2 instructs the barcode reader to concatenate the current message with the next message. FNC3 is a reset instruction to the barcode reader. And FNC4 remains available for use in closed-system applications.
CHECK Character
The check character is used to verify the integrity of the data as a whole and must be calculated as part of both the barcode printing and reading process. In general, it is a Modulus 103 Checksum calculated by summing the START code and the product of each data character with its position within the data.
In the example below we will encode “Code128” using Code Set B. Each DATA character’s value will be multiplied times its position within the data set for example “e” has a character VALUE of 69 and is the 4th character resulting in a product of 69 x 4 = 276. All of the products are added together and added to the VALUE of the START B character, 104, resulting in a total sum of 1138. 1138 is then divided by 103 with a remainder of 5. The “%” sign has a value of 5 and is, therefore, the CHECK character. The final code reads: [START B]Code128[%][STOP]
Message: [StartB] C o d e 1 2 8
Values: 104 35 79 68 69 17 18 24
Position: 1 2 3 4 5 6 7
Sum/Product: 104 + 35 + 158 + 204 + 276 + 85 + 108 + 168
Sum Total: 1138
Modulus: 1138 / 103 = 11 remainder 5; 5 = %
Final Code: [START B]Code128%[STOP]
STOP Character
The STOP character ends the barcode and has a value of 106 for all three Code Sets. The STOP character uniquely does not follow the 3 bars and 3 spaces convention but has 4 bars and 3 spaces.
Quiet Zones
The Quiet Zones are blank spaces before and after the barcode. They help the barcode reader to distinguish the barcode from other markings. Each Quiet Zone must be at least 10 x-dimensions or 0.25 inches which ever is greater.
Dimensions
The most basic unit of measure within a barcode is the x-dimension and is equivalent to the width of the most narrow bar or space within the barcode. Each character is 11 x-dimensions wide (except for the STOP character which is 13 wide). The minimum size of the x-dimension is 7.5 mils or 0.0075 inches. The overall length of a barcode varies because the number of DATA characters may vary; however, it follows this formula:
L = (11 * C + 35) * X where: L = Overall length (not including Quiet Space) C = Number of DATA characters (not including START, CHECK, or STOP) X = length of x-dimension Example: Code128 -> C = 7, X = 0.010" L = (11 * 7 + 35) * 0.010” = 1.120” without Quiet Zones or 1.120” + 2 * Max(10 * 0.010”, 0.25”) = 1.370” with Quiet Zones Example: Code128Barcode -> C = 14, X = 0.010" L = (11 * 14 + 35) * 0.010” = 1.890” without Quiet Zones or 1.890” + 2 * Max(10 * 0.010”, 0.25”) = 2.140” with Quiet Zones
The height of the barcode must be 15% of the length or 0.25” whichever is greater.
H = L * 0.15 or 0.25” whichever is greater where: H = Overall height L = Overall length (not including Quiet Space) Example: Code128 -> L =1.370 H = 1.370" * 0.15 = 0.2055" -> Min Height = 0.25" Example: Code128Barcode -> L =1.890 H = 1.890" * 0.15 = 0.2835" -> Min Height = 0.2835"
Other Sources of Information
A free demonstration utility of the Code 128 barcode may be found on the PrecisionID.com web site at https://www.precisionid.com/downloads/PID-C128-DEMO.zip . You may download the PrecisionID Code 128 Font Manual. You will also find other barcode and symbology related articles and products at https://www.precisionid.com. PrecisionID.com offers Barcode, MICR, and OCR Font products and other ID components.
AIM, Inc.
http://www.aimglobal.org
Automatic Identification Manufacturers Association
ANSI
http://www.ansi.org
ISBT 128
http://www.isbt128.org