Chapter 17: The Space Between Characters |
In Brief: |
Code 39 encodes data using a pattern of wide and narrow bars and spaces, with each character separated by a deliberate gap known as the inter-character gap. This gap---a narrow space between characters---is a defining feature of the symbology, inherited from its discrete, character-by-character encoding structure. Unlike continuous symbologies that pack characters tightly together to maximize density, Code 39's inter-character gap adds physical length to every barcode, making it less space-efficient than modern alternatives like Code 128. However, this very feature, combined with Code 39's self-checking property, provides robustness against printing imperfections and decoding errors, which has sustained its adoption across industries---including U.S. defense, automotive manufacturing, healthcare, and logistics---where reliability and simplicity often outweigh the need for maximum data density. This chapter explores the technical nature of the inter-character gap, its practical implications, and how various industries have adapted to---and in some cases, benefited from---this distinctive characteristic of the Code 39 symbology. |

|
1. The Anatomy of the Gap: Understanding What Lies Between |
To understand why Code 39 includes an inter-character gap, we must first appreciate how the symbology encodes information at the most fundamental level. Code 39---also known as Code 3 of 9, Alpha39, or USD-3---is a discrete, variable-length barcode symbology standardized under ISO/IEC 16388 . It was introduced by Intermec Corporation in 1974, a time when barcode technology was still finding its footing in industrial applications . The name 'Code 3 of 9' derives from its encoding scheme: each character is represented by a pattern of nine elements---five bars and four spaces---of which exactly three are wide and the remaining six are narrow . This consistent ratio is what gives the symbology its name. |
The inter-character gap is the narrow space that separates one encoded character from the next. In technical specifications, this gap is defined as being at least one 'X' dimension wide---that is, the width of a narrow bar or space in the barcode . Importantly, this gap is not data-bearing; it serves purely as a delimiter, a visual and optical marker that tells the scanner where one character ends and the next begins. Because Code 39 is a discrete symbology, each character is independently encoded and self-contained. The inter-character gap is the silent 'space' that prevents characters from running together, ensuring that the scanner can reliably segment the barcode into its constituent symbols. |
This discrete nature contrasts sharply with continuous symbologies such as Code 128, where characters share inter-character spaces and the encoding is more compact. In a continuous barcode, there is no gap between characters; instead, the space that would otherwise be a separator is incorporated into the encoding of the next character, allowing for a higher density of information in a given physical space. Code 39's inter-character gap, by comparison, is a structural choice that prioritizes simplicity and error resistance over density. |

|
The Self-Checking Advantage |
The inter-character gap plays a supporting role in one of Code 39's most celebrated properties: self-checking. Because each Code 39 character consists of a specific pattern of wide and narrow elements, the symbology is designed such that a single printing defect---for example, a narrow bar that prints slightly too wide---cannot transform one valid character into another valid character . The barcode is said to be 'self-checking' because the decoder can verify each character independently; if a character's pattern does not match any valid Code 39 character, the decoder rejects it as an error. |
The inter-character gap contributes to this reliability by providing a clear demarcation between characters. Without this gap, the risk of misinterpreting the boundary between characters would increase, potentially leading to decoding errors. The gap ensures that each character is read as an isolated unit, allowing the self-checking logic to operate with maximum effectiveness. It is worth noting that while Code 39 does not mandate a check digit, its self-checking property is often cited as a reason why a check digit is optional, though many applications---including the U.S. military's LOGMARS specification---require a Modulo 43 check digit for added safety . |

|
The Wide-to-Narrow Ratio and Print Quality |
The inter-character gap is also intimately linked to the wide-to-narrow ratio---the relationship between the width of wide bars (or spaces) and narrow bars (or spaces). Typically, this ratio is specified as 2.5:1 to 3.0:1, though some implementations allow for a wider range . The gap, at a minimum of 1X, must be clearly distinguishable from the narrow spaces within characters. If the gap is too narrow, the scanner may interpret it as part of the preceding or following character; if the gap is too wide, the barcode becomes unnecessarily long. |
Print quality is crucial here. Slight ink spread during printing can narrow or widen the inter-character gap, potentially confusing the decoder. High-resolution printing---at least 300 DPI---is generally recommended to maintain consistent bar edge definition and ensure that the gap remains within specification . Scanners can be configured to handle larger-than-normal inter-character gaps (a feature known as 'Large Intercharacter Gap' in some readers), which can be helpful when reading symbols that are printed out of specification . However, enabling this feature can cause issues with narrow margins, where a large gap might be misinterpreted as part of the quiet zone . |

