Standards/codablock-f
Codablock-F
Overview
Codablock-F is a two-dimensional stacked barcode symbology built from a stack of Code 128 rows [1][2]. A single symbol comprises 2 to 44 stacked Code 128 lines, each carrying 4 to 62 data characters, and the symbology can encode up to 2,725 characters with full ISO 8859-1 (Latin-1) support [1][2]. It was created by ICS Identcode-Systeme GmbH in Germany and standardized as an AIM standard in 1995 [1].
History
Codablock was invented in 1989 by Heinrich Oehlmann at Identcode-Systeme GmbH (ICS) in Germany [1]. The original variant, Codablock A, was a stacked extension of Code 39 supporting 2–22 lines of 1–61 characters each, encoding up to 1,340 characters with modulo-43 checksums, and was standardized as an AIM standard in 1994 [1]. Codablock F, the later and more capable variant, restacks Code 128 instead of Code 39 and was standardized as an AIM standard in 1995 [1]. The "F" denotes this Code 128-based family, distinguishing it from the earlier Code 39-based Codablock A [1].
Technical specification
A Codablock-F symbol is a vertical stack of 2 to 44 rows, each of which is essentially a Code 128 barcode [1][2]. Each row contains, in order: a leading quiet zone, a start character, a character subset selector, a row indicator, the data characters (4 to 62 per row), a row check character, a stop character, and a trailing quiet zone [2]. Rows are separated by a horizontal row-separator bar that extends the full width of the symbol (excluding the start and stop characters) [2]. The row indicator appears in the second position of each row after the mode/data character; in the first row this position instead encodes the total row count, allowing decoders to reassemble rows in order [1].
Because it is built on Code 128, Codablock-F uses the three Code 128 character subsets: Subset A (digits, uppercase letters, punctuation, and control characters, ASCII 00–95), Subset B (digits, upper- and lowercase letters, and punctuation, ASCII 32–127), and Subset C (numeric digit pairs 00–99, two digits per character) [2].
Data integrity is enforced by multiple layered checks: two mandatory check digits computed with a modulo-86 algorithm covering the overall data, plus a mandatory per-row check character based on the modulo-103 algorithm (the same modulus as a standard Code 128 check character) [1][2]. The last row carries the two additional overall checksum characters [1].
Use cases
Codablock-F's principal application has been in the healthcare industry, where it is used to carry HIBC (Health Industry Bar Code) data on items and packaging [1]. Its stacked Code 128 structure allows substantial alphanumeric data to be placed on small or narrow labels typical of medical and pharmaceutical products [1][2].
Implementations
- Zint (github.com/zint/zint) — C; open-source library that explicitly lists "Codablock F (and HIBC)" support among its 50+ symbologies; ~771 stars; actively maintained [3].
- BWIPP (Barcode Writer in Pure PostScript) (github.com/bwipp/postscriptbarcode) — PostScript; pure-PostScript encoder with a dedicated Codablock-F module [6].
Comparison
Codablock-F and Code 16K are closely related: both are stacked symbologies built on Code 128 and both were developed in 1989 for compact, high-data-density labeling [1][5]. They differ in scale and structure — Codablock-F allows up to 44 rows with variable-length rows (4–62 characters each) and a capacity of ~2,725 characters, whereas Code 16K is capped at 16 rows of exactly five characters each, with a single-symbol capacity of around 77 ASCII characters [1][2][5]. Against a true 2D matrix code such as Data Matrix, Codablock-F is bulkier and lower-density; in modern practice Codablock codes are largely superseded by Data Matrix, and Codablock F is treated as a historical standard not recommended for new applications [1].
Status
Codablock-F is an AIM standard (1995) that remains in legacy use, principally in healthcare/HIBC labeling [1]. It is formally regarded as a historical symbology, with new deployments generally directed toward Data Matrix instead [1].
Sources
- Codablock — Wikipedia — Wikipedia, accessed 2026
- CODABLOCK F — Barcode Guide — Seagull Scientific
- zint/zint — GitHub, accessed 2026
- Codablock — HandWiki — HandWiki
- Code 16K — Wikipedia — Wikipedia, accessed 2026
- Barcode Writer in Pure PostScript — GitHub, accessed 2026
Deployments
No country reports mention this standard by name.
Regions / aggregations not mapped to a single country
- Universal