Thermal printer
Barcode Knowledge

Understanding Code 128 barcode

Barcodes are the backbone of modern data capture systems. Among them, Code 128 stands out for its high data density, full ASCII support, and wide range of applications. Whether you're managing inventory, printing shipping labels, or tracking assets, Code 128 provides the flexibility and precision required for professional use.

Below is an image of Code 128 C:

Code 128 C

1. What is Code 128?

Code 128 is a high-density linear (1D) barcode symbology developed by Computer Identics in 1981. It is capable of encoding the entire ASCII character set (0–127), including numeric digits, uppercase and lowercase letters, punctuation marks, and control codes.

The name "128" comes from the fact that it supports 128 unique character values, making it more versatile than older standards like Code 39 or EAN-13.

2. Characteristics of Code 128

Feature Description
Character Set Full ASCII (0–127)
Code Sets A, B, and C for different character groupings
Density High — suitable for compact labels with long data strings
Start/Stop Symbols Yes — each barcode starts and ends with special symbols
Checksum Mandatory modulo-103 checksum
Length Variable — can encode short or long data strings
Switching Can shift or switch between code sets for optimal encoding efficiency

3. Code Sets

  • Code Set A: Uppercase letters, control characters, numbers
  • Code Set B: Upper/lowercase letters, numbers, symbols
  • Code Set C: Pairs of numeric digits (00–99), most compact

4. Application of Code 128

Due to its versatility, Code 128 is used across many industries:

Industry Application Example
Logistics Shipping labels (e.g., GS1-128)
Retail Internal product labels, shelf management
Manufacturing Serial numbers, batch IDs, quality control
Healthcare Sample tracking, patient identification
Libraries Book and media labeling
Printing Barcode printers for warehouse systems

Its compact size and large character set make it ideal for applications requiring dense, multi-character data encoding.

5. Structure of Code 128

A complete Code 128 barcode consists of the following parts:

[ Quiet Zone ] + [ Start Symbol ] + [ Encoded Data ] + [ Checksum ] + [ Stop Symbol ] + [ Quiet Zone ]

Components:

  • Quiet Zone: A blank margin before and after the barcode (min. 10x the narrowest bar width)
  • Start Symbol: One of three characters (Start A, Start B, Start C) indicates the initial code set
  • Encoded Data: The character data encoded using one or more code sets
  • Checksum: A modulo-103 calculation ensures data accuracy
  • Stop Symbol: A special end character that terminates the barcode
  • Final Quiet Zone

6. Encoding Rule of Code 128

Code 128 uses bar and space patterns made up of 11 modules per character. Each character corresponds to a numeric code value between 0 and 102.

Key Rules:

  • Encoding starts with a Start Code (value 103–105).
  • Encoded characters are selected from a lookup table based on the current code set.
  • Code sets can switch or shift mid-barcode for optimized encoding.
  • The checksum is calculated after encoding data but before the stop character.

Code Set Optimization:

  • For purely numeric strings, Code Set C is best, as it encodes two digits in one symbol.
  • For alphanumeric strings, Code Set B is typically used.
  • Special shift/switch characters allow transitioning between code sets.

7. How to Calculate Checksum of Code 128

Code 128 encoding table:

