Code 39 Barcode Generator
This page opens on Code 39, also called Code 3 of 9, the barcode used on VIN labels, ID badges, parts and older warehouse systems. Type capital letters, digits, spaces, hyphens, full stops and $ / + % and the bars are drawn as you type, with the * start and stop characters added for you. Download a PNG at double resolution or copy the SVG for print.
Capital letters, digits, spaces, hyphens, full stops and $ / + %: VIN labels, ID badges, older systems. Every character is drawn on its own, so Code 39 is wider than Code 128 for the same text. No check character is added.
Common questions
- Why can I not type lowercase letters?
- Standard Code 39 has no lowercase. A lowercase letter is refused with a message rather than quietly changed to a capital, so the barcode never holds something other than what you typed. Type capitals, or switch to Code 128 above, which encodes mixed case.
- Do I need to type the asterisks?
- No. The * at each end is Code 39's start and stop character, and it is added for you. A scanner does not include it in what it reads, so it cannot appear inside the value either.
- Why does my scanner read $, /, + or % wrongly?
- Some scanners run in full ASCII mode, where $, /, + or % followed by a capital letter stands for one other character: +B is read as a lowercase b, for example. The bars made here are standard Code 39, so such a scanner changes those pairs. Avoid them in the value, or set the scanner to standard Code 39.
- Is a check character added?
- No. Code 39 does not require a check character, and this page does not add the optional mod 43 one. If your scanner or system is set to expect it, the barcode will not read there.
- Can I make a VIN barcode?
- Yes. A 17-character vehicle identification number uses only capitals and digits, so it encodes directly in Code 39, the symbology many VIN labels use. Type it in capitals and download the PNG or SVG.
- Why is my Code 39 barcode so wide?
- Each character is drawn on its own with 3 wide and 6 narrow elements, plus a gap, so Code 39 takes more room than Code 128 for the same text. For a long value, use Code 128 if your scanner reads it.
Exact. Check digits and bar patterns follow each symbology's specification, and every encoder is tested by reading its bars back with an independent decoder. Print at a size your scanner can resolve. Encoding correctly does not guarantee a scan off a phone screen.