Free Code 39 Barcode Generator
Generate a Code 39 barcode for inventory systems, asset labels, and legacy scanning workflows.
Lowercase letters are automatically converted to uppercase
0/43Enter text to generate the barcode.
Find this tool useful? Save it for next time.
How to generate a Code 39 barcode
Enter your barcode content using uppercase letters, digits, or the allowed special characters. Lowercase letters are automatically converted to uppercase. Characters outside the Code 39 character set are removed. The barcode generates instantly as you type and can be downloaded as SVG or PNG.
Code 39 is the right choice when you need compatibility with older scanners or legacy systems that were built around this format. For new label designs where compatibility is not a constraint, Code 128 encodes more data in less space.
Code 39 character set reference
| Type | Characters |
|---|---|
| Digits | 0 1 2 3 4 5 6 7 8 9 |
| Uppercase letters | A – Z |
| Special characters | - . $ / + % (space) |
Printing tips
- Use an X-dimension of at least 0.25 mm for typical handheld scanner environments
- Maintain a quiet zone of at least 10× the X-dimension on each side
- Barcode height should be at least 15% of the total barcode length, minimum 9.5 mm
- Black bars on white background - avoid colour combinations with insufficient contrast
Frequently asked questions
What is a Code 39 barcode?
Code 39 (also known as Code 3 of 9) is one of the oldest and most widely supported linear barcode formats. It was created in 1974 and remains in use in automotive, defence, and industrial applications. Code 39 encodes uppercase letters (A–Z), digits (0–9), and a small set of special characters: space, hyphen (-), period (.), dollar sign ($), slash (/), plus (+), and percent (%). Each character is represented by five bars and four spaces, three of which are wide.
What characters can Code 39 encode?
The standard Code 39 character set includes uppercase letters A–Z, digits 0–9, and seven special characters: space, hyphen (-), period (.), dollar sign ($), forward slash (/), plus (+), and percent (%). Lowercase letters are not supported - this tool automatically converts lowercase input to uppercase. Characters outside this set are silently removed.
What is the difference between Code 39 and Code 128?
Code 39 only supports 43 characters (letters, digits, and a handful of symbols) and is less dense than Code 128. Code 128 supports the full 128 ASCII character set and produces a shorter barcode for the same data. Code 39 is used in older systems, government and military applications (such as LOGMARS), and environments where simplicity and broad scanner compatibility matter more than density. For new systems, Code 128 is generally preferred.
Does Code 39 have a check digit?
Standard Code 39 does not require a check digit - the format is self-checking by design, meaning a single print defect cannot produce a valid but incorrect read. An optional modulo-43 check character (Code 39 with check digit) exists and is used in some regulated applications such as pharmaceutical dispensing. This tool generates standard Code 39 without the optional check character, which is compatible with all general-purpose Code 39 scanners.
What is Full ASCII Code 39?
Full ASCII Code 39 extends the standard character set to all 128 ASCII characters by using pairs of the standard Code 39 characters to represent lowercase letters and additional symbols. Not all scanners support Full ASCII Code 39 - it requires the scanner to be configured to interpret the extended encoding. This tool generates standard Code 39, which is compatible with all Code 39 scanners without configuration.
What industries use Code 39?
Code 39 is used in automotive part labelling (following the Automotive Industry Action Group barcode standard), US Department of Defense logistics (LOGMARS), healthcare inventory, and general asset and inventory management in organisations that built their systems in the 1980s–1990s. It remains common in environments with legacy scanners or where established workflows have not migrated to newer formats.
How wide is a Code 39 barcode compared to Code 128?
Code 39 is less efficient than Code 128 for the same content. A Code 39 barcode encoding 10 characters is approximately 40% wider than an equivalent Code 128 barcode at the same X-dimension. For labels with limited space, Code 128 will produce a more compact barcode. If you are constrained to Code 39 by a legacy system, use the shortest possible input and the smallest practical X-dimension.
Can I use Code 39 for asset tags?
Yes. Code 39 is well suited for asset tags, equipment labels, and inventory stickers because most handheld barcode scanners support it without special configuration. The uppercase-only, limited character set is not a significant constraint for asset identifiers that typically use alphanumeric codes. Print the barcode at a minimum height of 9.5 mm and ensure the quiet zone on each side is at least 6.35 mm.
Related Tools
Code 128 Barcode Generator
Generate a Code 128 barcode for shipping labels, inventory tracking, and internal operations.
EAN-13 Barcode Generator
Generate a standards-compliant EAN-13 barcode for retail product labels. Download as SVG or PNG.
Barcode Label Sheet Generator
Enter a list of barcodes, choose a label sheet layout, and generate a print-ready sheet in seconds.