Barcode Technology

Barcode History

Barcode Label Paper

Barcode Printer

Barcode Application

Inventory Management

AI Barcode QRCode

Barcode Scanner

Barcode Software

Barcode Software B

Barcode Software C

Barcode Software D

Barcode Software E

New Technology A

New Technology B

Robot Technology

Barcode Types

Barcode Types B

Barcode Types C

Barcode Types D

Barcode Types E

Barcode Types F

Electronic Technology

Psychology at Work

Barcode Technology and Barcode Software Related   <<< Back to Directory <<<

Code 39 Barcodes: A Technical Deep Dive Into the Iconic (Code 3 of 9) (P9)

Chapter 9: No Checksum Required

A Quick Summary

Code 39 stands apart from many later barcode symbologies in one significant way: it does not require a mandatory checksum or check digit to ensure data integrity. While an optional Modulo 43 checksum is defined in the specification and can be added for extra reliability, it is rarely used in real-world practice. This unusual characteristic---a deliberate omission in an era when error checking is often considered essential---stems from the barcode's inherent 'self-checking' design. Each character in Code 39 is encoded with a distinctive pattern of wide and narrow elements that makes it nearly impossible for a single printing defect or scanning error to transform one valid character into another. The absence of a mandatory checksum simplifies implementation, reduces barcode length, and lowers printing costs, but it also places greater responsibility on print quality, scanner configuration, and application design. Understanding why Code 39 can operate without a checksum---and when the optional checksum might be justified---is essential for anyone designing systems that rely on this venerable symbology. This chapter explores the technical basis for Code 39's self-checking property, examines the optional Modulo 43 checksum, and surveys how various industries have embraced or ignored the checksum feature based on their specific operational requirements.

1. Introduction: The Curious Case of the Missing Checksum

In the world of data encoding, error detection is usually treated as an unqualified good. From the simple parity bit in computer memory to the sophisticated cyclic redundancy checks in network protocols, we have become accustomed to the idea that any system transmitting or storing data should include some mechanism for verifying that the data arrived intact. Barcodes are no exception. Many modern symbologies---including Code 128, Interleaved 2 of 5, and EAN/UPC---require or strongly recommend a check digit to protect against misreads.

Code 39, however, takes a different path. Developed in 1974 by Dr. David Allais and Ray Stevens of Intermec Corporation, Code 39 was the first barcode symbology capable of encoding the full alphanumeric character set---uppercase letters, digits, and a handful of special symbols . This was a revolutionary step forward from the numeric-only barcodes that preceded it. But Allais and Stevens made a deliberate design choice that would distinguish Code 39 from many of its successors: they built error detection into the very structure of the code, eliminating the need for a separate checksum .

The result is a symbology that is both remarkably resilient and remarkably simple to implement. Code 39 can be printed using nothing more than a barcode font---the raw data, bracketed by asterisks as start and stop characters, is rendered directly without any computation of check digits . This simplicity has been a key factor in the symbology's enduring popularity, particularly in environments where ease of implementation trumps the need for maximum data density.

Yet the absence of a mandatory checksum is not without consequences. In applications where data integrity is absolutely critical---where a misread could lead to patient harm, equipment failure, or logistical chaos---the lack of built-in error checking might seem like a serious liability. How, then, has Code 39 remained a trusted standard in fields as demanding as defense, automotive manufacturing, and healthcareThe answer lies in a combination of the symbology's self-checking design, careful implementation practices, and the existence of an optional checksum that can be invoked when needed.

2. Understanding the Self-Checking Property

To appreciate why Code 39 does not require a checksum, it is necessary to understand how the symbology encodes data at the most fundamental level. Code 39 is sometimes called 'Code 3 of 9' because each character is represented by a pattern consisting of nine elements---five bars and four spaces---with exactly three of these nine elements being wide and the remaining six being narrow . This 'three-wide-out-of-nine' encoding scheme is the source of both the symbology's name and its self-checking capability.

The Encoding Principle

