FREE TOOL
Code 39 barcode generator
Type capital letters, digits and the symbols - . $ / + % or space, and this generator draws a Code 39 barcode with the * start and stop characters added for you. Add a mod 43 check character if your scanner expects one, choose a 2:1 to 3:1 wide-to-narrow ratio, and download SVG, PNG or PDF at true size.
Updated October 12, 2026
What Code 39 can encode
Code 39 has 43 data characters: A to Z, 0 to 9, space, and - . $ / + %. The asterisk is reserved as the start and stop character and cannot be data (ISO/IEC 16388:2023, 4.3). Each character is nine elements, three of them wide, separated by a narrow gap. Lowercase letters are not part of the set, so the generator encodes them as capitals and tells you.
Dimensions
| Parameter | ISO/IEC 16388:2023 |
|---|---|
| Wide to narrow ratio | 2.0:1 to 3.0:1 |
| Gap between characters | At least X |
| Quiet zone | At least 10X each side |
| Bar height for hand scanning | 5.0 mm or 15% of the symbol width, whichever is greater |
| Width | (C + 2)(3N + 6)X + (C + 1)I + 2Q |
C is the number of characters, N the ratio, X the narrow element, I the gap and Q the quiet zone (section 4.4).
This generator defaults to 3:1, the top of the range, which keeps wide and narrow elements furthest apart; 2.5:1 or 2:1 save width. It uses a gap of one X, the minimum, which keeps the symbol short.
The mod 43 check character
Code 39 needs no check character, but some systems require one. Each character has a value (0 to 9 are 0 to 9, A to Z are 10 to 35, then - . space $ / + % are 36 to 42). Add the values, divide by 43, and the remainder names the check character. For CODE 39 the values add up to 113, and 113 mod 43 is 27, so the check character is R. Turn on check character verification in the scanner, or it will send the R as data.
Full ASCII mode
Full ASCII Code 39 writes lowercase and other characters as two-character pairs, such as +A for a. A scanner with Full ASCII turned on will therefore read data that contains +A, /B, $C or %D as a different character. The generator warns when your text contains one of these pairs. If you need lowercase, use Code 128 instead.
When to choose Code 39
A customer or a label standard asks for it. Code 39 was standardised early, as ANSI MH 10.8 M-1983 and MIL-STD-1189, so older specifications often name it.
An older system or fixed scanner reads only Code 39.
Otherwise use Code 128: it is narrower for the same text (about a quarter narrower in the examples on the Code 128 page) and always carries a check character.
Common questions
Do I type the asterisks?
No. The generator adds the * start and stop characters. Barcode fonts show them because the font cannot add them for you.
Is Code 39 the same as 3 of 9?
Yes. Code 39, Code 3 of 9 and USS Code 39 are names for the same symbology.
Related tools
WHERE MORSA FITS
Scanned it in. Is it all there?
A barcode tells receiving what arrived. Morsa matches it against the purchase order line, flags what is short or wrong, and chases the supplier for the rest, in email, Teams, WhatsApp or whatever you already run on.

