Skip to content

Code 39 generator

A simple barcode for letters, digits and a few symbols. Used in industry, defence, healthcare and internal systems.

Code settings

Capital letters, digits, space and - . $ / + %, up to 43 characters. Lower case is turned into capitals.

The narrowest bar of the code. Recommended 0.19 to 1.016 mm.

From 3 to 300 mm.

Blank margin around the code required by the standard. Keep it on.

Adds a check character at the end. Turn it on if the system that reads the code requires it.

Appearance

The human readable digits or characters, set in OCR-B.

Height of a digit, from 1 to 30 mm.

Hexadecimal, for example #000000.

Fills the quiet zone too.

Preview

Size with quiet zone: 64.68 × 17.43 mm. The on-screen preview is enlarged.

Download the code

PNG file: 784 × 211 px, 307.9 DPI. Each module gets whole pixels and the DPI is set so the printout has exactly the size in mm shown above.

What is Code 39

Code 39 holds 43 characters: capital letters, digits, space and a few symbols. It tolerates print defects and is easy to read, but wider than Code 128 for the same data.

The code needs no check character, but a mod 43 check character can be added if the reading system requires it.

Frequently asked questions

Can Code 39 hold lower-case letters?

Not in standard mode. The generator turns lower case into capitals. Full ASCII mode writes lower case as pairs of characters, but the scanner must support it.

When should I turn on the check character?

When the receiving specification or reading system requires it. The check character is part of the code, so the scanner usually passes it on with the data.

Code 39 or Code 128?

Code 128 is shorter and holds lower case, so it is usually the better choice for new uses. Choose Code 39 when a customer or older system requires it.

Which module width should I choose?

Typically 0.25 to 0.5 mm. Leave a quiet zone of at least 10 modules on each side.

Can I use an asterisk?

No. The asterisk is the start and stop character; the generator adds it and does not accept it in the data.