The wide and narrow elements in a Code 39 barcode correspond to binary values---typically, wide elements represent a binary 1 and narrow elements represent a binary 0. The ratio between wide and narrow element widths is not extremely critical; the specification allows ratios ranging from 1:2 to 1:3, with a ratio of 1:2.5 being most commonly recommended . This flexibility is itself an advantage, as it allows Code 39 barcodes to be printed on a wide range of equipment without requiring precise calibration.

Each character in the Code 39 character set---which includes the digits 0 through 9, the uppercase letters A through Z, and seven special characters (space, period, dash, slash, plus, percent, and dollar sign)---is assigned a unique pattern of wide and narrow elements. The start and stop characters, both represented by an asterisk (*), follow the same encoding convention but are not part of the data payload .

Why Self-Checking Works

The self-checking property of Code 39 arises from the fact that each valid character pattern is sufficiently distinct from every other valid character pattern. Specifically, the encoding scheme ensures that any single bar or space that is misread---for example, a wide bar that is printed too narrowly or a narrow space that is filled in---will result in a pattern that is not valid for any character in the set .

This is not the same as error correction, which would allow the decoder to reconstruct the correct character after a misread. Rather, self-checking means error *detection* at the character level: if a character is misread, the decoder will recognize that the pattern is invalid and reject it. The decoder then has several options: it can attempt to re-scan the barcode, it can signal a read error to the operator, or it can apply additional logic to determine the most likely intended character.

The practical implication is that a single printing defect---such as a slightly smudged bar or a speck of dirt that narrows a space---is unlikely to produce a false reading. The defective character will simply fail to decode, prompting another scan attempt. This is a significant improvement over barcode symbologies that lack this property, where a misread might silently produce an incorrect result.

The Self-Checking Advantage in Practice

The self-checking nature of Code 39 has important implications for real-world applications. In a warehouse where barcodes are scanned under imperfect lighting conditions, or on a factory floor where labels may be exposed to oil and grime, the ability to reject invalid characters at the point of decoding adds a layer of robustness that compensates for the absence of a formal checksum.

Moreover, the self-checking property works in concert with the barcode's variable-length design. Since each character is independently verified, errors in one part of the barcode do not propagate to other parts, and the scanner can reliably decode the remaining characters even if one character is illegible. This character-level independence is a feature of discrete symbologies like Code 39, where each character is encoded separately with an inter-character gap, as opposed to continuous symbologies where characters share elements and errors can cascade.

3. The Optional Modulo 43 Checksum

Although Code 39 does not require a checksum, the specification does define an optional Modulo 43 check digit that can be appended to the data payload . This checksum provides an additional layer of error detection, particularly for applications where the consequences of a misread are severe or where barcodes may be exposed to harsh environmental conditions that increase the risk of print degradation.

How the Modulo 43 Checksum Works

The Modulo 43 checksum is computed by assigning each character in the Code 39 character set a numeric value from 0 to 42. The digits 0 through 9 are assigned values 0 through 9, the letters A through Z are assigned values 10 through 35, and the seven special characters are assigned values 36 through 42. The checksum value is calculated by summing the values of all data characters and taking the remainder when the sum is divided by 43.

The resulting checksum character---the character whose assigned value equals this remainder---is then appended to the end of the data payload, before the stop character. When a scanner reads a barcode with a checksum, it performs the same calculation on the data characters and compares the result to the checksum character. If they match, the data is considered valid; if they do not, the scanner rejects the barcode and typically signals a read error.

Why the Checksum Is Rarely Used

Despite the availability of this optional checksum, it is rarely used in practice . There are several reasons for this:

Simplicity of Implementation. One of Code 39's greatest strengths is its ease of integration into existing systems. Because no checksum is required, any system that can print text can print a Code 39 barcode simply by using a barcode font. The font handles the encoding of bars and spaces, and the operator or software does not need to perform any calculations. Adding a checksum would require a computation step that many implementations omit .

Legacy Infrastructure. Code 39 is often used in environments where the barcode infrastructure---printers, scanners, and middleware---has been in place for decades. Changing the configuration to include a checksum would require updating all of these components, a costly and disruptive undertaking that most organizations are reluctant to undertake for a marginal gain in reliability.

