1D linear symbology

Code 39 Barcode

Code 39 is a durable, widely recognized industrial barcode that remains common in manufacturing, asset identification, government and legacy applications.

Scannable Code 39 barcode example encoding BARCODE123
Scannable Code 39 example generated locally for BarcodeEducation.com.Encoded example: BARCODE123

What is Code 39?

Code 39 is a variable-length linear barcode. Its original character set encodes uppercase letters, digits and a limited group of symbols. The name reflects the original design in which each character was built from nine elements, three of them wide.

Unlike UPC-A, Code 39 is not tied to a fixed retail product-number structure. Organizations frequently use it to encode internal part numbers, asset identifiers, document numbers and other values they control.

Barcode family1D / linear
Typical dataUppercase letters, numbers and selected symbols
Common environmentsManufacturing, assets, government, legacy systems
Character framingStart/stop character represented by an asterisk in human-readable form

What can Code 39 encode?

The basic Code 39 set supports A–Z, 0–9, space, and the symbols -. $/+%. Extended Code 39 schemes can represent additional ASCII characters by combining characters, but compatibility depends on the scanner and software configuration.

Practical example: An identifier such as PART-1047 is a natural Code 39 value. Lowercase text is not part of the basic Code 39 character set.

Where is Code 39 used?

Code 39 has a long history in industrial identification. You may encounter it on work-in-process labels, tools and assets, warehouse labels, identification cards, military or government-related labeling, and older applications that were implemented before denser symbologies became common.

Advantages

  • Simple and established: Code 39 is supported by a very broad range of industrial scanners and labeling systems.
  • Self-checking character patterns: The symbol design provides inherent character-level checking, although an optional Mod 43 check character may also be used in applications that require it.
  • Human-friendly data: Part numbers and short identifiers are easy to display below the bars.

Limitations

  • Lower density: Code 39 usually requires more horizontal space than Code 128 for the same amount of data.
  • Basic set is uppercase-oriented: Native lowercase characters are not part of standard Code 39.
  • Long data produces wide symbols: A 2D code may be more appropriate when label area is limited.

Code 39 vs. Code 128

CharacteristicCode 39Code 128
Data densityModerate to lowHigher
Basic lowercase supportNoYes, through Code Set B
Long numeric stringsWideCode Set C can be very compact
Legacy industrial useVery commonVery common in newer systems

If no external standard dictates the symbology and space matters, Code 128 is often the more efficient general-purpose choice. Code 39 remains appropriate when compatibility with an established Code 39 system is important.

Printing and scanning considerations

Leave adequate quiet zones, choose an X-dimension that matches the scanner distance and printer resolution, and avoid excessive thermal heat that can make bars grow into adjacent spaces. For demanding applications, verify print quality rather than relying on a single successful scan.

Frequently asked questions

Does Code 39 require a check digit?

Not universally. Some applications use the optional Mod 43 check character, so the receiving system's requirements should determine whether it is included.

Can Code 39 encode lowercase letters?

Not in the basic character set. Extended Code 39 can represent additional ASCII characters through paired encodings, but both ends of the system must support that interpretation.

Should I replace Code 39 with Code 128?

Not automatically. Existing scanners, software, customer requirements and labeling standards matter. For a new internal system, however, Code 128 often provides more flexibility and density.

Related learning