Standards/two-track-pharmacode
Two-Track Pharmacode
Overview
Two-Track Pharmacode is the two-track variant of the Laetus PHARMA-CODE packaging-control symbology. Instead of encoding data with two bar widths on a single track, it encodes binary data using two bar heights — short ("half") bars and tall ("full") bars — arranged on two vertical tracks, where short bars can appear above or below the midline [1]. This vertical encoding lets a single symbol carry a substantially larger value than one-track Pharmacode while keeping the same print-tolerant, closed-loop character [1].
History
Like one-track Pharmacode, Two-Track Pharmacode was developed by Laetus and is defined in the Laetus PHARMA-CODE Guide [1] [2]. It shares the same purpose as the one-track code — preventing product/packaging intermixture in pharmaceutical production lines — and the same closed-loop, in-house philosophy described by Laetus for the PHARMA-CODE family [2].
Technical specification
- Encoding. Data is encoded in binary rather than decimal, using two bar heights — short and tall — where the short bars may be positioned above or below the midline [1]. The scheme combines the vertical positioning of half bars with full bars to pack two binary tracks into one symbol.
- Value range. A Two-Track Pharmacode symbol can represent an integer from 3 to 64,570,080 — far larger than one-track Pharmacode's 3–131,070 ceiling [1].
- No check digit. No check digit is included [1].
- Quiet zone. A quiet zone of 6 mm is required on either side of the symbol [1].
- Robustness. As part of the PHARMA-CODE family the symbology is designed to remain readable despite printing imperfections and to support colour printing for packaging verification [2].
Use cases
Two-Track Pharmacode serves the same in-house packaging-control and verification role as one-track Pharmacode — matching package components and confirming the correct product, insert and packaging — but is chosen when the application needs to encode a larger numeric range than the one-track code can hold [1] [2].
Implementations
- Zint (github.com/zint/zint) — C, 771 stars, active 2026. Explicitly supports "Pharmacode Two-Track" among 50+ symbologies.
- bwip-js (github.com/metafloor/bwip-js) — JavaScript, 2,381 stars, active 2026. JavaScript port of BWIPP with the PHARMA-CODE two-track encoder.
- BWIPP (github.com/bwipp/postscriptbarcode) — PostScript, 499 stars, active 2026. Barcode Writer in Pure PostScript.
Comparison
The two Laetus PHARMA-CODE variants differ chiefly in how they pack bits. One-track Pharmacode uses two bar widths on a single track and tops out at 131,070 [3]. Two-Track Pharmacode uses two bar heights across two tracks (short/tall, above/below the midline) and reaches 64,570,080 — roughly 490× the one-track range [1]. Both omit a check digit, omit human-readable text in the symbol, and require a 6 mm quiet zone [1] [3]. Compared with Code 39-based pharmaceutical codes (Code 32, PZN), both Pharmacode variants remain self-contained binary print-control codes with no national drug registry behind them.
Status
Two-Track Pharmacode remains an active member of the Laetus PHARMA-CODE family for high-capacity in-house packaging control, and is supported by current tooling including Zint and bwip-js (both actively maintained as of 2026) [1].
Sources
1 PHARMA-CODE - Two-Track - BarTender Barcode Guide — Seagull Scientific, accessed 2026 2 PHARMA-CODE Series #1: Introduction to Laetus PHARMA-CODE — Laetus GmbH 3 PHARMA-CODE - One-Track - BarTender Barcode Guide — Seagull Scientific, accessed 2026
Deployments
No country reports mention this standard by name.
Regions / aggregations not mapped to a single country
- Universal