What is the wide-to-narrow ratio?

A handful of older 1D symbologies - Code 39, LOGMARS, Codabar, the Interleaved 2 of 5 family including ITF-14 - encode data with only two element widths: a narrow element and a wide one. Every bar and every space is either one or the other. The wide-to-narrow ratio is the multiplier that says how much fatter the wide element is than the narrow.

The ratio is conventionally written 1:N where N is the wide-element multiplier. A 1:3 ratio means every wide bar or space is three times the width of a narrow one. So a symbol with a 10 mil X-dimension and a 1:3 ratio prints 10 mil narrow elements and 30 mil wide elements.

Why it matters

A scanner reading a two-width symbology doesn't measure absolute widths. It computes a running mean of the element widths it has seen so far in the symbol and classifies every subsequent element as "narrow" or "wide" depending on which side of the mean it falls. The decode succeeds when the population of narrow elements and the population of wide elements stay cleanly separated - i.e. there is a visible gap between the two clusters.

The bigger the ratio, the bigger that gap, and the more tolerance the scanner has for print growth, ribbon bleed, ink spread on porous media, and out-of-focus optics. A 1:2 symbol prints smaller but leaves much less margin; even mild ink gain can push a narrow element above the running mean and produce a misread. A 1:3 symbol takes about 25% more horizontal space but is dramatically more forgiving.

Wider ratio (1:3)
  • Bigger gap between narrow and wide populations
  • Tolerates ink spread, ribbon bleed, defocus
  • Recommended default for industrial and warehouse use
  • Costs ~25% more horizontal space than 1:2
Narrower ratio (1:2)
  • Compact - useful when label space is tight
  • Smaller gap; mild print gain causes misreads
  • Only permitted when X-dimension >= 20 mil (0.508 mm) per most specs
  • Avoid for thermal-transfer ribbons that fan out

Permitted values

The ISO/IEC and GS1 specifications converge on the same allowable band: a ratio anywhere between 2.0 and 3.0 (i.e. 1:2.0 to 1:3.0) is conformant, with 3.0 as the safe default for scannability. Some narrower ratios are allowed only above a minimum X-dimension threshold, because they only stay readable when the elements are large enough that print imperfections can't close the gap.

SymbologyPermitted rangeDefault / recommendedSpec
Code 391:2.0 - 1:3.0. 1:2.0-1:2.2 only when X >= 20 mil.1:3.0ISO/IEC 16388
LOGMARS (Code 39)1:2.2 - 1:3.01:3.0 (mandated for military labels)MIL-STD-1189B
Codabar1:2.25 - 1:3.0 when X < 20 mil; 1:2.0-1:3.0 when X >= 20 mil.1:3.0ANSI/AIM BC3
Interleaved 2 of 51:2.0 - 1:3.01:3.0ISO/IEC 16390
ITF-141:2.25 - 1:3.01:3.0 (GS1 specifies exactly 1:3 for ITF-14)GS1 GenSpec §5.4.4.3

Code 128, EAN/UPC, GS1-128, GS1 DataBar, and every 2D symbology do not have a wide-to-narrow ratio - they use four or more element widths (a "many-width" symbology) where the concept doesn't apply. Setting the ratio in a printer command that targets those symbologies is either ignored or silently rejected.

How printer command languages set the ratio

Every printer command language exposes the wide-to-narrow ratio as a global setting that applies to the next two-width barcode rendered. The ZPL parameter is the most familiar:

LanguageCommandParameterNotes
ZPL^BYr - the third fieldRange 2.0 - 3.0, default 3.0. e.g. ^BY3,2.5,100.
SBPL<ESC>BD (Code 39), <ESC>BG (ITF)Ratio prefix in the bar-width fieldWidth values 02-05 encode 1:2 through 1:5.
TSPLBARCODEBar-width pair (narrow,wide)Sets narrow and wide in dots directly; ratio = wide / narrow.
DPLFormat header bar-ratio fieldOne of 1.0-3.0 in steps of 0.1Applies to every two-width barcode in the format until reset.

When the ratio is set out of range, the printer firmware typically clamps to the nearest legal value rather than aborting the job - meaning the symbol still prints, but not the way the format author expected. Always set the ratio explicitly when targeting Code 39 / Codabar / I2of5.

Picking a ratio

  • Use 1:3 unless you have a reason not to. It is the spec default for every two-width symbology, the most forgiving across print methods, and it is what every quality verifier grades against by default.
  • Drop to 1:2.5 only to fit a constrained label. Test print on the actual media at the production speed before committing - thermal-transfer ribbons on cardboard often gain enough width to misread at 1:2.5.
  • Never go below 1:2.0. No conformant symbology permits it. A scanner that decodes the symbol anyway is doing so by luck.
  • ITF-14 is fixed at 1:3. GS1 specifies the exact ratio for ITF-14 on outer cases - it is not a knob to tune.

Key standards

Related