|
2. A Space Too Far: The Density Dilemma |
The most significant practical implication of the inter-character gap is its effect on data density. Code 39 is notoriously less dense than many other linear barcode symbologies, and the gap is a primary reason. |
Every character in a Code 39 barcode requires not only the nine elements (bars and spaces) that encode the character itself but also a following inter-character gap. For a barcode with ten characters, this means nine gaps---each at least 1X wide---are added to the overall length. In contrast, Code 128, a continuous symbology, eliminates these gaps, instead using the space between characters as part of the encoding for the next character. The result is that a 10-character Code 39 barcode is roughly 30 to 40 percent wider than an equivalent Code 128 barcode carrying the same information . |
This low density has practical consequences. For small items---such as tiny electronic components, medical vials, or jewelry---a Code 39 barcode may simply be too long to fit comfortably on the label. In such cases, a smaller X-dimension can be used (the minimum is typically 0.191mm or 7.5 mils), but there are practical limits below which printing and scanning become unreliable . The required quiet zones---the clear space on both sides of the barcode---also add to the overall footprint. Specifications generally require a quiet zone of at least 10 times the X-dimension on both ends . |
Despite this density challenge, Code 39 remains widely used. Its low density is acceptable---even desirable---in many industrial and tracking applications where the items being labeled are large enough to accommodate a longer barcode, and where the simplicity and robustness of the symbology are more important than the compactness of the code. A shipping container, a pallet of automotive parts, or a piece of military equipment can easily carry a Code 39 barcode of considerable length. The gap, in these contexts, is an acceptable price to pay for reliability. |
Variable Length Without a Check Digit |
Another feature of Code 39 that interacts with the inter-character gap is its variable length. Code 39 can encode any number of characters (within practical limits), without a mandatory check digit . This flexibility is advantageous in applications where the data length may vary, such as tracking numbers, serial numbers, or part numbers. |
The inter-character gap plays a subtle role here: because each character is discrete and self-contained, the barcode can be easily extended or shortened by adding or removing characters and their corresponding gaps. This modularity simplifies the implementation of Code 39 in inventory systems where item identifiers are not fixed-length. However, variable length without a check digit also introduces the risk of undetected substitution errors---a risk that is mitigated by the self-checking property but not entirely eliminated. For this reason, many organizations---including the Department of Defense---require a check digit to be appended to the data . |

|
3. The Gap in Practice: Industry Applications |
The inter-character gap, for all its theoretical implications, is ultimately a practical concern. How does this feature affect the use of Code 39 in the real worldThe answer varies by industry, but the common thread is that the gap is a manageable trade-off---one that has been accepted for decades because Code 39 delivers on its core promise: reliable, simple alphanumeric encoding. |
U.S. Defense: LOGMARS and MIL-STD-130 |
Perhaps the most famous adoption of Code 39 is in the U.S. Department of Defense, through the LOGMARS (Logistics Applications of Automated Marking and Reading Symbols) program. Beginning in 1981, the DoD mandated Code 39 for marking military assets, supplies, and equipment, a requirement that persists in various forms through specifications like MIL-STD-130 . |
In the defense context, the inter-character gap is a non-issue. Military equipment---from ammunition boxes to vehicle components---is typically large enough to accommodate even long Code 39 barcodes. What matters to the military is reliability: the barcode must be readable under harsh conditions, including exposure to dirt, moisture, and rough handling. The self-checking property, supported by the discrete character structure and the inter-character gap, ensures that the barcode remains readable even when partially damaged . A scratched bar or a smudged space is less likely to cause a misread because the decoder can independently verify each character. |
Moreover, the military often employs a Modulo 43 check digit to further reduce the risk of errors. The check digit is appended to the data and encoded as part of the barcode, adding to the overall length but providing an additional layer of security . The inter-character gap, in this context, is simply part of the package---a small structural price for a robust and battle-tested symbology. |

