Code 39Linear (1D)Introduced 1974

Code 39

The classic self-checking alphanumeric barcode: 43 characters, simple structure, still everywhere in industry.

Code 39 Specification

Character set43 characters: 0-9, A-Z, space, and - . $ / + % (full ASCII via Code 39 Extended)
Data lengthVariable; no fixed minimum or maximum
Check digitOptional Mod 43 check character (mandatory in LOGMARS and some industry standards)
Density≈5-9 characters per inch depending on wide:narrow ratio and X-dimension
Module width (X-dimension)0.19-0.50 mm typical; wide element = 2X-3X
Print ratioWide:narrow ratio 2:1 to 3:1 (2.5:1 recommended; 3:1 for dot-matrix impact printing)
MagnificationScales with X-dimension and ratio
Quiet zone10X on each side
StandardISO/IEC 16388; AIM USS-39; ANSI/AIM BC1
OriginDavid Allais and Ray Stevens, Intermec, 1974
Sample dataCODE 39

Try It: Generate a Code 39 Barcode

This live generator is preconfigured for Code 39. Adjust size, colors, and text — then download as PNG or SVG. Free, no signup, all encoding happens in your browser.

Open the full Code 39 generator →

What Is Code 39?

Code 39, standardized as ISO/IEC 16388, was introduced by Intermec in 1974 and became the first widely-adopted alphanumeric symbology. Each character is nine elements — five bars and four spaces — of which exactly three are wide, giving the symbology its mathematical name (3 of 9) and a self-checking property: the fixed wide-count makes most print defects fail the decode rather than misread. Characters are separated by a narrow inter-character gap, and every symbol is framed by an asterisk start/stop.

Its character set is 43 symbols: digits 0-9, uppercase A-Z, space, and - . $ / + %. Full ASCII is available via Code 39 Extended. Density is modest — roughly 60-70% of Code 128 for the same data — and the Mod 43 check character is optional. But simplicity won: defense logistics (LOGMARS), automotive (AIAG), electronics, and countless in-house systems standardized on it decades ago, so it remains one of the most-scanned 1D formats in the world.

Common Applications

  • Defense and government logistics (LOGMARS)
  • Automotive manufacturing (AIAG labels)
  • Electronics and industrial asset tags
  • In-house legacy inventory and badge systems

Code 39 FAQ

Why is Code 39 wider than Code 128 for the same data?

Code 39 uses fixed character patterns of 9 elements plus a separator gap, and cannot switch to a denser numeric mode. Code 128 packs 11 modules per character with no gaps and encodes digit pairs in code set C. For typical alphanumeric data expect Code 128 to be about 30-40% narrower — and for numeric-only data, about half.

Do I need the asterisks in my Code 39 data?

No. The asterisk is the start and stop character — added automatically by the encoder and invisible in the transmitted data. If your scanned system reports asterisks around data, someone typed them into the input; they should be removed (or the scanner configured to strip them).

What is the Mod 43 check character and when is it required?

An optional trailing character computed from the weighted sum of character values, expressed as the 43-character set itself (so a data ending ...XJ might carry check char K). US DoD LOGMARS and some automotive specifications mandate it; general commercial use often omits it since Code 39 is already self-checking.