Standards/channel-code
Channel Code
Overview
Channel Code is a linear, continuous, self-checking, bidirectional 1D barcode symbology designed to encode short numeric strings — between two and seven digits — in the shortest possible space 12. It supports only the numeric digits 0–9 2 and requires no separate check character because it is self-correcting 2. Its design goal is maximum compactness for tiny print areas 12.
History
Channel Code was invented by Ted Williams and Andy Longacre in 1992 2. It is standardized as AIM BC12 — Uniform Symbology Specification: Channel Code (also referenced as ANSI/AIM BC12-1998 / USS Channel Code) 21.
Technical specification
-
Character set: numeric digits 0–9 only 2.
-
Compactness principle: rather than assigning each digit its own pattern, Channel Code encodes the entire numeric value as a single combinatorial arrangement within a fixed number of "channels," allowing very short symbols 2.
-
Channels 3–8: six symbol sizes are defined, called channels 3 through 8. The channel number equals one more than the number of digits encoded (e.g. channel 5 encodes four digits) 21. Each channel has a fixed value range:
Channel Digits Value range 3 2 0–26 4 3 0–292 5 4 0–3,493 6 5 0–44,072 7 6 0–576,688 8 7 0–7,742,862 -
Self-checking: the symbology is self-checking/self-correcting and needs no extra check character 2. (An optional check bar suffix is available in some implementations via an
includecheckoption 5.) -
Scanner attunement: a scanner must be set ("attuned") to the specific channel of the symbol it is reading; it is recommended to fix the channel so all relevant scanners use a matching setting 21.
-
Dimensions: the minimum bar height is 5.0 mm or 15 percent of the symbol length, whichever is greater 1.
Use cases
Channel Code is intended for situations demanding the smallest possible symbol footprint for a short numeric value — i.e. very small or constrained print areas where a conventional numeric barcode would not fit 12. Its self-checking, no-check-character design and tight value ranges make it suited to compact serial/sequence numbering rather than general-purpose labelling.
Implementations
- BWIPP (postscriptbarcode) — PostScript, active 2026. Implements Channel Code via the
channelcodeencoder with optionsshortfinder(shortened finder pattern) andincludecheck(optional check-bar suffix), plusincludetextfor human-readable output 5. - zint — C, ~771 stars, active 2026. Lists Channel Code among its 50+ supported symbologies 3.
- bwip-js — JavaScript port of BWIPP, ~2.4k stars, active 2026; also supports Channel Code 3.
Comparison
- Channel Code vs. other compact numeric codes: unlike Interleaved 2 of 5 or MSI, which add width per additional digit at a roughly constant rate, Channel Code packs a whole bounded numeric value into a single fixed-size channel symbol, achieving shorter symbols for small values 21.
- Self-checking without a check digit: whereas MSI is not self-checking and Code 11 relies on appended C/K check digits, Channel Code is inherently self-correcting and requires no check character 2.
- Trade-off: the gain in density comes at the cost of scanner channel-attunement requirements and strict per-channel value ceilings, limiting it to short, bounded numeric data 21.
Status
Channel Code is a specialized, niche symbology — uncommon in mainstream use but standardized (AIM BC12) and supported by current barcode-generation libraries (BWIPP, zint, bwip-js). It survives as the compact-numeric option of choice for very small print areas rather than as a general-purpose code 125.
Sources
1 Channel Code — Seagull Scientific Barcode Guide, accessed 2026. 2 Channel Code Barcode (ANSI/AIM BC12-1998) — Neodynamic, accessed 2026. 3 zint — A barcode encoding library — GitHub (zint/zint), accessed 2026. 4 Channel Code — Seagull Scientific (BarTender) help, accessed 2026. 5 Channel Code — BWIPP (postscriptbarcode) wiki, accessed 2026.
Deployments
No country reports mention this standard by name.
Regions / aggregations not mapped to a single country
- Universal