Code 39 Generator — Free Code 39 Barcodes
PNG downloads at 1x–4x resolution.
Preview
PNG for documents & web, SVG for print & designers — always free, no watermark, no signup.
Enter uppercase letters, digits or the symbols - . $ / + % and space above — the Code 39 barcode renders instantly, validated against the symbology's 43-character alphabet.
Download PNG up to 4x or SVG vector. Free, no signup, no watermark.
What is Code 39?
Code 39 (also “Code 3 of 9”) is the original alphanumeric barcode — developed in 1974, and for decades the default for industry and government. Its name describes the construction: each character is nine elements (five bars, four spaces), three of them wide. That simplicity makes it trivially printable and readable by every scanner ever made, at the cost of density: Code 39 needs roughly twice the width of Code 128 for the same data.
The alphabet is 43 characters: A–Z, 0–9, seven symbols (- . space $ / + %) and the asterisk, which is reserved as the start/stop character — don't include it in your data; the encoder adds it automatically.
Where Code 39 is still used
Starting something new with no legacy constraint? Use Code 128 instead — same idea, half the width, full ASCII. Code 39 earns its place when compatibility with an installed base is the requirement.
- Defense & government — LOGMARS military shipping labels mandate Code 39 with a mod-43 check character
- Automotive — AIAG B-3/B-5 parts labels historically specified Code 39
- Healthcare — HIBC supplier labels and blood-bank labels (alongside Codabar)
- Industrial asset tags and badges in long-lived installations
- Anywhere a 30-year-old scanner or specification must keep working
Code 39 specifications
| Property | Specification |
|---|---|
| Standard | ISO/IEC 16388 |
| Character set | A–Z, 0–9, - . space $ / + % (43 chars) |
| Checksum | None by default; optional mod-43 (LOGMARS requires it) |
| Start/stop | Asterisk (*) — added automatically by the encoder |
| Density | ~9.4 characters per inch at minimum X-dimension (low) |
| Quiet zone | 10 module widths each side |
| Extended variant | Full ASCII via two-character shift sequences (not recommended for new systems) |
The optional mod-43 check character
Base Code 39 has no built-in checksum — any decodable pattern scans, including a misread one. Standards that care (LOGMARS, some automotive specs) append a mod-43 check character: sum the character values, take mod 43, append that character before the stop character. If your specification requires it, compute and append the check character to your data before generating — the symbology itself stays silent either way.
Printing tips
- Mind the width: long Code 39 strings make very wide labels — keep data short or switch to Code 128
- Lowercase input is fine here; the encoder uppercases automatically (classic Code 39 has no lowercase)
- Print at 300 DPI+, preserve quiet zones, test with the oldest scanner in your fleet
- Use the human-readable text option — Code 39 labels are conventionally read by humans as fallback
Frequently asked questions
Is this Code 39 generator free?
Yes — unlimited Code 39 barcodes, PNG up to 4x and SVG downloads, no signup, no watermark. Code 39 is an open standard with no licensing of any kind.
Why does my Code 39 barcode start and end with an asterisk?
The asterisk is Code 39's mandatory start/stop character — it's how the scanner knows where the data begins and which direction it's reading. The encoder adds both automatically; never type * yourself.
Code 39 vs Code 128 — which should I choose?
Code 128 for anything new: twice the density, full ASCII including lowercase, built-in checksum. Code 39 when a legacy system, military spec (LOGMARS) or installed scanner fleet requires it.
Does Code 39 need a check digit?
Not by default — the base symbology has none. LOGMARS and some automotive standards add a mod-43 check character to the data. If your spec mentions one, append it before generating; otherwise skip it.
Can Code 39 encode lowercase letters?
Classic Code 39 can't — the alphabet is uppercase-only (this generator uppercases for you). Extended Code 39 encodes full ASCII via two-character pairs, but halves density again and confuses some old scanners. Prefer Code 128 if you need lowercase.
How much data fits in a Code 39 barcode?
The standard allows up to 43 data characters, but at ~9 characters per inch the label gets impractically wide long before that. Keep it under ~20 characters for real-world labels.
Related barcode generators
- Free barcode generator (all symbologies) →
- Code 128 generator →High-density alphanumeric, logistics & shipping
- Codabar generator →Libraries, blood banks, FedEx airbills
- UPC-A generator →Retail products in the US & Canada
- QR Code generator →URLs, Wi-Fi, marketing & mobile