Barcodian

Code 39 Generator

Create a Code 39 barcode that encodes uppercase letters and digits, common in industrial and ID applications.

Share

How to use in 3 steps

  1. 1

    Enter the value

    Type a value of uppercase letters, digits and a few symbols (- . $ / + % space).

  2. 2

    Set options

    Adjust an optional check character, height and module ratio.

  3. 3

    Download

    Export as PNG, SVG or PDF.

Supported formats

FormatDimensionNote
EAN-131D (linear)12 or 13 digits
EAN-81D (linear)7 or 8 digits
UPC-A1D (linear)11 or 12 digits
UPC-E1D (linear)6, 7 or 8 digits
Code 1281D (linear)ASCII characters
Code 391D (linear)A-Z 0-9 - . $ / + % space
ITF-141D (linear)13 or 14 digits
Interleaved 2 of 51D (linear)even number of digits
Codabar1D (linear)digits and - $ : / . +
GS1-1281D (linear)e.g. (01)09506000134352
Data Matrix2D (matrix)any data
GS1 DataMatrix2D (matrix)e.g. (01)09506000134352
PDF4172D (matrix)any data
Aztec Code2D (matrix)any data
QR Code2D (matrix)any data
GS1 QR / Digital Link2D (matrix)GS1 Digital Link URL or (01)...

Example input / output

Input

ABC-123

Output

*ABC-123* · Code 39 · no check digit

Technical notes

Code 39 (Code 3 of 9) is an older but very widespread 1D barcode in use since 1974. It encodes a limited character set: A-Z uppercase, 0-9 digits and - . $ / + % plus space. It supports neither lowercase nor most symbols, so for richer data the Code 128 generator is a better fit.

Each character is built from 9 elements (5 bars + 4 spaces), 3 of which are wide — hence the name. This structure makes Code 39 easy to read but low-density: it carries the same data in a wider barcode than Code 128, so it isn't economical for long values.

A check digit is not mandatory in Code 39; many deployments use it without one. An optional mod-43 check character can be added, but not every scanner expects it, so make sure it matches your reader side.

Code 39 has historically been common in industrial settings, ID cards, and military and automotive inventory systems. A '*' start/stop character is added at the beginning and end; it is handled automatically and cannot be used inside your data.

Frequently asked questions

Standard Code 39 supports uppercase only. If you need lowercase or a wider character set, use Code 128.