# Codablock-F

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

Specifications:
- [Codablock — Wikipedia](https://en.wikipedia.org/wiki/Codablock)
- [CODABLOCK F — Barcode Guide (Seagull Scientific)](https://barcodeguide.seagullscientific.com/Content/Symbologies/Codablock_F.htm)

## Overview

Codablock-F is a two-dimensional stacked barcode symbology built from a stack of Code 128 rows <sup>[1][1]</sup><sup>[2][2]</sup>. 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 <sup>[1][1]</sup><sup>[2][2]</sup>. It was created by ICS Identcode-Systeme GmbH in Germany and standardized as an AIM standard in 1995 <sup>[1][1]</sup>.

## History

Codablock was invented in 1989 by Heinrich Oehlmann at Identcode-Systeme GmbH (ICS) in Germany <sup>[1][1]</sup>. 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 <sup>[1][1]</sup>. Codablock F, the later and more capable variant, restacks Code 128 instead of Code 39 and was standardized as an AIM standard in 1995 <sup>[1][1]</sup>. The "F" denotes this Code 128-based family, distinguishing it from the earlier Code 39-based Codablock A <sup>[1][1]</sup>.

## Technical specification

A Codablock-F symbol is a vertical stack of 2 to 44 rows, each of which is essentially a Code 128 barcode <sup>[1][1]</sup><sup>[2][2]</sup>. 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 <sup>[2][2]</sup>. Rows are separated by a horizontal row-separator bar that extends the full width of the symbol (excluding the start and stop characters) <sup>[2][2]</sup>. 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 <sup>[1][1]</sup>.

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) <sup>[2][2]</sup>.

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) <sup>[1][1]</sup><sup>[2][2]</sup>. The last row carries the two additional overall checksum characters <sup>[1][1]</sup>.

## 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 <sup>[1][1]</sup>. Its stacked Code 128 structure allows substantial alphanumeric data to be placed on small or narrow labels typical of medical and pharmaceutical products <sup>[1][1]</sup><sup>[2][2]</sup>.

## Implementations

- **Zint** ([github.com/zint/zint](https://github.com/zint/zint)) — C; open-source library that explicitly lists "Codablock F (and HIBC)" support among its 50+ symbologies; ~771 stars; actively maintained <sup>[3][3]</sup>.
- **BWIPP (Barcode Writer in Pure PostScript)** ([github.com/bwipp/postscriptbarcode](https://github.com/bwipp/postscriptbarcode)) — PostScript; pure-PostScript encoder with a dedicated Codablock-F module <sup>[6][6]</sup>.

## 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 <sup>[1][1]</sup><sup>[5][5]</sup>. 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 <sup>[1][1]</sup><sup>[2][2]</sup><sup>[5][5]</sup>. 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 <sup>[1][1]</sup>.

## Status

Codablock-F is an AIM standard (1995) that remains in legacy use, principally in healthcare/HIBC labeling <sup>[1][1]</sup>. It is formally regarded as a historical symbology, with new deployments generally directed toward Data Matrix instead <sup>[1][1]</sup>.

## Sources

[1]: https://en.wikipedia.org/wiki/Codablock
[2]: https://barcodeguide.seagullscientific.com/Content/Symbologies/Codablock_F.htm
[3]: https://github.com/zint/zint
[4]: https://handwiki.org/wiki/Codablock
[5]: https://en.wikipedia.org/wiki/Code_16K
[6]: https://github.com/bwipp/postscriptbarcode

1. [Codablock — Wikipedia](https://en.wikipedia.org/wiki/Codablock) — Wikipedia, accessed 2026
2. [CODABLOCK F — Barcode Guide](https://barcodeguide.seagullscientific.com/Content/Symbologies/Codablock_F.htm) — Seagull Scientific
3. [zint/zint](https://github.com/zint/zint) — GitHub, accessed 2026
4. [Codablock — HandWiki](https://handwiki.org/wiki/Codablock) — HandWiki
5. [Code 16K — Wikipedia](https://en.wikipedia.org/wiki/Code_16K) — Wikipedia, accessed 2026
6. [Barcode Writer in Pure PostScript](https://github.com/bwipp/postscriptbarcode) — GitHub, accessed 2026

## Deployments

_No country reports mention this standard by name._

## Regions / aggregations not mapped to a single country

- Universal