Scanner Configurations. Many barcode scanners are factory-configured to accept Code 39 barcodes with or without a checksum. Enforcing checksum verification often requires manual configuration of the scanner, which adds complexity and introduces the risk of misconfiguration . In high-volume scanning environments, administrators may prefer to keep scanner settings as simple and uniform as possible.

Sufficiency of Self-Checking. For many applications, the self-checking property of Code 39 provides sufficient error detection. The added protection of a Modulo 43 checksum would detect certain types of multiple errors that self-checking alone might miss, but in practice, such errors are rare enough that the extra complexity is not justified.

When the Checksum Is Used

There are, however, specific contexts in which the Modulo 43 checksum is recommended or even required. These include:

Military Specifications. Some military applications, particularly those governed by the MIL-STD-130 standard for identification marking of U.S. military property, mandate the use of Modulo 43 check digits for Code 39 barcodes .

Healthcare Applications. The Health Industry Bar Code (HIBC) standard, which is built on Code 39 for certain applications, often recommends or requires the use of a checksum to ensure patient safety and accurate medication administration .

High-Reliability Environments. In any application where the cost of a misread is exceptionally high---such as tracking aerospace components or identifying critical medical devices---implementers may choose to enable the checksum as an extra layer of protection.

4. Industry Applications: How the Self-Checking Design Shapes Practice

The self-checking nature of Code 39 and its optional checksum have influenced how the symbology is deployed across various industries. What follows is a survey of the major application domains, with an emphasis on how the 'no checksum required' characteristic interacts with the specific needs of each industry.

4.1 Military and Defense: The LOGMARS Standard

Perhaps the most iconic application of Code 39 is the U.S. Department of Defense's LOGMARS (Logistics Applications of Automated Marking and Reading Symbols) program . LOGMARS established Code 39 as the standard for identifying and tracking military supplies, equipment, and assets, a designation that has kept the symbology in active use across the defense sector for decades.

The military environment presents unique challenges for barcode applications. Labels must withstand extreme temperatures, humidity, abrasion, and exposure to chemicals and fuels. They must remain readable even when partially damaged. And the data they encode must be reliable enough to support mission-critical logistics and maintenance decisions.

In this context, the self-checking property of Code 39 is a significant advantage. A label that has been scratched or scuffed may have one or more bars that are partially missing or obscured. In a non-self-checking symbology, such damage could cause one character to be misinterpreted as another, potentially leading to the wrong part being shipped to the wrong location. In Code 39, the same damage is likely to produce an invalid character pattern, causing the scanner to reject the label rather than misread it.

The optional Modulo 43 checksum is sometimes used in military applications to add an extra layer of assurance, but it is not universal. Many LOGMARS implementations rely on the self-checking property alone, supplemented by careful label design and periodic label replacement.

4.2 Automotive Manufacturing: The AIAG Standard

The automotive industry, through the Automotive Industry Action Group (AIAG), has also adopted Code 39 as a standard for parts labeling and supply chain tracking . In this domain, barcodes must support just-in-time manufacturing, where parts are delivered to assembly lines in precise quantities at precise times. A misread or unreadable barcode can halt production and cost millions of dollars per hour.

Automotive parts labels are typically affixed to parts or packaging and must survive the rigors of the supply chain---shipping, handling, and storage. Like military labels, they may be exposed to oil, dirt, and abrasion. The self-checking property ensures that even if labels are scuffed or partially obscured, the risk of misreading is minimal.

The AIAG B-1 standard, which defines labeling requirements for the automotive industry, incorporates Code 39 for certain applications. While a checksum is not always required, the standard does provide guidance on data formatting and verification to ensure that labels meet quality and reliability requirements.

4.3 Healthcare and Medical Devices

Healthcare is one of the most demanding environments for barcode applications, and Code 39 has a long history in this sector . The Health Industry Business Communications Council (HIBCC) developed the Health Industry Bar Code (HIBC) standard, which builds on Code 39 for identification of medical devices, pharmaceuticals, and patient records.

In healthcare, the consequences of a barcode misread can be catastrophic. A mislabeled medication could lead to a patient receiving the wrong drug; a misread medical device identifier could cause the wrong implant to be used in surgery. For this reason, healthcare implementations of Code 39 are more likely to use the optional Modulo 43 checksum than many other industries. The checksum provides an extra layer of assurance that the data encoded in the barcode has been transmitted correctly from the label to the scanner to the electronic health record system.

