Code 39 Barcode Generator
Encode uppercase letters, digits, and a handful of symbols as a Code 39 barcode — free, unlimited, and ready for asset tags or legacy scanners.
What Code 39 encodes
Code 39 is one of the oldest alphanumeric barcode symbologies still in common use. It encodes a 43-character set: the digits 0-9, uppercase letters A-Z, a space, and six symbols (- . $ / + %). There's no native lowercase support — type lowercase letters and most encoders (including this one) will convert them to uppercase automatically, since Code 39 simply has no symbol for them. It's a solid choice for internal labels where the reading equipment might be older or lower-cost than what a modern retail scanner uses.
Start/stop characters and length rules
Every Code 39 barcode is framed by an asterisk (*) at the start and another at the end — that's how a scanner knows where the barcode begins and ends. The asterisk is reserved for this purpose; it isn't one of the 43 data characters you can encode, and most generators (this one included) add the start/stop asterisks automatically so you don't need to type them yourself.
Length rules
Code 39 has no official maximum length, but it's a low-density symbology — each character takes up more physical width than the equivalent character in Code 128 — so long strings get wide fast. It's best suited to short identifiers: asset tags, badge numbers, and short alphanumeric codes rather than long free-text strings.
Check digit
Unlike EAN-13 or UPC-A, Code 39 has no mandatory check digit — the barcode is valid, and most scanners will read it, without one. An optional Modulo 43 check character exists in the specification for higher-accuracy environments (defense and some industrial supply-chain applications require it), but the large majority of Code 39 barcodes in the wild — asset tags, name badges, internal labels — skip it. If your use case doesn't specifically call for Modulo 43, there's no need to add it.
Where Code 39 is used
Code 39 predates most modern retail scanning infrastructure and isn't used at point-of-sale. Where it still shows up: internal asset and equipment tracking, name badges and ID cards, automotive and defense supply-chain labeling (some AIAG and MIL-STD specifications call for it specifically), and older warehouse or library systems that were built around it decades ago and never migrated. If you're labeling something for a general audience or a modern scanning system with no legacy constraint, Code 128 usually encodes the same data more compactly.
Sizing and printing guidance
Code 39's recommended minimum quiet zone — the clear margin with nothing printed on either side of the bars — is 10 times the narrow bar width (the x-dimension), the same rule of thumb as Code 128. At a 0.25 mm x-dimension, that's about a 2.5 mm clear margin each side; because Code 39 is already wider than Code 128 for the same data, skimping on quiet zone is an even more common cause of scan failures.
Printing guidance
Print at 300 dpi or higher for labels that need to scan reliably — thermal-transfer printers handle Code 39 well, and even basic laser printers are usually fine at that resolution. Don't scale a barcode below about 80% of its designed size, and keep bars pure black on a white or light background for maximum contrast.
Frequently asked questions
Do Code 39 barcodes need a check digit?
What characters can Code 39 encode?
What is the asterisk in a Code 39 barcode?
Is Code 39 still used?
What's the difference between Code 39 and Code 128?
Keep going
Upload a CSV or Excel file and download a ZIP of barcodes — no per-row limit.
Print label sheetsAvery-ready PDFs with correct quiet zones, aligned automatically.
Barcode won't scan?Quiet zones, size, thermal DPI, contrast — causes and fixes, plus a live tester.
All barcode typesBrowse every symbology BarcodeSheets supports.