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

Code 39 Internal labels

Free · runs in your browser
Barcode type
Retail products
Cartons and logistics
Internal labels
2D

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.

Printed size

The width of the narrowest bar. GS1 sets no size for internal codes; pick one your scanners read comfortably. Size and print settings explained

Download for your printer

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

Characters43: digits 0–9, capitals A–Z, space and - . $ / + %
Start and stopAn asterisk (*) at each end, added by the generator; it is not part of the data
Check characterOptional 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 barsThe generator draws wide elements three times the narrow width: 16 modules per character
LengthVariable; the generator keeps it to 43 characters
Full ASCIIA variant that writes other characters as pairs such as +A for “a”; scanners must be set for it
SpecificationISO/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, +B is sent as “b” and %J as “?”. A value such as +A123 then 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

  1. Type asset-0042. The status line says it was converted to capitals: ASSET-0042.
  2. 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.
  3. Download the PNG for your printer’s resolution and test it with the scanners you use.

Sources

  1. ISO: ISO/IEC 16388:2023, Code 39 bar code symbology specification (accessed )
  2. HIBCC: ANSI/HIBC 2.5-2015, Appendix B: Check Character Calculations (accessed )
  3. Zebra Technologies: DS2208 Digital Scanner Product Reference Guide (MN-002874-14EN Rev. A) (accessed )

More tools for labels and numbers