# ITF

> Source: https://docs.barcoder.ai/docs/standards/itf
> research date 2026-05-29 · extracted at 2026-10-03
> Publisher: Barcoder — encyclopedia of QR, barcode and payment-code standards

Specifications:
- [ISO/IEC 16390:2007 — Interleaved 2 of 5 bar code symbology specification](https://www.iso.org/standard/43897.html)
- [Interleaved 2 of 5 — Wikipedia](https://en.wikipedia.org/wiki/Interleaved_2_of_5)
- [ITF-14 — GS1](https://www.gs1.org/standards/barcodes/itf-14)

## Overview

**Interleaved 2 of 5 (ITF)** is a **high-density numeric-only 1D linear barcode symbology** invented by **David Allais in 1972** <sup>[1][1], [2][2]</sup>. Standardised as **ISO/IEC 16390:2007** <sup>[3][3]</sup>, 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](https://docs.barcoder.ai/docs/standards/code-39)** <sup>[1][1]</sup>. The GS1-managed variant **ITF-14** is the canonical **shipping-carton barcode** carrying 14-digit GTINs on outer corrugated packaging <sup>[4][4]</sup>.

ITF is the prolific creation of **David Allais** — who also invented [Code 39](https://docs.barcoder.ai/docs/standards/code-39) (1974), Code 11, [Code 93](https://docs.barcoder.ai/docs/standards/code-93), Code 49, and contributed to [Code 128](https://docs.barcoder.ai/docs/standards/code-128) (1981) <sup>[2][2]</sup>. 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** <sup>[1][1], [2][2]</sup>: 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** <sup>[1][1]</sup>: 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** <sup>[1][1], [5][5]</sup>: 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** <sup>[4][4]</sup>: 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** <sup>[3][3]</sup>: Formal international standardisation. Defines bar / space patterns, encoding rules, dimensions, decoding algorithms, application parameters.

**Variants with check-digit additions** <sup>[1][1]</sup>: **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** <sup>[1][1], [3][3]</sup>:

| 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** <sup>[1][1]</sup>:
```
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** <sup>[4][4]</sup>:
- **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** <sup>[1][1]</sup>: For numeric-only encoding, ITF is **~2x denser than [Code 39](https://docs.barcoder.ai/docs/standards/code-39)** and **~30 % denser than [EAN-13](https://docs.barcoder.ai/docs/standards/ean-13)/[UPC-A](https://docs.barcoder.ai/docs/standards/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](https://docs.barcoder.ai/docs/standards/code-128) / GS1-128 is the standard alternative.

## Use cases

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

- **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](https://docs.barcoder.ai/docs/standards/ean-13)/[UPC-A](https://docs.barcoder.ai/docs/standards/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](https://docs.barcoder.ai/docs/standards/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** <sup>[1][1], [4][4]</sup>:
- **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 <sup>[6][6]</sup>:

- **Java + many ports** — [zxing/zxing][6] — 34 000★, active 2025. Decodes ITF alongside Code 128, UPC, EAN, QR, Aztec, Data Matrix.
- **C / C++** — `libzint` (Zint barcode generator); `zbar` (decoder).
- **Python** — `python-barcode`, `treepoem`, `pyzbar`.
- **PHP** — `picqer/php-barcode-generator`.
- **JavaScript** — `JsBarcode`, `bwip-js`.
- **C# / .NET** — `ZXing.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** <sup>[3][3], [4][4]</sup>:
- [ISO/IEC 16390:2007][3] — formal symbology specification.
- [GS1 ITF-14 standard][4] — defines the GTIN-14 application of ITF for shipping cartons.

## Comparison

**vs. [Code 39](https://docs.barcoder.ai/docs/standards/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](https://docs.barcoder.ai/docs/standards/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](https://docs.barcoder.ai/docs/standards/ean-13) / [UPC-A](https://docs.barcoder.ai/docs/standards/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](https://docs.barcoder.ai/docs/standards/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](https://docs.barcoder.ai/docs/standards/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](https://docs.barcoder.ai/docs/standards/code-39) in 1974** <sup>[2][2]</sup> — 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](https://docs.barcoder.ai/docs/standards/code-93) (1982), Code 49 (1987), plus contributions to [Code 128](https://docs.barcoder.ai/docs/standards/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** <sup>[4][4]</sup> — billions of cartons annually, each with at least one ITF-14 symbol. Compared with [EAN-13](https://docs.barcoder.ai/docs/standards/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** <sup>[1][1]</sup> 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** <sup>[1][1]</sup> 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](https://docs.barcoder.ai/docs/standards/code-128) / [PDF417](https://docs.barcoder.ai/docs/standards/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** <sup>[1][1]</sup> 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** <sup>[1][1], [3][3]</sup>:

- **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](https://docs.barcoder.ai/docs/standards/code-128) / GS1-128 is preferred for new supply-chain applications requiring alphanumeric data or multiple GS1 Application Identifiers in one symbol.
- **[GS1 DataBar](https://docs.barcoder.ai/docs/standards/gs1-databar)** is GS1's modern multi-AI 1D linear alternative; adoption has been slow at case level.
- **[Data Matrix](https://docs.barcoder.ai/docs/standards/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]: https://en.wikipedia.org/wiki/Interleaved_2_of_5
[2]: https://en.wikipedia.org/wiki/David_Allais
[3]: https://www.iso.org/standard/43897.html
[4]: https://www.gs1.org/standards/barcodes/itf-14
[5]: https://www.barcodefaq.com/1d/interleaved-2of5/
[6]: https://github.com/zxing/zxing
[7]: https://www.cognex.com/en/tools-and-resources/resource-center/interleaved-2-of-5-barcodes-what-they-are-and-how-they-work
[8]: https://www.scandit.com/products/barcode-scanning/symbologies/interleaved-two-five-itf/
[code-39-ref]: https://docs.barcoder.ai/source/standards/code-39
[code-128-ref]: https://docs.barcoder.ai/source/standards/code-128
[ean-13-ref]: https://docs.barcoder.ai/source/standards/ean-13
[upc-a-ref]: https://docs.barcoder.ai/source/standards/upc-a
[gs1-databar-ref]: https://docs.barcoder.ai/source/standards/gs1-databar
[data-matrix-ref]: https://docs.barcoder.ai/source/standards/data-matrix

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

## Deployments

_No country reports mention this standard by name._

## Regions / aggregations not mapped to a single country

- Universal
