Code 93 Generator
Denser successor to Code 39 with full ASCII support via escape pairs; used in logistics.
How Code 93 is structured
Code 93 keeps Code 39's 43-character set but draws each character in nine modules with no gap between characters, so the same text prints noticeably narrower. Every symbol carries two check characters — C and K — after the data, and full ASCII is reached through four control characters that pair with a following letter to produce lowercase and the remaining punctuation.
Code 93 check digit
Both check characters are mandatory and both are modulo 47. C is the weighted sum of the data characters, weights 1 to 20 repeating from the right, reduced modulo 47; K repeats the same weighted sum over the data plus C, this time with weights 1 to 15 repeating. A reader validates both before returning the string, so there is no optional-check-digit ambiguity as in Code 39.
Code 93 compared with Code 39
Against Code 39, Code 93 is denser and always carries integrity checking, at the cost of wider reader support. Against Code 128, it is restricted to the 43-character base set with escapes for the rest, which makes it a niche choice for logistics networks standardised on the Code 39 look and feel. Compare the Code 39 generator page for the same breakdown of structure, check digit and use cases.
Common Code 93 problems
Lowercase data expands into extra characters
Each lowercase letter needs a control character plus the letter, so a mixed-case string prints longer than expected and older readers may not decode the pairs at all. Prefer uppercase data, or move to Code 128 for genuine mixed case.
Assuming a mod-43 check like Code 39
Code 93 uses two mod-47 check characters and they are not optional. Comparing a Code 39 check digit routine against a Code 93 symbol gives the wrong character every time, so use the symbology's own routine when validating a printed label.
Readers return the escape characters
Full ASCII decoding is a reader configuration. If the scanner reports, say, +A instead of a lowercase a, enable full ASCII Code 93 in its settings and re-test with a known mixed-case payload.
Where Code 93 is used
- Logistics and distribution labels where Code 39 is too wide
- Inventory and internal part marking with alphanumeric identifiers
- Systems that need always-on integrity checking without reader-side rules
Not sure this is the right symbology? The barcode format guide groups every supported 1D and 2D format by industry with its character set and limits.