Code 93 Barcode: Complete Guide to High-Density Alphanumeric Encoding

Learn about Code 93 barcodes, a compact alternative to Code 39 with higher data density and built-in error checking. Covers technical structure, encoding, and use cases.

Code 93 was designed with a specific goal: pack more data into less space than Code 39 while keeping the same alphanumeric character set. Developed by Intermec in 1982, it achieved roughly 40% higher density through a more efficient encoding scheme and continuous bar patterns. The result is a compact, reliable linear barcode that fills the gap between Code 39's simplicity and Code 128's full flexibility.

What is Code 93?

Code 93 is a variable-length, continuous linear barcode symbology that encodes alphanumeric data at higher density than Code 39. The name follows the convention of Code 39 — each character is encoded using 9 modules, but only 3 of those are bars (the rest are spaces). Unlike Code 39's discrete character patterns separated by gaps, Code 93 uses continuous encoding where characters share boundaries, eliminating inter-character gaps and saving space.

The symbology supports the same base character set as Code 39: uppercase A-Z, digits 0-9, and seven special characters. It extends this to the full 128-character ASCII set using four shift characters that pair with base characters. Two mandatory check digits provide error detection that exceeds Code 39's self-checking capability.

Code 93 occupies a niche between Code 39 and Code 128 in the barcode landscape. It's more compact than Code 39 but doesn't match Code 128's density for pure numeric data or its native full-ASCII support without shift characters. Its primary value is providing better space efficiency for alphanumeric data while maintaining a structural similarity to Code 39 that made it an easy transition for existing systems.

Technical Structure

Each Code 93 character is encoded as 3 bars and 3 spaces within a fixed-width pattern of 9 modules. The key structural difference from Code 39 is the elimination of inter-character gaps — bars and spaces flow continuously from one character to the next.

Start/Stop Pattern: A unique pattern marks the beginning and end of every Code 93 barcode. Unlike Code 39's asterisk, the Code 93 start/stop pattern is a single non-data character that isn't part of the 47-character set. The stop pattern is followed by a termination bar (single module-width bar) that provides the scanner a clean end signal.

Data Characters: The 47-character set assigns each character a unique 9-module pattern. Character values range from 0 to 46, used in check digit calculation.

Shift Characters: Four shift characters extend the set to full ASCII:

  • ($) shifts to values 128-154 (control characters and lowercase)
  • (%) shifts to values 155-181 (additional control characters)
  • (/) shifts to values 182-207 (special symbols)
  • (+) shifts to values 208-232 (lowercase letters)

Each extended character requires two Code 93 modules: the shift character followed by a base character. This doubles the space for extended characters but avoids adding complexity to the core symbology.

Check Characters (C and K): Two mandatory check characters follow the data. The C check character is calculated using a weighted modulo 47 algorithm with weights cycling from 1 to 20. The K check character uses the same algorithm applied to the data plus the C character, with weights cycling from 1 to 15.

This dual check digit system catches more error types than Code 39's optional single check digit, including transposition errors that single check digits can miss.

Density Comparison

Code 93's density advantage over Code 39 comes from three factors:

No Inter-Character Gaps: Code 39 requires narrow gaps between each character. Code 93 eliminates these gaps through continuous encoding, saving roughly one module width per character.

More Efficient Module Use: While both use 9 modules per character, Code 93's continuous structure allows for more distinct patterns without the wide/narrow binary constraint of Code 39.

Consistent Module Width: Code 93 uses a uniform module width throughout, while Code 39 relies on wide-to-narrow ratios that increase minimum barcode width.

In practice, a Code 93 barcode is about 40% narrower than a Code 39 barcode encoding the same data. For a 10-character alphanumeric string, this can mean the difference between fitting on a label and not fitting. However, Code 93 still can't match Code 128's density for numeric-heavy data, where Code 128's double-density numeric mode pulls ahead.

DataCode 39 WidthCode 93 WidthCode 128 Width
"ABC123"~38mm~23mm~22mm
"1234567890"~50mm~31mm~18mm
"WAREHOUSE-A"~57mm~34mm~32mm

Approximate widths at 0.25mm X-dimension

Applications

Postal Services

