Skip to content
barcoder

Standards/itf

ITF

Type1D Linear
Completeness89%high

Overview

Interleaved 2 of 5 (ITF) is a high-density numeric-only 1D linear barcode symbology invented by David Allais in 1972 [1, 2]. Standardised as ISO/IEC 16390:2007 [3], it encodes pairs of digits by interleaving the bars and spaces — each character's bars carry one digit, the spaces between bars carry the next, giving roughly twice the density of numeric-only code-39 [1]. The GS1-managed variant ITF-14 is the canonical shipping-carton barcode carrying 14-digit GTINs on outer corrugated packaging [4].

ITF is the prolific creation of David Allais — who also invented code-39 (1974), Code 11, code-93, Code 49, and contributed to code-128 (1981) [2]. ITF predates all of his other inventions and remains in active use 50+ years later on essentially every shipping carton in the global supply chain.

History

1972 — David Allais invents Interleaved 2 of 5 [1, 2]: Allais, then at Identicon Corp. (later folded into Intermec), designed ITF specifically for numeric-only high-density encoding on shipping cartons. The "2 of 5" naming refers to the symbology rule: each digit is encoded as 5 elements (bars or spaces) of which exactly 2 are wide.

The "Interleaved" innovation [1]: Earlier "2 of 5" symbologies (Standard 2 of 5, IATA 2 of 5) encoded one digit per character, with bars carrying the data and inter-character spaces being non-data padding. Allais's insight: interleave the digits so the bars of one character and the spaces between encode two adjacent digits simultaneously. This packs two digits into the same horizontal space previously holding one — roughly doubling density.

