Skip to content

Code 39 Barcode Generator (3 of 9)

Create a Code 39 barcode from capital letters, digits, space and the symbols - . $ / + %. The start and stop asterisks are added for you, and you can switch on the optional mod-43 check character. The preview updates live and you can download PNG, SVG or PDF, all generated in your browser.

Capital letters A–Z, digits 0–9, space and - . $ / + %. Lowercase is converted.

Valid

Customize
#000000
#ffffff

Generating…

Your data stays on your device.

How does it work?

  1. 1Type your value using A–Z, 0–9, space and - . $ / + %. Do not type asterisks: the start and stop characters are added automatically.
  2. 2Turn on the mod-43 check character if your specification or scanner setup requires it.
  3. 3Set bar width, bar height, colours and the human-readable text option; the indicator shows whether the value is valid.
  4. 4Download the barcode as PNG, SVG or a vector PDF.

What is Code 39 Barcode Generator?

Code 39, also called 3 of 9, is a variable-length alphanumeric barcode dating from 1975. Every character is made of nine elements, five bars and four spaces, and three of the nine are wide, which explains the name. The character set has 43 entries: digits 0–9, capital letters A–Z, space and the symbols - . $ / + %. A separate asterisk marks the start and end of every symbol and cannot be part of the data. Lowercase letters are not part of the standard set.

Code 39 needs no licence, no registration and no fixed length, which is why it is common in automotive labelling (AIAG), US defence logistics (LOGMARS), healthcare labelling (HIBC), ID badges and asset tags. Its weakness is density: characters are wide and separated by small gaps, so the same value needs more room than in Code 128, which packs digit pairs together and covers the whole ASCII range. Choose Code 39 when the receiving system or standard asks for it, and Code 128 when space matters.

When should you use it?

  • A customer, standard or legacy system specifies Code 39 for labels, for example on automotive or defence supply parts.
  • You need badge, library-card or asset-tag numbers that mix letters and digits.
  • You print on low-resolution printers, where wide and simple bars are more forgiving than a dense code.
  • You want to test that a scanner is set up for Code 39 and for its optional check character.

The optional mod-43 check character

Each character has a value: 0–9 are 0–9, A–Z are 10–35, then - is 36, . is 37, space is 38, $ is 39, / is 40, + is 41 and % is 42. Add up the values of the data, divide by 43, and the remainder is the value of the check character, printed just before the stop asterisk. Example: CODE39 gives 12 + 24 + 13 + 14 + 3 + 9 = 75; 75 mod 43 = 32, which is W, so the symbol encodes CODE39W. The check is optional, and the reader must be configured to expect it.

Privacy

This tool runs in your browser. What you type, paste or open is processed on your device by JavaScript and is not sent to our servers, stored or shared. Your data stays on your device.

Your text stays in the page: the barcode is drawn locally, and it contains exactly the characters you typed plus the start/stop asterisks.

Frequently Asked Questions

Can Code 39 encode lowercase letters?

Not in the standard 43-character set. Use capital letters, or switch to Code 128, which handles lowercase, punctuation and the full ASCII range.

Do I need the mod-43 check character?

No, it is optional. It helps catch misreads in harsh environments, but the scanner or software must be set to expect it, otherwise the extra character shows up as part of the data. Enable it only when the receiving side asks for it.

Why should I not type the asterisks?

The asterisk is the reserved start/stop character. The tool adds it at both ends itself, so typing your own would put extra characters into the data.

What bar width and quiet zone should I use?

A narrow bar of 0.25 mm or more is a comfortable choice for office printers, and the standard asks for a quiet zone of at least 10 times the narrow bar on each side. Increase bar width rather than stretching the height if a scanner struggles.