Skip to content
barcoder

Standards/code-16k

Code 16K

Type2D Stacked Linear
Completeness74%high

Overview

Code 16K is a multi-row, stacked barcode symbology composed of 2 to 16 rows, built on the structures of the Universal Product Code (UPC) and Code 128 [1]. Each row holds exactly five symbol characters and is delimited by start/stop patterns, with rows separated by horizontal bars [1][2]. A single symbol can encode roughly 77 ASCII characters or 154 numeric digits in an area of about 2.4 cm² [1]. The symbology is defined by the AIM Uniform Symbology Specification "AIM-BC7-2000 / USS Code 16K" [2][3].

History

Code 16K was developed in 1989 by Ted Williams at the American company Laserlight Systems [1]. It derives its structure from both the Universal Product Code and Code 128, reusing the Code 128 character encoding while stacking it into multiple rows for higher data density in a small area [1]. The "16" in the name refers to the maximum of 16 rows in a single symbol [1]. Williams is the same designer associated with Code 128 itself, and Code 16K was conceived as a stacked extension to address the area-efficiency limits of single-row linear codes [1].

Technical specification

A Code 16K symbol contains between 2 and 16 rows, each row carrying exactly five symbol characters and padded with placeholder characters when the data does not fill the final row [1][2]. Each row is structured as a start character, a guard bar, five symbol characters, and a stop character, with horizontal separator bars between rows [2]. Because rows are individually delimited by start/stop characters, each line is recognized indirectly through its start/stop pattern, allowing the decoder to determine row order [1].

Code 16K inherits Code 128's three character code sets [1][2]: Code Set A (digits 0–9, uppercase letters, punctuation, eleven special characters, and control characters, ASCII 00–95); Code Set B (digits, upper- and lowercase letters, punctuation, and eleven special characters, ASCII 32–127); and Code Set C (numeric digit pairs 00–99, where each character represents two digits). It also supports the function characters FNC1–FNC4, including FNC4 for an extended-ASCII mode that grants access to the full 256-character set [2].

Error detection combines per-character parity, indirect row recognition via start/stop characters, and two mandatory check characters appended at the end of the symbol, computed with a modulo-107 algorithm [1][2]. Typical dimensions specify a minimum X dimension of 7.5 mils and a row height of at least 8X [2]. When symbols are stacked/linked, up to 107 Code 16K symbols can be combined, raising the aggregate ceiling to as much as 8,025 ASCII characters or 16,050 numeric characters [2].

Use cases

In the United States and France, Code 16K is used in the electronics industry to tag chips and printed circuit boards, where the small marking area suits its compact stacked layout [1]. In the United States it has also been used in various medical settings [1]. Its strengths are small-item marking and dense alphanumeric data in a constrained footprint [1][2].

Implementations

  • Zint (github.com/zint/zint) — C; open-source encoding library that explicitly lists Code 16K among its 50+ supported symbologies (alongside Code 128, PDF417, MicroPDF417, and Composite Symbols); ~771 stars; actively maintained [4].
  • BWIPP (Barcode Writer in Pure PostScript) (github.com/bwipp/postscriptbarcode) — PostScript; pure-PostScript encoder with a dedicated Code 16K module [6].

Comparison

Code 16K and Codablock-F are siblings: both were developed in 1989 and both stack Code 128 into multiple rows [1][5]. They differ in structure and capacity — Code 16K is fixed at a maximum of 16 rows with exactly five characters per row (~77 ASCII characters per symbol), whereas Codablock-F allows up to 44 variable-length rows of 4–62 characters and ~2,725 characters per symbol [1][2][5]. Code 16K uses modulo-107 check characters, while Codablock-F layers modulo-86 data checks with modulo-103 per-row checks [2][5]. Against a true 2D matrix symbology such as Data Matrix, both stacked Code 128 variants are larger and lower-density; Data Matrix generally supersedes them for compact high-capacity marking [5].

Fun facts

Code 16K was designed by Ted Williams, the same person credited with Code 128, and it deliberately reuses the Code 128 character-encoding scheme inside its stacked rows [1].

Status

Code 16K is an established AIM Uniform Symbology Specification (USS Code 16K) that remains in niche use, notably in electronics chip/PCB marking and some medical applications [1][2]. It is far less common than 2D matrix codes such as Data Matrix and QR Code in current deployments [1].

Sources

  1. Code 16K — Wikipedia — Wikipedia, accessed 2026
  2. Code 16K — Barcode Guide — Seagull Scientific
  3. USS-16K — Code 16K Specification — AIM (via ExpressCorp)
  4. zint/zint — GitHub, accessed 2026
  5. Codablock — Wikipedia — Wikipedia, accessed 2026
  6. 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
source · docs/standards/code-16k/index.md