However, even in healthcare, the checksum is not universal. Many hospitals and clinics use Code 39 without a checksum for internal purposes such as patient identification bands, asset tracking, and specimen labeling, where the risk is considered manageable and the simplicity of the checksum-free implementation is valued.

4.4 Library Systems and Document Management

Libraries were among the earliest adopters of Code 39, and the symbology remains widely used in library cataloging and circulation systems . A typical library barcode encodes a patron ID or a book's accession number, and the barcode is scanned to check out books, track overdue items, and manage inventory.

Libraries are a low-risk environment for barcode applications. A misread of a book's barcode might inconvenience a patron, but it is not life-threatening. In this context, the simplicity and low cost of checksum-free Code 39 are ideal. Libraries can generate barcodes using barcode fonts, print them on inexpensive labels, and scan them with off-the-shelf equipment---all without the complexity of checksum computation or verification.

4.5 Asset Tracking and Equipment Management

Code 39 is a mainstay of asset tracking in almost every industry, from corporate IT departments tracking laptops and monitors to construction companies tracking heavy equipment . Asset tags typically encode an asset ID number, and the barcode is scanned during inventory audits, maintenance checks, and checkout procedures.

The self-checking property is particularly valuable in asset tracking because asset tags are often exposed to harsh conditions. A laptop may have its asset tag partially worn away from repeated handling; a piece of construction equipment may have a tag that is dirty or faded. In these scenarios, the ability to reject invalid characters rather than misread them is a significant advantage.

Checksums are rarely used in asset tracking applications because the consequences of a misread are low---an inventory discrepancy that can be resolved during the next audit. The additional cost and complexity of implementing a checksum system are not justified.

4.6 Warehousing and Inventory Management

In warehousing and inventory management, Code 39 is used to label pallets, bins, and individual items . The barcodes are scanned during receiving, putaway, picking, packing, and shipping operations, enabling real-time inventory visibility.

Warehouse environments are often challenging for barcode scanners due to variable lighting, dust, and the need to scan labels from a distance. The self-checking property of Code 39 helps ensure that scanning is reliable even under these suboptimal conditions. However, the symbology's relatively low data density---each character requires significant horizontal space---can be a limitation in warehousing, especially when small items must be labeled with lengthy product codes. This is one reason why Code 128, which offers higher density, has become increasingly common in warehousing applications .

4.7 Government and Public Sector

Beyond the military, Code 39 is used by various government agencies for identification and tracking purposes. The General Services Administration (GSA), the U.S. Postal Service, and other federal agencies have used Code 39 for asset tags, property records, and mail tracking.

The self-checking property is particularly valuable in government applications, where accountability and accuracy are paramount. However, government implementations are more likely to use the optional checksum than private-sector implementations, as government standards often require it for consistency and reliability.

4.8 Pharmaceutical and Laboratory Applications

In pharmaceutical manufacturing and laboratory settings, Code 39 is used to label vials, specimen tubes, and reagent containers . These labels are often small, and the barcodes may be scanned by handheld devices or automated laboratory instruments.

The low data density of Code 39 can be a challenge in this application, as small vials may not have enough surface area for a long Code 39 barcode. This has led many pharmaceutical manufacturers to adopt Code 128 or 2D barcodes for primary labeling. However, Code 39 remains in use for secondary packaging, case labeling, and other applications where space is less constrained.

5. Technical Considerations for Implementation

Given that Code 39 does not require a checksum, implementers must pay careful attention to other factors that affect barcode reliability. These include print quality, sizing, and scanner configuration.

Print Quality

The self-checking property of Code 39 works best when the barcode is printed with consistent bar widths and sharp edges. Printing defects that blur or distort the bars can still cause misreads, even if the self-checking property prevents most silent errors.

Key print quality considerations include:

Resolution. A minimum of 300 DPI is recommended for production printing . Lower resolution may result in bars that are too wide or too narrow relative to the specification.

Contrast. The barcode must have sufficient contrast between bars and background for reliable scanning . Black bars on white background is the most reliable combination, though other color schemes are possible if contrast is maintained.

