Free generator
Free Code 39 barcode generator
Code 39 is an older alphanumeric barcode that many inventory, asset and industry systems still ask for. Type capitals, digits and a few symbols; the generator adds the start and stop characters and sizes the symbol in millimeters.
- Free to use
- No sign-up
- No watermark
- Personal and commercial use
- Runs in your browser
A–Z, 0–9, space and - . $ / + %. Lowercase is converted to uppercase. Use when an older system requires it. When to use Code 39
Ready.
The preview also updates as you type.
Preview · printed sizeScale in mm
Black on white only: colored bars and backgrounds are a common cause of scan failures. Everything is drawn in your browser; nothing you type is sent anywhere.
The width of the narrowest bar. GS1 sets no size for internal codes; pick one your scanners read comfortably. Size and print settings explained
SVG downloads at the printed size above, for design and label software. PNG for a 300 dpi printer (12 dots/mm): 4 printer dots per module, so X is 0.333 mm and the bars 12.83 mm tall; print it at 100% scale. Free for personal and commercial use, with no watermark. Test a printed sample with the scanner that will read it.
- Free to use
- No sign-up
- No watermark
- Personal and commercial use
- Runs in your browser
Code 39 at a glance
| Characters | 43: digits 0–9, capitals A–Z, space and - . $ / + % |
|---|---|
| Start and stop | An asterisk (*) at each end, added by the generator; it is not part of the data |
| Check character | Optional modulo 43; required only where an application says so |
| Elements (as drawn here) | Each character is 5 bars and 4 spaces, 3 of them wide, then a 1-module gap |
| Wide bars | The generator draws wide elements three times the narrow width: 16 modules per character |
| Length | Variable; the generator keeps it to 43 characters |
| Full ASCII | A variant that writes other characters as pairs such as +A for “a”; scanners must be set for it |
| Specification | ISO/IEC 16388:2023 (edition 3) |
The ISO standard itself is sold by ISO, so the details here come from documents that use Code 39. HIBCC’s health industry labeling standard lists the 43 characters with their values for the modulo 43 check character, and Zebra’s DS2208 scanner guide shows typical scanner defaults: Code 39 enabled, lengths of 1 to 55 characters, and both check digit verification and Full ASCII turned off.
A printed example
ASSET-0042: 12 characters with the start and stop asterisks, 192 modules of bars. At X 0.330 mm and 10-module quiet zones it is 70.0 mm wide, against 50.8 mm for the same value in Code 128.What each setting does for Code 39
- Data. Lowercase letters are turned into capitals, because standard Code 39 has none. Anything outside the 43 characters is refused with a message. The generator does not add a check character; if your system needs one, add it to the value (see below).
- X-dimension and height. Start at 0.330 mm and 12.7 mm. Code 39 is wide for its content, so check the readout against your label.
- Quiet zone. 10 modules each side by default.
- Text. Printed under the bars. Some systems print the asterisks too; that is a matter of style.
The modulo 43 check character
HIBCC’s example: give each character its value (0–9 are 0–9, A–Z are 10–35, then - 36, . 37, space 38, $ 39, / 40, + 41, % 42), add them up, divide by 43 and take the remainder. For +A123BJC5D6E71 the values add up to 145; 145 ÷ 43 leaves 16, which is G, so the full value is +A123BJC5D6E71G. Type that whole value into the generator. The scanner only checks it if check digit verification is switched on.
Common mistakes
- Mixing up Full ASCII and standard Code 39. Zebra’s guide gives the example: with Full ASCII on,
+Bis sent as “b” and%Jas “?”. A value such as+A123then arrives as “a123”. If your data uses + $ % or /, make sure every scanner uses the same setting. - Choosing Code 39 for a new system. Code 128 holds more characters in less space; use Code 39 only when a system or customer requires it. Code 39 vs Code 128 compares them.
- Long values on narrow labels. Each character takes 16 modules here, so ten characters need about 70 mm at 0.330 mm.
Worked example
- Type
asset-0042. The status line says it was converted to capitals:ASSET-0042. - The label is 2 inches (50.8 mm) wide. At 0.330 mm the symbol is 70.0 mm, so set X to 0.25: 53.0 mm, still too wide. Use a 3 inch label, or switch the system to Code 128 if you can.
- Download the PNG for your printer’s resolution and test it with the scanners you use.
Sources
- ISO: ISO/IEC 16388:2023, Code 39 bar code symbology specification (accessed )
- HIBCC: ANSI/HIBC 2.5-2015, Appendix B: Check Character Calculations (accessed )
- Zebra Technologies: DS2208 Digital Scanner Product Reference Guide (MN-002874-14EN Rev. A) (accessed )
More tools for labels and numbers
- 14 types
Barcode generator
Fourteen barcode types, GS1 sizes built in, and downloads ready for design software or a label printer.
Open the tool - QR
QR code generator
Links, Wi-Fi, email, phone and text QR codes that never expire.
Open the tool - CSV to PDF
Bulk barcode generator
Turn a list or CSV into Avery and A4 label sheets, a ZIP of SVG or PNG files, or ZPL for a label printer.
Open the tool - 30-up
Barcode label sheets
Print numbered Code 128 or QR labels on 30-up sheets or a label printer.
Open the tool - 2D
GS1 Digital Link generator
Turn a UPC or GTIN, with batch, expiry or serial, into a GS1 Digital Link QR code or GS1 DataMatrix.
Open the tool - Scan
Barcode checker
Scan a barcode or QR code with your camera or a photo and check its digits, GS1 data and which domain its link opens.
Open the tool - CSV
SKU generator
Build consistent SKUs from product, color and size codes, then export CSV.
Open the tool - GS1
Check digit calculator
Calculate or verify GS1 check digits and convert UPC-E, UPC-A, EAN-13 and GTIN-14.
Open the tool