ID Code128A Code128B Code128C Bar & Space Structure Encoding Value
0 SP SP 0 212222 bbsbbssbbss
1 ! ! 1 222122 bbssbbsbbss
2 2 222221 bbssbbssbbs
3 # # 3 121223 bssbssbbsss
4 $ $ 4 121322 bssbsssbbss
5 % % 5 131222 bsssbssbbss
6 & & 6 122213 bssbbssbsss
7 7 122312 bssbbsssbss
8 ( ( 8 132212 bsssbbssbss
9 ) ) 9 221213 bbssbssbsss
10 * * 10 221312 bbssbsssbss
11 + + 11 231212 bbsssbssbss
12 , , 12 112232 bsbbssbbbss
13 - - 13 122132 bssbbsbbbss
14 . . 14 122231 bssbbssbbbs
15 / / 15 113222 bsbbbssbbss
16 0 0 16 123122 bssbbbsbbss
17 1 1 17 123221 bssbbbssbbs
18 2 2 18 223211 bbssbbbssbs
19 3 3 19 221132 bbssbsbbbss
20 4 4 20 221231 bbssbssbbbs
21 5 5 21 213212 bbsbbbssbss
22 6 6 22 223112 bbssbbbsbss
23 7 7 23 312131 bbbsbbsbbbs
24 8 8 24 311222 bbbsbssbbss
25 9 9 25 321122 bbbssbsbbss
26 : : 26 321221 bbbssbssbbs
27 ; ; 27 312212 bbbsbbssbss
28 < < 28 322112 bbbssbbsbss
29 = = 29 322211 bbbssbbssbs
30 > > 30 212123 bbsbbsbbsss
31 ? ? 31 212321 bbsbbsssbbs
32 @ @ 32 232121 bbsssbbsbbs
33 A A 33 111323 bsbsssbbsss
34 B B 34 131123 bsssbsbbsss
35 C C 35 131321 bsssbsssbbs
36 D D 36 112313 bsbbsssbsss
37 E E 37 132113 bsssbbsbsss
38 F F 38 132311 bsssbbsssbs
39 G G 39 211313 bbsbsssbsss
40 H H 40 231113 bbsssbsbsss
41 I I 41 231311 bbsssbsssbs
42 J J 42 112133 bsbbsbbbsss
43 K K 43 112331 bsbbsssbbbs
44 L L 44 132131 bsssbbsbbbs
45 M M 45 113123 bsbbbsbbsss
46 N N 46 113321 bsbbbsssbbs
47 O O 47 133121 bsssbbbsbbs
48 P P 48 313121 bbbsbbbsbbs
49 Q Q 49 211331 bbsbsssbbbs
50 R R 50 231131 bbsssbsbbbs
51 S S 51 213113 bbsbbbsbsss
52 T T 52 213311 bbsbbbsssbs
53 U U 53 213131 bbsbbbsbbbs
54 V V 54 311123 bbbsbsbbsss
55 W W 55 311321 bbbsbsssbbs
56 X X 56 331121 bbbsssbsbbs
57 Y Y 57 312113 bbbsbbsbsss
58 Z Z 58 312311 bbbsbbsssbs
59 [ [ 59 332111 bbbsssbbsbs
60 \ \ 60 314111 bbbsbbbbsbs
61 ] ] 61 221411 bbssbssssbs
62 ^ ^ 62 431111 bbbbsssbsbs
63 _ _ 63 111224 bsbssbbssss
64 NUL 64 111422 bsbssssbbss
65 SOH a 65 121124 bssbsbbssss
66 STX b 66 121421 bssbssssbbs
67 ETX c 67 141122 bssssbsbbss
68 EOT d 68 141221 bssssbssbbs
69 ENQ e 69 112214 bsbbssbssss
70 ACK f 70 112412 bsbbssssbss
71 BEL g 71 122114 bssbbsbssss
72 BS h 72 122411 bssbbssssbs
73 HT i 73 142112 bssssbbsbss
74 LF j 74 142211 bssssbbssbs
75 VT k 75 241211 bbssssbssbs
76 FF I 76 221114 bbssbsbssss
77 CR m 77 413111 bbbbsbbsbs
78 SO n 78 241112 bbssssbsbss
79 SI o 79 134111 bsssbbbbsbs
80 DLE p 80 111242 bsbssbbbbss
81 DC1 q 81 121142 bssbsbbbbss
82 DC2 r 82 121241 bssbssbbbbs
83 DC3 s 83 114212 bsbbbbssbss
84 DC4 t 84 124112 bssbbbbsbss
85 NAK u 85 124211 bssbbbbssbs
86 SYN v 86 411212 bbbbsbssbss
87 ETB w 87 421112 bbbbssbsbss
88 CAN x 88 421211 bbbbssbssbs
89 EM y 89 212141 bbsbbsbbbbs
90 SUB z 90 214121 bbsbbbbsbbs
91 ESC { 91 412121 bbbbsbbsbbs
92 FS | 92 111143 bsbsbbbbsss
93 GS } 93 111341 bsbsssbbbbs
94 RS ~ 94 131141 bsssbsbbbbs
95 US DEL 95 114113 bsbbbbsbsss
96 FNC3 FNC3 96 114311 bsbbbbsssbs
97 FNC2 FNC2 97 411113 bbbbbsbsbsss
98 SHIFT SHIFT 98 411311 bbbbsbsssbs
99 CODEC CODEC 99 113141 bsbbbsbbbbs
100 CODEB FNC4 CODEB 114131 bsbbbbsbbbs
101 FNC4 CODEA CODEA 311141 bbbsbsbbbbs
102 FNC1 FNC1 FNC1 411131 bbbbsbbsbbbs
103 StartA StartA StartA 211412 bbsbssssbss
104 StartB StartB StartB 211214 bbsbssbssss
105 StartC StartC StartC 211232 bbsbssbbbss
106 Stop Stop Stop 2331112 bbsssbbbsbsbb

Code 128 includes a mandatory checksum character to ensure the barcode is correctly scanned.

Checksum Calculation Steps:

(1) Assign a numeric value to the Start Code:

  • Start A = 103
  • Start B = 104
  • Start C = 105

(2) Add the weighted sum:

  • First data character is weighted by 1
  • Second by 2, third by 3, etc.

(3) Formula:

Checksum = (Start Value + Σ(Character Value × Position Index)) mod 103

(4) Find the checksum symbol that corresponds to this value in the Code 128 table.

Example: Encoding "ABC" using Code Set B

  • Start Code B = 104
  • A = 33, B = 34, C = 35

Checksum = 104 + (33×1) + (34×2) + (35×3) = 104 + 33 + 68 + 105 = 310 => 310 mod 103 = 1

The checksum character corresponds to value 1 in the Code 128 table.

Conclusion

Code 128 is a powerful and flexible 1D barcode symbology capable of encoding a wide range of data in a compact form. With its support for full ASCII, high-density encoding, and reliable checksum validation, it remains one of the most widely used barcodes in enterprise, logistics, and industrial applications.

Whether you are labeling products or tracking shipments, Code 128 offers the precision and flexibility modern systems demand.

Prev:

Next:

Related Posts

Contact

Contact Us

Tel: +

WhatsApp: +

Wechat: +

Email: ﮪqq.com

WhatsApp

WhatsApp QRCode

WhatsApp
Share
BacktoTop