Edge Definition. The edges of bars and spaces should be crisp and well-defined. Ink spread or bleeding can cause wide bars to become even wider, potentially changing the wide-to-narrow ratio beyond acceptable limits.

Sizing

The size of a Code 39 barcode is determined by the 'X-dimension,' the width of the narrowest bar. The minimum recommended X-dimension is 0.191 mm (7.5 mils), with 0.33 mm being a more typical value for general use . The height of the barcode should be at least 5 mm or 15% of the barcode length, whichever is greater .

The total width of a Code 39 barcode can be estimated by considering that each character consists of nine elements (bars and spaces) plus an inter-character gap. The self-checking nature of the code does not impose any additional width requirement for a checksum, so checksum-free barcodes are correspondingly shorter than those with checksums.

Quiet Zones

The quiet zone---the blank area surrounding the barcode---is critical for reliable scanning. The Code 39 specification requires a quiet zone of at least 10 times the X-dimension on each side of the barcode . Inadequate quiet zones are a common cause of scanning failures, particularly in automated scanning systems.

Scanner Configuration

Most modern barcode scanners auto-detect Code 39, but manual configuration may be required for certain features:

Checksum Verification. If the optional Modulo 43 checksum is used, the scanner must be configured to verify it .

Extended Code 39. If the Full ASCII extension is used, the scanner must be configured to interpret the paired character sequences correctly .

Minimum and Maximum Length. Some applications may benefit from configuring the scanner to reject barcodes that are too short or too long, reducing the risk of partial scans.

6. The Trade-Off: Simplicity vs. Data Integrity

The decision to omit a mandatory checksum from Code 39 reflects a fundamental design trade-off: simplicity and implementation ease versus absolute data integrity. Code 39 was designed in an era when barcode printing and scanning equipment were much less sophisticated than they are today. The ability to print a barcode using a simple font and read it with a relatively inexpensive scanner was a critical success factor.

The self-checking property was a clever engineering solution that provided a high level of error detection without the computational overhead of a checksum. In many applications, this has proven sufficient. In others, the optional checksum provides an upgrade path for those who need it.

However, the trend in barcode technology has been toward higher density and more robust error detection. Code 128, introduced in 1981, offers both higher density and a mandatory checksum. EAN/UPC, used for retail product identification, also requires a check digit. For new implementations where data density and error detection are paramount, these newer symbologies are often preferable.

Yet Code 39 persists. Its installed base is enormous, and the cost of migrating to a different symbology---updating printers, scanners, software, and databases---is prohibitive for many organizations. For these organizations, the self-checking property and optional checksum provide a workable solution that balances reliability against cost.

7. A Detailed Summary

The absence of a mandatory checksum in Code 39 is not an oversight or a deficiency; it is a deliberate design choice that reflects the symbology's engineering heritage and practical purpose. The self-checking nature of Code 39's 'three-wide-out-of-nine' encoding scheme provides character-level error detection that is sufficient for a wide range of applications. When the optional Modulo 43 checksum is added, Code 39 can approach the data integrity of more modern symbologies.

Across the military, automotive, healthcare, library, warehousing, and government sectors, Code 39 has demonstrated its value through decades of reliable service. Its simplicity enables easy integration into existing systems, and its flexibility supports a wide range of applications, from the high-stakes environment of a hospital operating room to the routine circulation desk of a public library.

The question of whether to use the optional checksum is answered differently in different industries. Military and healthcare applications, where the cost of a misread is highest, are more likely to adopt the checksum. Warehousing, asset tracking, and library applications, where the consequences of a misread are lower, often forgo the checksum in favor of simplicity. In all cases, the self-checking property provides a baseline level of error detection that has proven adequate in practice.

The technical requirements for successful Code 39 implementation---print quality, sizing, quiet zones, and scanner configuration---are well understood and documented. With proper attention to these factors, Code 39 barcodes can achieve high reliability even without a checksum.