|
Automotive Manufacturing: AIAG Standards |
The automotive industry is another stronghold of Code 39, particularly through the standards set by the Automotive Industry Action Group (AIAG) . In automotive manufacturing, Code 39 barcodes are used to track parts and assemblies throughout the production process, from raw materials to finished vehicles . |
The inter-character gap here has practical implications for print quality and readability on metal and plastic parts. Automotive components are often exposed to oil, heat, and abrasion, and labels must withstand harsh environments. A wider inter-character gap---within specification---can help ensure that the barcode remains readable even if the label is slightly scuffed or the bars are partially obscured . Manufacturers may also choose to use a larger X-dimension to improve readability at a distance, which increases the overall length of the barcode but also makes the gap more visually distinct. |
One challenge in automotive manufacturing is the need to mark small components, such as fasteners and electronic sensors, which may not have sufficient space for a Code 39 barcode. In these cases, manufacturers often resort to other symbologies (like Data Matrix, a 2D code) or to smaller X-dimensions, which push the limits of printing and scanning technology. The inter-character gap, in these cases, is a limiting factor that forces designers to balance readability against available space. Yet, for larger parts and assemblies, Code 39 remains a workhorse, valued for its simplicity and universal support across legacy and modern scanning equipment. |

|
Healthcare: Reliability in Patient Safety |
The healthcare sector has historically been a heavy user of Code 39, particularly in applications involving patient identification, specimen tracking, and medication administration. The symbology's ability to encode alphanumeric characters (letters and numbers) is particularly valuable in healthcare, where patient identifiers, drug codes, and lot numbers often include both letters and numbers . |
In healthcare, the inter-character gap is both a blessing and a curse. On the one hand, the discrete nature of Code 39 ensures that a single printing defect---a common occurrence on wristbands, which are often printed on demand and worn in less-than-ideal conditions---is unlikely to cause a patient misidentification. The self-checking property, supported by the clear separation between characters, provides peace of mind in a safety-critical environment. On the other hand, patient wristbands are small, and the need to fit multiple barcodes (for patient ID, medication, and other data) can be challenging. The inter-character gap adds length that must be accommodated on a wristband that is already competing for space with patient name, date of birth, and other human-readable information. |
Many healthcare facilities have migrated to more compact symbologies---such as Code 128 or 2D codes like QR codes and Data Matrix---for patient wristbands. However, Code 39 remains in use for applications where legacy systems are entrenched, or where the specific requirements (alphanumeric encoding, no check digit required) align with the symbology's strengths. For instance, some laboratory specimen labels still use Code 39 because the labels are large enough to accommodate the barcode, and the reliability of Code 39 is well-established. |

|
Logistics and Warehousing: The Legacy of Simplicity |
In logistics and warehousing, Code 39 was a standard for decades, and it remains in use for many applications where items are large enough to carry the barcode and where legacy scanning infrastructure is still in place . The inter-character gap, in these settings, is less of a concern than the overall reliability of the barcode in dusty, dimly lit warehouse environments. |
For example, many warehouses still use Code 39 on shipping labels, pallet labels, and rack location labels. The barcodes are often printed at large sizes with a generous X-dimension, making them readable from a distance with hand-held scanners or even fixed-position scanners at conveyor belts. The inter-character gap, in this case, is a small price to pay for a symbology that is simple to generate (it can be printed using standard barcode fonts) and universally readable by almost any barcode scanner . |
However, the logistics industry has largely embraced more dense symbologies---particularly Code 128 and, increasingly, 2D codes---for new implementations. The Universal Postal Union, for example, recommends Code 128 over Code 39 for postal applications . The inter-character gap, as a contributor to Code 39's low density, is a factor in this shift. Yet, the installed base of Code 39 is so large that it will likely persist for decades in warehouses and distribution centers where switching to a new symbology would require significant investment in new hardware and software. |

|
Electronics Manufacturing: Precision and Space Constraints |
The electronics industry presents a particularly challenging environment for Code 39, primarily due to space constraints. Electronic components---printed circuit boards, connectors, sensors, and chips---are often tiny, leaving very little room for a barcode. The inter-character gap, which adds length to every barcode, is a significant drawback in this context. |
Nevertheless, Code 39 is still used in electronics manufacturing for tracking assemblies and components that are large enough to accommodate the barcode . For example, larger components like power supplies, displays, and enclosures often carry Code 39 labels for inventory tracking and quality control. The barcodes are typically printed at high resolution on durable labels that can withstand the heat and chemicals used in electronics manufacturing. |
For smaller components, electronics manufacturers have largely moved to 2D barcodes, particularly Data Matrix, which can encode large amounts of data in a tiny footprint. Data Matrix codes are not susceptible to the length constraints imposed by inter-character gaps because they are two-dimensional; they encode data in a matrix of cells, achieving high density in a small area. The shift to 2D codes in electronics manufacturing is a clear example of how the inter-character gap---and Code 39's low density more broadly---can be a decisive factor in the choice of symbology. |