Early 1980s — UCC adoption for shipping cartons [1, 5]: The Uniform Code Council (now [gs1-databar-ref]'s parent GS1) formally adopted ITF for shipping container labels in the grocery industry. The variant ITF-14 (14-digit fixed length) became the canonical GTIN-14 carrier for outer shipping cartons.

ITF-14 specification [4]: GS1's only authorised use of Interleaved 2 of 5. Encodes a 14-digit GTIN (Global Trade Item Number — the umbrella identifier covering UPC-A, EAN-13, and supply-chain-level codes). Printed directly on cardboard packaging or applied as a label.

2007 — ISO/IEC 16390:2007 [3]: Formal international standardisation. Defines bar / space patterns, encoding rules, dimensions, decoding algorithms, application parameters.

Variants with check-digit additions [1]: Identcode and Leitcode are German Deutsche-Post-specific variants of ITF with mandatory check digits — used for postal-sorting barcoding in Germany.

Technical specification

ITF is a continuous, numeric-only, even-number-of-digits 1D linear symbology [1, 3]:

Parameter Value
Symbology family 1D linear
Character set Digits 0–9 only
Length Variable, must be EVEN (always pairs of digits)
Elements per pair 5 bars + 5 spaces (10 elements total)
Wide elements per pair 2 wide of 5 bars + 2 wide of 5 spaces
Bidirectional reading Yes
Quiet zone 10 × narrow-element width on each side
Check digit Optional in general ITF; mandatory in ITF-14 (modulo-10)
Encoding method Interleaved — bars carry one digit, intervening spaces carry the next

Interleaving structure [1]:

Digit pair "47":
  Bars (4) → narrow, wide, narrow, narrow, wide      = encodes "4"
  Spaces (7) → narrow, narrow, wide, wide, narrow    = encodes "7"

The two digits are encoded simultaneously across the 5 bars and 5 spaces — neither digit can be decoded without the other. This is structural to ITF's name and to its density advantage over Code 39.

ITF-14 specifically [4]:

  • Fixed 14 digits (the GS1 GTIN-14 format)
  • Check digit at position 14 (modulo-10 weighted by 3, 1, 3, 1, …)
  • Bearer bars required — heavy black bars above and below the symbol to protect against printing imperfections at edges
  • Quiet zone larger than general ITF (to accommodate carton-print conditions)

Density advantage [1]: For numeric-only encoding, ITF is ~2x denser than code-39 and ~30 % denser than ean-13/upc-a at the same module width. This makes ITF ideal for shipping cartons where space is at a premium and the data is always numeric (GTINs, weights, batch numbers).

Disadvantage: Numeric-only restriction means ITF cannot encode alphabetic characters at all — for alphanumeric supply-chain data (e.g., serial numbers with letters), code-128 / GS1-128 is the standard alternative.

Use cases

ITF's primary use case is shipping-carton barcoding for outer corrugated packaging [1, 4, 5]:

  • ITF-14 on shipping cartons — the most prolific deployment. Every commercial pallet's outer carton with a GTIN-14 carries ITF-14. Used by retailers, manufacturers, distributors globally for case-level identification.
  • Outer packaging in the grocery, pharmaceutical, and consumer-goods supply chains — the case-level identifier above retail-pack-level ean-13/upc-a.
  • Postal sorting (Germany — Identcode and Leitcode) — Deutsche Post variants of ITF for mail piece tracking and routing.
  • Container shipping labels — alongside code-128 for additional structured data.
  • Air cargo — IATA-related logistics carry ITF on freight labels.
  • Automotive parts cartons — outer-pack identification for parts shipped from suppliers to assembly plants.
  • Library back-of-book inventory — older library systems use ITF for accession-number encoding.
  • Photo processing — film canisters and order envelopes historically used ITF for batch tracking.

Why ITF dominates outer-carton labelling [1, 4]:

  • Highest 1D density for numeric data — fits longer GTINs in less printable width than alternatives.
  • Easy to print directly on corrugated cardboard — the simple bar-and-space pattern survives printing on rough carton surfaces.
  • Universal scanner support — every commercial scanner reads ITF.
  • GS1-mandated for case-level GTIN-14 encoding (ITF-14 variant).
  • Public domain — no licensing fees.

Implementations

ITF has universal scanner and library support — older than nearly every other actively-used symbology [6]:

  • Java + many portszxing/zxing — 34 000★, active 2025. Decodes ITF alongside Code 128, UPC, EAN, QR, Aztec, Data Matrix.
  • C / C++libzint (Zint barcode generator); zbar (decoder).
  • Pythonpython-barcode, treepoem, pyzbar.
  • PHPpicqer/php-barcode-generator.
  • JavaScriptJsBarcode, bwip-js.
  • C# / .NETZXing.Net, Aspose.BarCode, Dynamsoft Barcode Reader (commercial).
  • OS-level mobile — iOS AVFoundation, Android CameraX / ML Kit all decode ITF natively.
  • Industrial / supply-chain scanners — every commercial 1D scanner reads ITF (NCR, Datalogic, Honeywell, Symbol/Zebra, Cognex, Diebold). Universal hardware support.
  • Mobile SDKs — Scanbot, Scandit, Anyline, Dynamsoft.
  • Thermal printer firmware — Zebra, Honeywell, SATO, TSC, Brother all support ITF / ITF-14 directly from their command languages (ZPL, EPL, etc.) — especially important for warehouse case-label printing.

Reference documentation [3, 4]:

Comparison

vs. code-39 — Both 1D symbologies invented in the early 1970s by David Allais. Code 39 is alphanumeric (43-character set), ITF is numeric-only. ITF is ~2x denser than Code 39 for numeric data. Where the data is numeric only (GTINs, weights, batch IDs), ITF wins on density; where letters are needed, Code 39 wins on capability. Both Allais inventions; complementary niches [code-39-ref].

vs. code-128 (and GS1-128) — Both encode supply-chain data. Code 128 is alphanumeric (full ASCII) and ~5.5 modules/character vs ITF's ~7 modules/digit-pair. For numeric-only data, ITF is slightly denser; for any alphanumeric data, Code 128 wins. GS1-128's Application Identifier framework lets one symbol carry GTIN + batch + expiry + weight; ITF-14 carries only the GTIN-14 (other AIs go in adjacent Code 128 symbols). The two are deployed alongside each other on most shipping carton labels [code-128-ref].

vs. ean-13 / upc-a — Both numeric retail barcodes, but different deployment levels. EAN-13 / UPC-A are item-level (one symbol per retail product); ITF-14 is case-level / pallet-level (one symbol per shipping carton, encoding the GTIN-14 that contains the case-level GTIN). The GS1 GTIN hierarchy stacks: item = GTIN-12/13, case = GTIN-14 [ean-13-ref, upc-a-ref].

vs. gs1-databar — GS1 DataBar is the modern multi-AI-capable 1D linear alternative GS1 has been promoting since 2011 for retail and supply chain. DataBar can carry GTIN + variable measure + batch in a single symbol; ITF-14 carries only the GTIN-14. DataBar adoption has been slow in the case-level segment where ITF-14's installed-base scanner support is total [gs1-databar-ref].

vs. data-matrix (specifically GS1 DataMatrix) — 2D alternative carrying same GS1 application identifiers as GS1-128. GS1 DataMatrix is encroaching on the GS1-128 + ITF-14 traditional split for some case-level applications, particularly in pharmaceutical packaging where serialisation requires GTIN + serial + lot + expiry in a single small symbol [data-matrix-ref].

Fun facts

David Allais invented Interleaved 2 of 5 in 1972, two years before he invented code-39 in 1974 [2] — making ITF his first major barcode contribution. Allais's career spans almost every major 1D symbology of the 1970s–80s: ITF (1972), Code 39 (1974), Code 11 (1977), code-93 (1982), Code 49 (1987), plus contributions to code-128 (1981). The "AIDC Founders" recognition lists Allais alongside the very small number of individuals whose technical decisions shaped the entire global barcode infrastructure.

ITF-14 is on essentially every shipping carton in the global commercial supply chain [4] — billions of cartons annually, each with at least one ITF-14 symbol. Compared with ean-13's "most-printed barcode" claim at item level, ITF-14's claim is "most-printed barcode at case level" — different supply-chain segments, comparable scale.

The even-number-of-digits requirement [1] is one of ITF's structural quirks. Because each character encoding interleaves two digits across 5 bars + 5 spaces, you can't encode 1 digit alone — only pairs. ITF symbols always carry an even count of digits. For odd-count payloads, a leading zero is prepended.

The Deutsche Post variants Identcode and Leitcode [1] are interesting national specialisations — Germany's national postal service standardised on ITF-with-required-check-digit variants for mail-piece tracking and sorting. Most other national postal services adopted code-128 / pdf417 / or proprietary alternatives; Germany stuck with ITF heritage. The structural reason: Deutsche Post's automated sortation equipment was built around ITF scanners in the 1980s, and migration cost has prevented replacement.

Photo processing labs in the 1990s–2000s [1] were one of ITF's quirky deployments — film canisters and processing-order envelopes carried ITF for batch tracking through the developing-and-printing workflow. As digital photography displaced film, this use case shrank to near-zero, but the example illustrates how a foundational symbology finds applications in unexpected sectors that follow its early adopters.

Status

Active, foundational, slowly being displaced in some niches [1, 3]:

  • ISO/IEC 16390:2007 is the current spec — stable for ~20 years
  • GS1 ITF-14 continues as the canonical shipping-carton GTIN-14 encoding
  • Universal scanner support continues across all commercial scanners
  • Public domain — no licensing fees

Strategic context:

  • code-128 / GS1-128 is preferred for new supply-chain applications requiring alphanumeric data or multiple GS1 Application Identifiers in one symbol.
  • gs1-databar is GS1's modern multi-AI 1D linear alternative; adoption has been slow at case level.
  • data-matrix (GS1 DataMatrix) is encroaching on pharmaceutical case-level marking for serialisation requirements.
  • For pure GTIN-14 encoding on outer corrugated packaging, ITF-14 remains the canonical default because of its density-on-cardboard advantage and total installed-base support.
  • No deprecation planned; ISO continues to maintain the standard.

Sources

  1. Interleaved 2 of 5 — Wikipedia
  2. David Allais — Wikipedia
  3. ISO/IEC 16390:2007 — Interleaved 2 of 5 specification
  4. ITF-14 — GS1 standards
  5. Interleaved 2 of 5 (ITF-14) Barcode FAQ — BarcodeFAQ
  6. zxing/zxing — GitHub
  7. What is Interleaved 2 of 5 — Cognex
  8. Interleaved 2 of 5 (ITF) — Scandit

Deployments

No country reports mention this standard by name.

Regions / aggregations not mapped to a single country

  • Universal
source · docs/standards/itf/index.md