How to use it
- Type your data using capital letters A–Z, digits 0–9, spaces and - . $ / + %.
- Turn on the mod 43 check character only if your system expects one.
- Download and scan a test print with the scanner your system uses.
How Code 39 works
Each character is made of nine elements (five bars and four spaces), three of which are wide, hence “3 of 9”. Every barcode starts and ends with an asterisk, which scanners use to find the code and don't include in the result.
Because every character follows the same rule, Code 39 is self-checking: a misprinted character usually fails to decode rather than being misread. That robustness, and its simplicity to print, is why it's still used decades after it was introduced.
Where you'll still meet Code 39
- Military and government logistics: the US Department of Defense's LOGMARS labelling uses it.
- Automotive and industrial part marking.
- ID badges, healthcare wristbands and older inventory systems that were set up around it.
Limits worth knowing
- No lowercase letters. The “Full ASCII” extension exists, but scanners have to be configured for it, so ScanHatch doesn't generate it. Use Code 128 for lowercase.
- It's wide: each character takes much more space than in Code 128, so keep data short.
- The optional mod 43 check character is added to the end of the data. If your scanner isn't set to verify it, it will appear as an extra character.
Frequently asked questions
Is Code 39 the same as Code 3 of 9?
Yes. They're two names for the same barcode.
Should I add the check character?
Only if your system requires it. Most Code 39 installations don't, and an unexpected check character shows up as an extra character in the scan.
Why can't I use lowercase letters?
Standard Code 39 has no lowercase characters. Use Code 128 if you need them.
Related formats
Further reading
Need another format? The full Barcode Generator supports 15 barcode and 2D code types.