|
Other Industries: Government, Postal, and Beyond |
Beyond the major industrial sectors, Code 39 has found applications in government, postal services, and various other domains. In the U.S. government, Code 39 is used for asset tracking, document management, and inventory control, reflecting the same reliability and simplicity that make it attractive to the military . Postal services in some countries have used Code 39 for tracking mail and packages, though many have migrated to Code 128 or other symbologies for better density and full ASCII support . |
In each of these applications, the inter-character gap is a constant factor. It is not something that users typically think about; it is simply part of how Code 39 works. Yet, the gap shapes the usability of the barcode in subtle ways. For example, when printing Code 39 on a label with limited space, the gap may force the designer to use a smaller X-dimension, which in turn reduces readability. Conversely, when printing on a large label, the gap may be so small relative to the overall size that it is barely noticeable. |

|
4. The Gap Through the Scanner's Eye: Decoding Challenges |
From the perspective of a barcode scanner, the inter-character gap is a critical feature that enables the decoding process. Scanners---whether laser-based or camera-based---rely on the gap to segment the barcode into individual characters. |
Laser Scanners |
A laser scanner reads a Code 39 barcode by sweeping a laser beam across the bars and spaces, measuring the width of each element and the spaces between them. The inter-character gap appears as a brief period of 'white' (reflected light) that is longer than the narrow spaces within a character but shorter than the quiet zone at the ends of the barcode. The scanner's decoder interprets this gap as a delimiter, signaling the end of one character and the beginning of the next. |
The decoder must distinguish between inter-character gaps (which are data-bearing in the sense that they separate characters) and the narrow spaces within characters. If the gap is too small, the decoder may merge adjacent characters; if the gap is too large, the decoder may interpret it as an extra character or as an error. Typical scanners can handle gaps up to about 3X without special configuration, but some can be configured to handle larger gaps . |
Imager-Based Scanners |
Modern imager-based scanners (which use cameras and image processing) have more flexibility in decoding Code 39 barcodes. They can capture the entire barcode as an image and use software algorithms to identify the bars, spaces, and gaps. These algorithms can tolerate a wider range of print quality variations, including variations in the inter-character gap. |
However, even imager-based scanners rely on the gap for proper segmentation. If the gap is not clearly distinguishable---for example, if the barcode is printed on a reflective surface or at low contrast---the decoder may struggle. This is why attention to print quality and material selection is essential for reliable Code 39 scanning, particularly in industrial environments where labels may be exposed to harsh conditions . |
Scanner Configuration |
Some scanners allow manual configuration of parameters related to the inter-character gap. For example, the 'Large Intercharacter Gap' setting enables a scanner to read Code 39 symbols where the gap exceeds 3X . This setting is useful when reading barcodes that are printed 'out of specification'---for example, on labels that have been stretched or distorted, or on materials where ink spread has widened the gap beyond normal limits. |
However, enabling this feature can cause problems. If the gap is too large, it may be mistaken for a narrow margin (the quiet zone), leading to false readings. Therefore, it is generally recommended to use this feature only when necessary and to test the scanner configuration with actual barcodes to ensure reliable decoding . |

|
5. The Future of the Gap: Code 39 in a World of Dense Codes |
As technology continues to advance, the role of Code 39---and its inter-character gap---is evolving. Newer symbologies offer higher density, full ASCII support, and error correction, making them attractive for many applications. Yet, Code 39 remains relevant in legacy systems and in applications where simplicity and reliability are paramount. |
The Rise of Code 128 and 2D Codes |
Code 128, introduced in 1981, is a continuous symbology that eliminates the inter-character gap, achieving significantly higher density than Code 39. It supports all 128 ASCII characters, making it more versatile for encoding data that includes lowercase letters, special characters, and control codes. Code 128 has largely superseded Code 39 in many applications, particularly in retail, logistics, and healthcare, where space is at a premium and data requirements are more demanding . |
Two-dimensional barcodes---such as Data Matrix, QR Code, and PDF417---have further expanded the possibilities, offering even higher density and the ability to encode large amounts of data, including images and URLs. These codes are increasingly common in industries like electronics manufacturing, healthcare, and consumer goods, where small labels must carry large amounts of information. |

