Technical Specifications
- Standard
- ISO/IEC 16388 & ANSI/AIM BC1 (USD-3 / LOGMARS)
- Character Set
- 43 characters: 0–9, uppercase A–Z, and symbols (- . $ / + % space)
- Checksum Algorithm
- Self-checking symbology; optional weighted Modulo-43 checksum
- Symbology Structure
- Discrete variable-length symbology with automatic start/stop asterisks (*)
- Quiet Zones
- Minimum 10X module width (at least 6.4 mm / 0.25 in) on left and right margins
- Privacy
- 100% client-side generation; asset IDs, serial numbers, and equipment tags are never uploaded
Standard Industry Use Cases
- Enterprise IT hardware asset tags (laptops, servers, monitors, networking gear)
- US Department of Defense (DoD) military supply shipments under MIL-STD-129 / MIL-STD-130
- Automotive manufacturing sub-assemblies and replacement parts (AIAG B-1 standard)
- Hospital clinical laboratory specimen tube labeling and healthcare asset tracking
- Warehouse storage bin locations, maintenance tooling badges, and factory route sheets
Key Benefits of Code 39 Asset
Full Alphanumeric Character Support
Encodes capital letters A–Z, numbers 0–9, and key operational symbols (- . $ / + % space) for intuitive asset naming.
Known as LOGMARS in US Defense Logistics
LOGMARS is the US Department of Defense's use of Code 39 and adds its own size and density rules; check them against your contract before printing.
Self-Checking Robust Architecture
Inherent parity check pattern minimizes misread risks, with optional Modulo-43 check digit support for mission-critical tracking.
What Code Do I Need for My Product? (Customer Decision Guide)
Choosing the right barcode format depends on where your product is sold, the packaging substrate, and scanner infrastructure:
When should I choose Code 39 over Code 128?
Choose Code 39 when encoding shorter alphanumeric IDs (like ASSET-104) where legacy scanners or government contracts (MIL-STD-129) require it. Choose Code 128 if you have longer strings or space constraints on small labels.
Should I enable the Modulo-43 check digit?
Enable Mod-43 if you are tracking high-value assets, medical specimens, or defense shipments. For casual office inventory, standard Code 39 without check digit is scannable on all hardware.
Code 39 Technical Standards & Quiet Zone Rules
- Code 39 requires a minimum quiet zone (blank white margin) of 10 times the narrow bar width on both the left and right sides.
- Standard Code 39 is not case-sensitive; lowercase letters are automatically capitalized upon encoding.
- Ensure start and stop asterisks (*) are preserved in the optical pattern to allow bi-directional scanning.
Frequently Asked Questions
What characters can be encoded in a standard Code 39 barcode?
Standard Code 39 natively encodes 43 individual characters: 10 numeric digits (0–9), 26 uppercase English letters (A–Z), and seven punctuation and mathematical symbols: hyphen (-), period (.), space ( ), dollar sign ($), slash (/), plus (+), and percent (%). Lowercase letters entered into standard mode are automatically capitalized. For full ASCII support including lowercase letters and control characters, Full ASCII Extended Code 39 combines these standard symbols in pairs.
What is the difference between Code 39 and Code 128?
Code 39 is a discrete symbology where each character is separated by an inter-character gap, making it simpler, highly resilient, and decodable by virtually all legacy barcode readers without specialized software. However, Code 39 requires significantly more physical horizontal space per character. Code 128 is a continuous, high-density symbology that encodes the entire 128 ASCII table in approximately half the horizontal width and features dynamic numeric compaction (Subset C). For compact spaces, choose Code 128; for legacy defense, automotive, or simple asset tracking, choose Code 39.
Why do Code 39 barcodes have asterisks (*) at the beginning and end?
The asterisk (*) character is the designated start and stop delimiter in the Code 39 specification. It tells optical barcode scanners which direction the beam is reading across the bars (left-to-right or right-to-left) so the decoder can orient the payload accurately. In modern scanners, the asterisks are stripped automatically and are not transmitted to your inventory database or spreadsheet.
How is the optional Modulo-43 check digit calculated for Code 39?
Code 39 has built-in self-checking properties due to its fixed pattern ratio (each character contains 9 elements: 3 wide and 6 narrow). However, high-reliability applications (such as DoD LOGMARS or healthcare asset tracking) add a Modulo-43 check character: each character in the payload is assigned a numerical value from 0 to 42, all values are summed, the sum is divided by 43, and the remainder maps back to the corresponding check character appended to the end of the data.
Can I print Code 39 asset barcodes on Avery adhesive label sheets?
Yes. UniversalCodeMaker includes a built-in Avery label maker. You can generate complete PDF print sheets for standard Avery 5160 (30 labels per sheet, 1" × 2-5/8") or Avery 5163 (10 labels per sheet, 2" × 4"). Each barcode is rendered with calibrated quiet zones and razor-sharp vectors to guarantee crisp scanning on both thermal transfer and office laser printers.
Are my enterprise asset tags, serial numbers, or internal inventory lists stored on UniversalCodeMaker servers?
No. All barcode rendering, vector generation, and checksum arithmetic take place 100% client-side in your local web browser. Your private asset serial numbers, equipment tags, employee IDs, and company inventory codes never leave your device and are never uploaded to, transmitted across, or stored on any external server.