Code 128 Barcode Specifications and Character Set
Get Expert Help
Code 128 Specification and Character Set
Code 128, so called because it can encode all 128 ASCII characters, is the preferred symbology for many barcode applications. It also is considered the most easily read barcode with the highest message integrity.
Code 128 has three different character sets defined in the table below as Code Set A, Code Set B and Code Set C. Any of these codes may be selected by appropriate selection of start character. Special 'shift' characters in each Code Set enable an alternative Code Set to be substituted during the scanning process. If the data consists only of numeric data then Code Set C provides twice the packing density of Code Sets A and B. Each code set has one or more characters reserved for special functions.
The Code 128 Specification requires the inclusion of a check digit. The barcode symbol structure consists of:
- A quiet zone, or white space to the left of the bars
- Start character
- A variable number of data characters
- Check digit
- Stop character
- A quiet zone or white space to the right of the bars
Guidance on the use of START, CODE and SHIFT characters
The following guidance should be followed to minimize the symbol length. NOTE: The Bars & Stripes barcode software automatically choose the correct START, CODE, and SHIFT characters in accordance with the following guidelines.1. Starting from the left: (a) If the data begins with four or more digits use start character 'C'. (b) Otherwise, if a control character occurs in the data before any lower case character use start character 'A'. (c) Otherwise use start character 'B'.
2. If start character 'C' is used and an odd number of digits begin the data, insert code 'A' or code 'B' before the last digit, using guidelines 1(b) and 1(c) above to choose between code 'A' and Code 'B'.
3. If four or more digits occur together when in character sets 'A' or 'B': (a) If there is an even number of digits in the group insert code 'C' before the first digit. (b) If there is an odd number of digits in the group insert code 'C' immediately after the first digit.
4. When in character set 'B' and a control character appears in the data: (a) If following the control character there is a lower case character before another control character appears insert the shift character before the control character. (b) Otherwise insert code 'A' before the control character.
5. When in character set 'A' and a lower case character appears in the data: (a) If following the lower case character there is a control character before another lower case character, insert the shift character before the lower case character. (b) Otherwise insert code 'B' before the lower case character.
6. When in character set 'C' and a non-numeric character occurs in the data insert code 'A' or 'B' before the non-numeric character using guidelines 1(b) and 1(c) above to choose between code 'A' and code 'B'.
Check Digit Calculation
Step 1: Starting with the the 1st data character, number each characters position. Start codeB C o d e 1 2 8 <--start code + message characters 1 2 3 4 5 6 7 8 <--position values Step 2: From the table below, multiply each characters value, by its position number. Example: C = 35 (from table) and its position number is 1. The product is (35 * 1) = 35 Step 3: Sum the products from Step 2 and add to the start code value.
104 + (35 * 1) + (79 * 2) + (68 * 3) + (69 * 4) + (0 * 5) + (17 * 6) + (18 * 7) + (24 * 8) = 1197 Step 4: Divide the result by 103 and find the remainder. 1197 / 103 = 11 with remainder of 64. Step 5: From the table, find the character with this value (in this case the backtic character (`))
| CODE 128 CHARACTER SET | ||||
| VALUE | CODE SET A | CODE SET B | CODE SET C | BAR PATTERN B S B S B S |
| 0 | SP | SP | 00 | 2 1 2 2 2 2 |
| 1 | ! | ! | 01 | 2 2 2 1 2 2 |
| 2 | " | " | 02 | 2 2 2 2 2 1 |
| 3 | # | # | 03 | 1 2 1 2 2 3 |
| 4 | $ | $ | 04 | 1 2 1 3 2 2 |
| 5 | % | % | 05 | 1 3 1 2 2 2 |
| 6 | & | & | 06 | 1 2 2 2 1 3 |
| 7 | ' | ' | 07 | 1 2 2 3 1 2 |
| 8 | ( | ( | 08 | 1 3 2 2 1 2 |
| 9 | ) | ) | 09 | 2 2 1 2 1 3 |
| 10 | * | * | 10 | 2 2 1 3 1 2 |
| 11 | + | + | 11 | 2 3 1 2 1 2 |
| 12 | ' | ' | 12 | 1 1 2 2 3 2 |
| 13 | - | - | 13 | 1 2 2 1 3 2 |
| 14 | . | . | 14 | 1 2 2 2 3 1 |
| 15 | / | / | 15 | 1 1 3 2 2 2 |
| 16 | 0 | 0 | 16 | 1 2 3 1 2 2 |
| 17 | 1 | 1 | 17 | 1 2 3 2 2 1 |
| 18 | 2 | 2 | 18 | 2 2 3 2 1 1 |
| 19 | 3 | 3 | 19 | 2 2 1 1 3 2 |
| 20 | 4 | 4 | 20 | 2 2 1 2 3 1 |
| 21 | 5 | 5 | 21 | 2 1 3 2 1 2 |
| 22 | 6 | 6 | 22 | 2 2 3 1 1 2 |
| 23 | 7 | 7 | 23 | 3 1 2 1 3 1 |
| 24 | 8 | 8 | 24 | 3 1 1 2 2 2 |
| 25 | 9 | 9 | 25 | 3 2 1 1 2 2 |
| 26 | : | : | 26 | 3 2 1 2 2 1 |
| 27 | ; | ; | 27 | 3 1 2 2 1 2 |
| 28 | < | < | 28 | 3 2 2 1 1 2 |
| 29 | = | = | 29 | 3 2 2 2 1 1 |
| 30 | > | > | 30 | 2 1 2 1 2 3 |
| 31 | ? | ? | 31 | 2 1 2 3 2 1 |
| 32 | @ | @ | 32 | 2 3 2 1 2 1 |
| 33 | A | A | 33 | 1 1 1 3 2 3 |
| 34 | B | B | 34 | 1 3 1 1 2 3 |
| 35 | C | C | 35 | 1 3 1 3 2 1 |
| 36 | D | D | 36 | 1 1 2 3 1 3 |
| 37 | E | E | 37 | 1 3 2 1 1 3 |
| 38 | F | F | 38 | 1 3 2 3 1 1 |
| 39 | G | G | 39 | 2 1 1 3 1 3 |
| 40 | H | H | 40 | 2 3 1 1 1 3 |
| 41 | I | I | 41 | 2 3 1 3 1 1 |
| 42 | J | J | 42 | 1 1 2 1 3 3 |
| 43 | K | K | 43 | 1 1 2 3 3 1 |
| 44 | L | L | 44 | 1 3 2 1 3 1 |
| 45 | M | M | 45 | 1 1 3 1 2 3 |
| 46 | N | N | 46 | 1 1 3 3 2 1 |
| 47 | O | O | 47 | 1 3 3 1 2 1 |
| 48 | P | P | 48 | 3 1 3 1 2 1 |
| 49 | Q | Q | 49 | 2 1 1 3 3 1 |
| 50 | R | R | 50 | 2 3 1 1 3 1 |
| 51 | S | S | 51 | 2 1 3 1 1 3 |
| 52 | T | T | 52 | 2 1 3 3 1 1 |
| 53 | U | U | 53 | 2 1 3 1 3 1 |
| 54 | V | V | 54 | 3 1 1 1 2 3 |
| 55 | W | W | 55 | 3 1 1 3 2 1 |
| 56 | X | X | 56 | 3 3 1 1 2 1 |
| 57 | Y | Y | 57 | 3 1 2 1 1 3 |
| 58 | Z | Z | 58 | 3 1 2 3 1 1 |
| 59 | [ | [ | 59 | 3 3 2 1 1 1 |
| 60 | 60 | 3 1 4 1 1 1 | ||
| 61 | ] | ] | 61 | 2 2 1 4 1 1 |
| 62 | ^ | ^ | 62 | 4 3 1 1 1 1 |
| 63 | _ | _ | 63 | 1 1 1 2 2 4 |
| 64 | NUL | ' | 64 | 1 1 1 4 2 2 |
| 65 | SOH | a | 65 | 1 2 1 1 2 4 |
| 66 | STX | b | 66 | 1 2 1 4 2 1 |
| 67 | ETX | c | 67 | 1 4 1 1 2 2 |
| 68 | EOT | d | 68 | 1 4 1 2 2 1 |
| 69 | ENQ | e | 69 | 1 1 2 2 1 4 |
| 70 | ACK | f | 70 | 1 1 2 4 1 2 |
| 71 | BEL | g | 71 | 1 2 2 1 1 4 |
| 72 | BS | h | 72 | 1 2 2 4 1 1 |
| 73 | HT | i | 73 | 1 4 2 1 1 2 |
| 74 | LF | j | 74 | 1 4 2 2 1 1 |
| 75 | VT | k | 75 | 2 4 1 2 1 1 |
| 76 | FF | l | 76 | 2 2 1 1 1 4 |
| 77 | CR | m | 77 | 4 1 3 1 1 1 |
| 78 | SO | n | 78 | 2 4 1 1 1 2 |
| 79 | SI | o | 79 | 1 3 4 1 1 1 |
| 80 | DLE | p | 80 | 1 1 1 2 4 2 |
| 81 | DC1 | q | 81 | 1 2 1 1 4 2 |
| 82 | DC2 | r | 82 | 1 2 1 2 4 1 |
| 83 | DC3 | s | 83 | 1 1 4 2 1 2 |
| 84 | DC4 | t | 84 | 1 2 4 1 1 2 |
| 85 | NAK | u | 85 | 1 2 4 2 1 1 |
| 86 | SYN | v | 86 | 4 1 1 2 1 2 |
| 87 | ETB | w | 87 | 4 2 1 1 1 2 |
| 88 | CAN | x | 88 | 4 2 1 2 1 1 |
| 89 | EM | y | 89 | 2 1 2 1 4 1 |
| 90 | SUB | z | 90 | 2 1 4 1 2 1 |
| 91 | ESC | { | 91 | 4 1 2 1 2 1 |
| 92 | FS | | | 92 | 1 1 1 1 4 3 |
| 93 | GS | } | 93 | 1 1 1 3 4 1 |
| 94 | RS | ~ | 94 | 1 3 1 1 4 1 |
| 95 | US | DEL | 95 | 1 1 4 1 1 3 |
| 96 | FNC 3 | FNC 3 | 96 | 1 1 4 3 1 1 |
| 97 | FNC 2 | FNC 2 | 97 | 4 1 1 1 1 3 |
| 98 | SHIFT | SHIFT | 98 | 4 1 1 3 1 1 |
| 99 | CODE C | CODE C | 99 | 1 1 3 1 4 1 |
| 100 | CODE B | FNC 4 | CODE B | 1 1 4 1 3 1 |
| 101 | FNC 4 | CODE A | CODE A | 3 1 1 1 4 1 |
| 102 | FNC 1 | FNC 1 | FNC 1 | 4 1 1 1 3 1 |
| . | ||||
| 103 | START (CODE A) | 2 1 1 4 1 2 | ||
| 104 | START (CODE B) | 2 1 1 2 1 4 | ||
| 105 | START (CODE C) | 2 1 1 2 3 2 | ||
| . | B S B S B S B | |||
| . | STOP | 2 3 3 1 1 1 2 | ||
| Where B=Bar and S=Space; For definitions of FNC2 - FNC4; see USC-128 Specifications | ||||