|
Code 39 Extended and Full ASCII |
For applications that require full ASCII support but must remain within the Code 39 ecosystem, the Extended Code 39 variant uses pairs of standard Code 39 characters to encode the full 128-character ASCII set . This effectively doubles the length of the barcode, making the density issue---and by extension, the inter-character gap---even more pronounced. Extended Code 39 is rarely used in new implementations but is available for compatibility with legacy systems that cannot read other symbologies. |
The Enduring Appeal of Simplicity |
Despite the competition from denser symbologies, Code 39 has enduring appeal. Its simplicity is its greatest strength: it is easy to understand, easy to generate (it can be printed with a barcode font on almost any printer), and easy to read with a wide range of scanners . In many industries, the investment in Code 39-based systems is so large that switching to another symbology is not economically viable. The inter-character gap, for all its density implications, is a minor inconvenience compared to the cost of retooling an entire production line. |
In addition, Code 39's self-checking property and lack of a mandatory check digit make it flexible and reliable in environments where data integrity is important but not critical. For many industrial and governmental applications, the risk of a misread is low enough that the simplicity of Code 39 outweighs the benefits of a denser symbology. |

|
A Gap That Matters |
The space between characters in Code 39 is more than just a technical detail; it is a reflection of the symbology's history, its design principles, and its practical trade-offs. For over five decades, the inter-character gap has been a constant companion to Code 39, shaping its application across industries. While the gap has its drawbacks---most notably, the reduced data density---it has also contributed to the symbology's robustness and reliability. |
In the end, the inter-character gap is a reminder that barcode design is not merely about maximizing data density, but about balancing a range of factors: reliability, simplicity, compatibility, and cost. Code 39, with its distinctive gap, has achieved a balance that has proven remarkably durable in a rapidly changing technological landscape. As we move toward a future of even denser and more capable codes, the gap will remain a symbol of an era when barcodes were first breaking new ground in automation and tracking---a small, silent space that speaks volumes about the trade-offs and priorities of early barcode design. |

|
Chapter Summary |
This chapter has explored the inter-character gap in Code 39---its technical definition, its role in the encoding process, and its practical implications for various industries. Key takeaways include: |
Definition and Purpose: The inter-character gap is a narrow space (at least 1X wide) that separates characters in Code 39. It serves as a delimiter, helping scanners segment the barcode into individual characters. Because Code 39 is a discrete symbology, each character is encoded independently, and the gap is essential for accurate decoding. |
Self-Checking Property: The gap supports Code 39's self-checking property by providing clear character boundaries. A single printing defect is unlikely to transform one valid character into another, reducing the risk of undetected errors. This property is a key reason why Code 39 does not require a mandatory check digit, though many applications use one for added safety. |
Density Limitations: The inter-character gap contributes to Code 39's low data density. A 10-character Code 39 barcode is roughly 30-40% wider than an equivalent Code 128 barcode. This limits Code 39's use on small items but is acceptable in applications where space is not a constraint. |
Industry Applications: Code 39 remains widely used in the U.S. military (LOGMARS, MIL-STD-130), automotive manufacturing (AIAG standards), healthcare (patient identification, specimen tracking), logistics and warehousing, and electronics manufacturing. In each of these industries, the inter-character gap is a manageable trade-off that is outweighed by Code 39's reliability, simplicity, and universal readability. |
Scanner Configuration: The gap is a critical factor in scanner configuration. Some scanners include a 'Large Intercharacter Gap' setting for reading symbols printed out of specification, but this setting must be used cautiously to avoid misreading quiet zones. |

|
Future Outlook: Code 39 faces competition from denser symbologies like Code 128 and 2D codes. However, its simplicity and the vast installed base of legacy systems ensure that it will remain in use for decades to come. The inter-character gap will continue to be a defining feature of this iconic symbology. |
The inter-character gap, though often overlooked, is a central element of Code 39's design and functionality. It embodies the symbology's historical roots and its enduring role in industrial and governmental applications---a small space that makes a significant difference in the real world. |