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.

80px

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 set0-9, A-Z uppercase, space and - . $ / + %
LengthVariable
Check digitOptional modulo-43, rarely required
Start/stopAsterisk delimiters, added automatically
DensityLow — roughly 30% wider than Code 128 for the same data
Quiet zone10 modules either side
Best forDefence, automotive, healthcare and legacy scanners

How to generate a Code 39 barcode

  1. 1

    Enter your value in uppercase — Code 39 has no lowercase characters.

  2. 2

    Replace unsupported punctuation with hyphens or periods, which are in the character set.

  3. 3

    Set bar height and download SVG for print or PNG for documents.

  4. 4

    If your receiving system expects the asterisks, confirm whether it strips them automatically.

  5. 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.

Code 39 questions

Other barcode formats