Barcode generator / Code 39
Code 39 Barcode Generator
Create Code 39 (Code 3 of 9) barcodes free online. Encode uppercase letters and digits, download as PNG or SVG. No account and no watermark.
Uppercase A-Z, digits 0-9, and - . $ / + % and space.
Preview
No watermark, no signup, unlimited PNG downloads. Rendered in your browser — the value you type never leaves your device. Vector SVG and high-resolution PNG are included with Pro.
What is Code 39 used for?
Code 39, also written Code 3 of 9, is one of the oldest alphanumeric barcode symbologies still in daily use. It encodes uppercase letters, digits, and a small set of symbols, and every character is self-checking, which made it popular long before scanners got sophisticated.
It remains standard in defence and automotive supply chains, healthcare asset tracking, and older library and government systems. It produces wider symbols than Code 128 for the same data, so choose it when a downstream system explicitly requires Code 39 rather than by default.
- Automotive & defence supply chains
- Healthcare and lab asset labels
- Legacy inventory systems
Code 39 specification
| Character set | 0-9, A-Z uppercase, space and - . $ / + % |
|---|---|
| Length | Variable |
| Check digit | Optional modulo-43, rarely required |
| Start/stop | Asterisk delimiters, added automatically |
| Density | Low — roughly 30% wider than Code 128 for the same data |
| Quiet zone | 10 modules either side |
| Best for | Defence, automotive, healthcare and legacy scanners |
How to generate a Code 39 barcode
- 1
Enter your value in uppercase — Code 39 has no lowercase characters.
- 2
Replace unsupported punctuation with hyphens or periods, which are in the character set.
- 3
Set bar height and download SVG for print or PNG for documents.
- 4
If your receiving system expects the asterisks, confirm whether it strips them automatically.
- 5
Test-scan on the oldest scanner in your fleet, since Code 39 is usually chosen for exactly that hardware.
Troubleshooting scan failures
Lowercase letters are rejected
Convert your value to uppercase. Full ASCII Code 39 exists but is an extension many scanners do not decode by default.
Scanner reports asterisks around the value
Those are the start and stop characters. Turn on the scanner's option to strip start/stop, or trim them in your software.
Symbol is too wide
This is inherent to Code 39. If your hardware supports it, move to Code 128 and the same value fits in roughly two thirds the width.
Occasional misreads on long values
Enable the optional modulo-43 check digit in your receiving system, or shorten the payload.
Need hundreds of codes at once?
Upload a CSV and get every barcode or QR code back in one download — plus editable dynamic QR codes with scan analytics, and an API for programmatic generation.