Code 39 Barcode Generator
Generate a Code 39 barcode from uppercase letters, digits and a handful of symbols, and download it as a PNG. Free, no signup, runs in your browser.

Code 39 is the older self-checking linear barcode still required by many industrial, defence and automotive systems. It encodes uppercase A-Z, digits 0-9 and the symbols - . $ / + % and space, wrapping the value in the start and stop asterisks scanners look for.
Runs entirely in your browser · no signup · nothing is uploaded · updated 2026-09-08
Symbology
Code 39
Uppercase, digits and - . $ / + % space.
How to use it
- 1.Type the value in uppercase - lowercase is not part of the Code 39 character set.
- 2.The start and stop characters are added automatically; do not type asterisks yourself.
- 3.Download the PNG and print it at 300 DPI or higher without rescaling.
Code 39 character set
44 characters, plus the asterisk reserved as the start and stop delimiter. Anything outside this set - lowercase especially - cannot be encoded.
| Group | Characters |
|---|---|
| Letters | A-Z, uppercase only |
| Digits | 0-9 |
| Symbols | - . $ / + % and space |
| Reserved | * as start and stop, never in your data |
Frequently asked questions
Should I use Code 39 or Code 128?
Code 128 unless something specifically demands Code 39. Code 128 handles lowercase, is roughly half the width for the same data, and is read by everything modern. Code 39 survives because of legacy specs - defence logistics, some automotive and healthcare systems - not because it is better.
Why is my lowercase text rejected?
Standard Code 39 has no lowercase. There is an extension, Full ASCII Code 39, that encodes lowercase as two-character escape sequences, but scanners must be configured for it and many are not. Uppercase your value, or switch to Code 128.
Do I need the asterisks?
They are the start and stop characters and are added for you. If you type them into the value you will produce a barcode with doubled delimiters that most scanners refuse.
Does Code 39 have a check digit?
Optionally - a modulo-43 check character. It is not part of the base spec and most implementations omit it, so only add one if the receiving system explicitly asks for it.
Why is Code 39 so wide?
Every character is a fixed nine elements, three of them wide, with no compression for digits. A 10-character value produces a noticeably longer symbol than the same value in Code 128 subset C.
What is the wide-to-narrow ratio?
Between 2:1 and 3:1, with 3:1 scanning most reliably. Below 2:1 scanners cannot tell wide bars from narrow ones and read rates fall away.
Can Code 39 encode spaces?
Yes, space is a valid character in the set. It is one of the few symbologies where a space inside the value is entirely legitimate.
Is Code 39 the same as Code 3 of 9?
Yes - two names for the same symbology. The name comes from the encoding: nine elements per character, three of them wide.
Tools that pair with this one
Subnet Calculator
Enter any IPv4 address in CIDR notation to get the network and broadcast addresses, usable host range, subnet mask, wildcard mask and host count.
Aspect Ratio Calculator
Work out the missing width or height for any aspect ratio, simplify the ratio of any two dimensions, and check the megapixel count.
Barcode Generator
Generate Code 128, EAN-13, UPC-A, Code 39, ITF-14, MSI and Pharmacode barcodes and download them as PNG. Runs entirely in your browser.
Code 128 Barcode Generator
Generate a Code 128 barcode from any text or number and download it as a PNG. Full ASCII, automatic subset switching, no signup and nothing uploaded.
Built something?
RankCert is a weekly launch board where products rank on domain control we verify ourselves - not upvotes. Listing is free and the link is dofollow whether or not you display our badge.