Code 39 Barcode Generator
Code 39 is a simple, self-checking barcode for uppercase letters, digits and a few symbols, still required in many industrial, government and older inventory systems. Enter your data, decide on the mod 43 check character and export a vector label.
Where Code 39 is used
Code 39, also called Code 3 of 9 and standardised as ISO/IEC 16388, was one of the first alphanumeric barcodes. It remains in use for automotive parts labels, defence logistics, ID badges, library and asset tags, and legacy systems that were set up for it. It needs no licence.
How Code 39 encodes data
- 43 characters: A–Z, 0–9, space and - . $ / + %.
- Each character has nine elements (five bars, four spaces) of which three are wide, which is where the name 3 of 9 comes from.
- Every symbol starts and ends with an asterisk (*), which is not part of the data.
- It is self-checking: a single printing defect cannot turn one valid character into another, so a check character is optional.
- The optional mod 43 check character adds extra safety; some industry specifications require it.
- Full ASCII mode encodes lowercase and other characters as two-character pairs, which makes symbols longer.
Size and printing tips
Code 39 is a low-density code: each character needs about 13 to 16 modules plus a gap, so long strings get wide. Keep the wide-to-narrow ratio between 2:1 and 3:1 (2.5 to 3 is more forgiving), leave a quiet zone of at least 10X, and use a bar height of at least 6 mm. Print dark bars on a light surface. Because it tolerates low-resolution printing, it works well on dot-matrix and older thermal printers.
How to make it
- Choose Code 39 in the barcode generator.
- Enter your data in uppercase; the app shows if a character is not allowed.
- Turn on the mod 43 check character if your system expects it.
- Set width, ratio and height with the print size guidance.
- Export SVG, PDF or PNG, or batch-print from a CSV file.
Frequently asked questions
Can Code 39 encode lowercase letters?
Only in Full ASCII mode, and the reader must be configured for it. Otherwise use Code 128.
Should I add the mod 43 check digit?
Add it only if your scanner or receiving system expects it; otherwise the extra character can appear in the scanned data.
Why do I see asterisks under my barcode?
They show the start and stop characters. Scanners do not return them as data.