Key Takeaways
- A Code 39 barcode, also called Code 3 of 9, is a 1D linear barcode for alphanumeric data, with an asterisk start/stop character and optional check digit.
- Code 39 barcodes are widely used in inventory, manufacturing, logistics, healthcare equipment, government, asset tracking, and non-retail industrial labels.
- Code 39 is simple to print and scan, but code 128 is more efficient for dense shipping or complex data.
- Procurement teams should validate barcode format, label quality, scanners, rugged handhelds, rugged tablets, IP rating, drop protection, connectivity, and deployment testing together.
What Is a Code 39 Barcode? – Give a direct definition and explain Code 3 of 9
A code 39 barcode is a linear 1D alphanumeric barcode symbology that encodes digits, uppercase letters, and limited symbols using wide and narrow bars and spaces. It was developed in 1974, so virtually every barcode scanner can read Code 39 natively without special software.
- It is called Code 3 of 9 because each character has 9 elements, with 3 wide and 6 narrow.
- Code 39 only uses two bar widths, making it easier for lower-quality printers to print and scanners to read, even on slightly distorted surfaces.
- It is self-checking and does not require a mandatory checksum digit; Mod 43 can add error detection.
- To generate a Code 39 barcode, surround barcode data with asterisks, such as 12345; to hide asterisks in human-readable text, some tools use parentheses, like (12345).
- Example: INV12345.
Code 39 Barcode Format, Character Set, and Start/Stop Symbols