In the end, the story of Code 39's checksum is a story of a symbology that has been shaped by the needs of its users. It has evolved from a pioneering alphanumeric code in the 1970s to an enduring standard in the twenty-first century, proving that sometimes the best solution is not the most complex one, but the one that best fits the practical realities of its application domain. For countless organizations around the world, the answer to 'Do I need a checksum' remains: 'No---but I can add one if I need to.'

 

EasierSoft Barcode Label Design & Bulk Printing Software

---- Use Excel Data to Batch Print Barcodes on Label Sheets or Roll Labels  

---- How to use this barcode software

Download:  Free Barcode Software + Barcode Label Designer

Download Free Barcode Software at Softonic

     Download at CNET

Once you obtain a GS1/UPC/EAN barcode, or other barcode type and QR code, you can use our free software to batch print barcode labels onto Roll label paper using a professional label printer, or to batch print barcodes onto Avery 5160 label sheets using a regular laser or inkjet printer. Our software has free and paid versions.

The free version fully meets your needs for batch printing GS1/UPC/EAN barcodes. The paid version can import data from Excel and databases to batch print barcode labels with different values.

How to Start

Input Data

Import Excel Data

Print Barcode

Barcode Format

Label Designer

All Screen Shot

Export Barcode Image

Save Template

Output Word Excel

How to Use & FAQ:

Label Designer

Edit data in Label designer

Label Designer - Add new label

Label Designer - Printing

Set the barcode label format to be printed

Other Barcode Label Format Settings

Barcode types supported by this program

Barcode Label Font Settings

Configuring the Barcode Print Rotation

Text Alignment for Barcode Labels

Automatically Adjusting Barcode Width

Text Beneath the Barcode

Configuring Barcode Size

Auto Calculate the Barcode Size

Export Barcode images

Export Barcode Image Format

File Names for Exported Barcode

Resolution of Exported Barcode Images

Fixed Folder for Exporting Barcode

Default Barcode Image Export Format

Print bulk barcodes quickly

Print barcodes to Avery 5160 label

How to bulk Barcode Printing

Sample - Avery 5162 (2x7) Label Sheet

Example: Print barcodes to 5*3cm roll

Example: Print barcodes to 5161 label

Example: Print barcodes to 5162 label

Example: Print barcodes to 5163 label

Example: Print barcodes to 5164 label

Example: Print portrait orientation 5164

Example: Print barcodes to 5167 label

Example: Print barcodes to 5168 label

Example: Print portrait orientation 5168

Example: Print barcodes to 5169 label

Example: Print barcodes to 5660 label

Example: Print barcodes to 5661 label

Example: Print barcodes to 5662 label

Example: Print barcodes to 5663 label

Example: Print barcodes to 5664 label

Example: Print portrait orientation 5664

Example: Print barcodes to 5873 label

Example: Print barcodes to 5874 label

Two ways to import Excel data

Import Excel Data - Pro Edition

Import Excel Data - Std Edition

Import Data from Excel - Detail

Load Data From Excel File

Data Editing Table

Copy Data From Excel

Four ways to input barcode data

Highlights

Excel integration: Import data directly from Excel to generate and print barcodes in bulk.

Label designer: Create complex labels with multiple barcodes, text, logos, and shapes.

Batch printing: Print thousands of barcodes at once using standard inkjet/laser printers or professional barcode printers.


Flexible editions:

Standard Edition: Simple batch printing with Excel data.

Professional Edition: Adds command-line automation for workflow integration.

Label Designer Edition: Advanced design features for complex labels.


Why Choose Our Barcode Solutions?

Cost-effective: Free online generator and permanent free desktop version available.

Easy to use: No technical expertise required—just input data and print.

Versatile: Supports nearly all 1D and 2D barcode types, including QR codes.

Trusted: Recommended by CNET and widely downloaded by users worldwide.


Suitable Use Cases

Small businesses and startups needing quick barcode labels for products.

Retailers and online sellers managing inventory with batch barcode printing.

Manufacturers requiring sequential or custom barcode labels for packaging.

Educational and testing environments where barcodes are used for tracking.

 

 

CONTACT

cs@easiersoft.com

If you have any question, please feel free to email us.

 

https://free-barcode.com

 

<<< Back to Directory <<<     Barcode Generator     Barcode Freeware     Privacy Policy