Canada Post adopted Code 93 for its postal automation systems. The barcode encodes routing information on mail pieces, enabling automated sorting equipment to process letters and packages efficiently. The density advantage over Code 39 matters on small mail pieces where label space is constrained.

Electronic Component Labeling

Small electronic components need compact barcodes for tracking through manufacturing and distribution. Code 93 fits alphanumeric part numbers and serial numbers into the limited space available on component packaging and circuit board labels.

Logistics and Warehousing

Shipping labels and warehouse location codes sometimes use Code 93 when the data is alphanumeric and label space is tight. While Code 128 is more common in modern logistics, some warehouse management systems adopted Code 93 during the 1980s and 1990s and continue using it.

Inventory and Asset Tracking

Companies tracking internal assets (equipment, tools, IT hardware) use Code 93 on asset tags. The alphanumeric encoding handles mixed asset ID formats, and the compact size fits small adhesive labels applied to devices.

Implementation

When you generate Code 93 barcodes, the encoding software handles check digit calculation and module pattern selection automatically. Focus on these implementation details:

X-Dimension: The minimum X-dimension for Code 93 is 0.19mm (7.5 mil) for general applications. Most practical implementations use 0.25mm to 0.50mm depending on printing method and expected scanning distance. Thermal transfer printers produce reliable results at 0.25mm, while inkjet printing may need 0.38mm or larger.

Barcode Height: Maintain a minimum height of 5mm or 15% of the symbol length, whichever is greater. Taller barcodes improve first-read rates, especially with moving or angled scans.

Quiet Zones: A minimum of 10X (10 times the X-dimension) is required on each side of the barcode. This blank space lets scanners distinguish the barcode from surrounding print.

Print Contrast: High contrast between bars and background is critical. Black bars on white background provides maximum reliability. If using colored substrates, test scanning performance before production. Avoid red or orange backgrounds with laser scanners.

Code 93 vs. Code 128

For new implementations, the choice between Code 93 and Code 128 typically favors Code 128:

FeatureCode 93Code 128
Density (alpha)GoodSimilar
Density (numeric)GoodBetter (double-density mode)
Character setFull ASCII (via shifts)Full ASCII (native)
Check digits2 mandatory (mod 47)1 mandatory (mod 103)
Industry adoptionModerateVery high
Scanner supportGoodUniversal

Code 93 wins when you need backward compatibility with existing Code 93 infrastructure or when your industry standard specifies it. Code 128 wins in nearly every other scenario — it's more widely supported, handles numeric data more efficiently, and encodes full ASCII without shift characters.

Limitations

Limited Adoption: While Code 93 is a well-designed symbology, it never achieved the widespread adoption of Code 39 or Code 128. This means fewer software libraries, less documentation, and potentially more effort to integrate with existing systems.

No Data Structure Support: Like Code 39, Code 93 carries raw data without built-in structure. For applications needing standardized data fields (product codes, dates, lot numbers), GS1-128 provides Application Identifier structures that enable automated parsing.

Linear Only: Code 93 is a one-dimensional barcode with limited data capacity. For applications requiring more than 20-30 characters, consider 2D options like Data Matrix or QR codes.

Despite these limitations, Code 93 serves its niche well. It's a reliable, compact barcode format with strong error detection, and it remains the right choice for systems already built around it.

7 min read

Frequently Asked Questions

What is the difference between Code 93 and Code 39?
Code 93 is about 40% more compact than Code 39 for the same data, encodes the full ASCII character set natively, and requires two mandatory check digits. Code 39 is simpler, self-checking, and more widely adopted in legacy systems.
What characters can Code 93 encode?
Code 93 natively encodes 47 characters: uppercase A-Z, digits 0-9, space, dash, period, dollar sign, forward slash, plus, and percent. Full ASCII Code 93 extends this to all 128 ASCII characters using four shift characters.
Where is Code 93 used?
Code 93 is used primarily in logistics, postal services (including Canada Post), and electronic component labeling. It appears in applications that need higher density than Code 39 but don't require the full flexibility of Code 128.
Does Code 93 require check digits?
Yes. Code 93 uses two mandatory check characters (called C and K) calculated using a weighted modulo 47 algorithm. These provide stronger error detection than Code 39's optional single check digit.