The code 39 barcode format uses 5 bars, 4 spaces, inter-character gaps, and quiet zones. The standard ISO/IEC 16388 defines key dimensions, including quiet zones of at least 10×X.
| Format item | Practical detail |
|---|---|
| Elements | 9 per character: 5 bars + 4 spaces |
| Character set | 43: numeric digits 0–9, uppercase letters A-Z, space, and special characters -. $ / + % |
| Variable length | Code 39 allows for variable length; industrial labels often stay near 1–20 characters |
| Full ASCII version | ASCII characters are represented by encoding pairs, reducing efficiency |
| Start/stop characters | Asterisk is the start and stop symbol; do not use it inside data |
| Check digit | Optional Mod 43 digit code before the final stop asterisk |
A Code 39 barcode can hold up to 43 characters, including uppercase letters (A-Z), numeric digits (0-9), and a limited set of special characters, but it is less space-efficient than other barcode types. It can encode up to 43 characters, while Code 128 can encode the full ASCII 128-character set.
Code 39 Barcode Example and Sample Use Cases in Industrial Workflows
![]()
A barcode 39 sample should match the real ID format used by WMS, ERP, or MES fields.
- Warehouse location: A12-03-07 on rack labels for WMS picking.
- Asset tag: ASSET-2026-00123 on durable labels for IT assets, forklifts, or tools.
- Manufacturing part: PN-8MM-BOLT-01 on bins or kitting totes.
- Field service ticket: WO-458921 scanned by rugged handheld devices for fieldwork and logistics outdoors.
Where Code 39 Barcodes Are Still Used in Warehouses, Manufacturing, and Field Service
Although newer barcode types exist, Code 39 remains embedded in common applications because it is easy to create, register in systems, and support with older equipment. It is often used where moderate-length data strings are needed, and barcode scanners are already deployed.
| Workflow | Typical code 39 format | Device |
|---|---|---|
| Warehouse inventory | A12-03-07 | Handheld scanner |
| Asset tracking | ASSET-2026-00123 | Rugged Android tablet |
| WIP / parts | PN-8MM-BOLT-01 | Vehicle-mounted tablet |
| Field assets | WO-458921 | Long-range scanner |
The simplicity and durability of Code 39 make it heavily utilized in non-retail and industrial environments, including logistics and warehousing applications, healthcare equipment, and internal asset tracking.
Code 39 vs Code 128 vs Data Matrix: Which Barcode Should You Use?
Both Code 39, Code 128, and Data Matrix can work in industrial systems, but the difference is density, character support, and scanner requirements. Code 128 is generally considered technically superior to Code 39 because it can fully replace Code 39 in modern systems with higher data density and efficiency.
| Criteria | Code 39 | Code 128 | Data Matrix |
|---|---|---|---|
| Data | Uppercase, digits, symbols | Full ASCII, subsets A/B/C, numeric data efficient | Large data, binary, traceability |
| Benefits | Simple, older scanners | Compact, shipping, commercial labels | Small items, error correction |
| Wrong fit | Very small labels | Very old systems | Laser-only scanners |
| Choose when | Legacy, simple IDs | Tight layout, complex data | Tiny parts, QR code alternatives |
Code 39 is simpler and often better suited for older scanning equipment, while Code 128 is designed for high-density applications and can handle more complex data.
Industrial Scanning Risks: Label Size, Print Quality, Distance, Lighting, and Device Compatibility
Selecting Code 39 is not only a symbology decision; it affects label size, font size, printer settings, and scan reliability. Code 39 barcodes tend to become quite long due to low data density, making them less suitable for very small items.
| Spec | Risk | Mitigation |
|---|---|---|
| Long data | The label does not fit | Use Code 128 or shorten ID |
| Printer DPI | Blurred bars | Use a thermal printer; 600 DPI recommended for accurate results and point sizes |
| Low contrast | Misreads | Use matte labels and test lighting |
| Scanner type | Limited reads | Verify 1D laser or 2D imager support |
| Environment | Dust, glare, cold fog | Test real surfaces and angles |
When printing Code 39 barcodes, a printer with at least 600 DPI is recommended for accurate results, and specific point sizes should be followed for optimal scanning performance.
How to Choose a Rugged Device for Code 39 Barcode Scanning
Procurement teams should determine the scanner engine before buying rugged hardware. A 1D laser may suit large Code 39 labels; a 2D imager adds the ability to read Code 128, Data Matrix, and mixed labels.
Check IP-rated sealing, drop protection, operating temperature, glove touch, sunlight-readable display, battery, dock, Wi-Fi, LTE/5G, Bluetooth, and optional GNSS. Kcosit rugged Android tablets and industrial devices, rugged handheld PDAs, and vehicle-mounted tablets can be configured for barcode scanning, UHF RFID, NFC, docking, and technical support in warehouse, manufacturing, and field service projects.
Right Fit and Wrong Fit: When Code 39 Is Not the Best Barcode Choice
Code 39 is a good fit for short uppercase IDs, legacy WMS templates, moderate label space, and older scanners. Avoid it when lowercase letters, dense serialized data, compliance labels, or built-in error correction are required.
| Scenario | Recommended symbology | Reason |
|---|---|---|
| Legacy WMS, large labels | Code 39 | Low disruption |
| Dense shipping label | Code 128 | More efficient |
| Tiny PCB or tool mark | Data Matrix | Fits a limited space |
| Mixed-case web or app IDs | Code 128 | Supports ascii |
Standardize across sites before switching; scanner upgrade costs can outweigh label savings.
Deployment Checklist for Code 39 Barcode Scanning Projects
Use this procurement verification checklist before rollout:
- Confirm the code 39 barcode, code 128, or Data Matrix choice.
- Define maximum data length, check digit policy, and Full ASCII needs.
- Choose label material, layout, human-readable text, barcode font, or label software.
- Test Excel, Word, free web tools, download font packages, and commercial label tools before scaling; font-based printing may vary by font.
- Validate scanners with real labels, distances, angles, glare, and damaged samples.
- Confirm that WMS, ERP, and MES fields accept captured data exactly.
- Test rugged device battery, dock, Wi-Fi, LTE, Bluetooth, IP sealing, and drop protection.
- Implement training so operators know which labels to scan and when to report failures.
FAQs About Code 39 Barcode
Can Code 39 encode lowercase letters?
Standard Code 39 supports uppercase A-Z, digits, space, and special symbols only; lowercase letters require Full ASCII encoding pairs. If true mixed-case data is common, evaluate Code 128.
Is Code 39 good enough for large warehouse inventory systems?
Yes, if IDs are short, labels have space, and scanners are tested. For high SKU counts or compact bins, compare Code 39 example labels against Code 128 before standardizing.
How do I add a check digit to a Code 39 barcode?
Use Mod 43: assign values to each character, sum them, divide by 43, and append the mapped check digit before the stop symbol. Scanner and backend settings must match.
Do I need a special barcode font to print Code 39 labels?
Many teams use a barcode font in Excel or label software, wrapping text with asterisks. For industrial deployment, dedicated label software gives better control than a generic font size setting.
Can Code 39 be used beyond industrial labels?
Yes. Code 39 can appear on membership cards, service tags, and internal IDs, but it is strongest where simple alphanumeric IDs and durable scan workflows matter more than compact layout.