# Two-Track Pharmacode

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

Specifications:
- [PHARMA-CODE - Two-Track - BarTender Barcode Guide](https://barcodeguide.seagullscientific.com/Content/Symbologies/TwoTrackPharmacode.htm)
- [PHARMA-CODE Series #1: Introduction to Laetus PHARMA-CODE](https://www.laetus.com/en/knowledge-base/blog/pharma-code-series-1-introduction-to-laetus-pharma-code/)

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

## History

Like one-track Pharmacode, Two-Track Pharmacode was developed by **Laetus** and is defined in the Laetus PHARMA-CODE Guide <sup>[1][1]</sup> <sup>[2][2]</sup>. 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 <sup>[2][2]</sup>.

## 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 <sup>[1][1]</sup>. 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 <sup>[1][1]</sup>.
- **No check digit.** No check digit is included <sup>[1][1]</sup>.
- **Quiet zone.** A quiet zone of **6 mm** is required on either side of the symbol <sup>[1][1]</sup>.
- **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 <sup>[2][2]</sup>.

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

## Implementations

- **Zint** ([github.com/zint/zint](https://github.com/zint/zint)) — C, 771 stars, active 2026. Explicitly supports "Pharmacode Two-Track" among 50+ symbologies.
- **bwip-js** ([github.com/metafloor/bwip-js](https://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](https://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 <sup>[3][3]</sup>. 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 <sup>[1][1]</sup>. Both omit a check digit, omit human-readable text in the symbol, and require a 6 mm quiet zone <sup>[1][1]</sup> <sup>[3][3]</sup>. 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) <sup>[1][1]</sup>.

## Sources

[1]: https://barcodeguide.seagullscientific.com/Content/Symbologies/TwoTrackPharmacode.htm
[2]: https://www.laetus.com/en/knowledge-base/blog/pharma-code-series-1-introduction-to-laetus-pharma-code/
[3]: https://barcodeguide.seagullscientific.com/content/symbologies/phamacode.htm

[1] [PHARMA-CODE - Two-Track - BarTender Barcode Guide](https://barcodeguide.seagullscientific.com/Content/Symbologies/TwoTrackPharmacode.htm) — Seagull Scientific, accessed 2026
[2] [PHARMA-CODE Series #1: Introduction to Laetus PHARMA-CODE](https://www.laetus.com/en/knowledge-base/blog/pharma-code-series-1-introduction-to-laetus-pharma-code/) — Laetus GmbH
[3] [PHARMA-CODE - One-Track - BarTender Barcode Guide](https://barcodeguide.seagullscientific.com/content/symbologies/phamacode.htm) — Seagull Scientific, accessed 2026

## Deployments

_No country reports mention this standard by name._

## Regions / aggregations not mapped to a single country

- Universal
