Skip to content
barcoder

Standards/code-32

Code 32

Type1D Linear
PrimaryIT
Completeness83%high

Overview

Code 32 — also called the Italian Pharmacode, Farmacode, Codice Farmaceutico Italiano, IMH or Radix 32 — is a barcode symbology used to identify pharmaceutical products in Italy [1] [6]. It encodes the nine-digit Italian AIC drug-authorization number in a compressed form by converting it to base 32 and rendering the result with the standard Code 39 character set [1] [3]. Its human-readable interpretation begins with the ASCII letter "A", which is shown to the reader but is not encoded into the bars [1].

History

Code 32 is the barcode component of Italy's Bollino drug-traceability label, which was introduced on 1 February 2002 for prescription and OTC medicines [7]. The Bollino is an adhesive sticker that manufacturers buy from the Italian government printing office, the Istituto Poligrafico e Zecca dello Stato (IPZS), and apply to drug packaging; it carries the medicine's data in words, two barcodes and a Data Matrix [7]. The upper barcode holds the AIC code — a nine-digit marketing-authorization number issued by the Italian Medicines Agency AIFA — which is what Code 32 encodes [7] [8]. The BWIPP reference cites an Italian Ministerial Decree of 2003 as the governing standard for the symbology [2].

Technical specification

  • Data field. The data field contains eight numeric digits plus one modulo-10 check digit (nine digits total), corresponding to the AIC code [1] [6]. BWIPP accepts either eight or nine digits, treating the ninth as the check digit and computing it automatically when omitted [2].
  • Base-32 compression. The decimal value is converted to base 32 by repeatedly dividing by 32 and taking the remainders; in base 32 the digits 0–9 and the letters A–V represent the 32 values [3].
  • Code 39 rendering. The base-32 result is rendered using the Code 39 character set: each character is drawn as 9 elements — 5 bars and 4 spaces, of which 3 are wide and 6 narrow [1] [3]. The nine-digit AIC compresses to six Code 39 characters.
  • "A" prefix. The human-readable interpretation is shown with a leading "A" (ASCII 65); this character is not part of the encoded barcode data [1] [6].
  • Check digit. The check digit is computed with a modulo-10 algorithm [1] [6]. (Note: some encoder documentation instead describes a modulo-32 step over the base-32 representation [3].)

Use cases

Code 32 identifies medicinal-product packs in Italy and is the upper barcode of the Bollino label affixed to prescription and OTC medicines [1] [7]. It is read by pharmacy and wholesaler systems to look up the AIC-registered product. The lower barcode of the Bollino carries a unique serial number (UID) requested from IPZS, and a Data Matrix consolidates both [7]. Italy is the country that mandates Code 32 for this role [1].

Implementations

  • Zint (github.com/zint/zint) — C, 771 stars, active 2026. Supports "Code 32 (Italian Pharmacode)" among 50+ symbologies.
  • bwip-js (github.com/metafloor/bwip-js) — JavaScript, 2,381 stars, active 2026. JavaScript port of BWIPP including the code32 encoder.
  • BWIPP (github.com/bwipp/postscriptbarcode) — PostScript, 499 stars, active 2026. Provides the code32 encoder; data field of eight or nine digits with automatic check-digit calculation [2].

Comparison

Code 32 and Germany's PZN are both Code 39 derivatives built for national pharmaceutical identification, but they differ in compression and check digit. Code 32 compresses a nine-digit AIC into six Code 39 characters via base-32 conversion and uses a modulo-10 check digit, surfacing a leading "A" in human-readable form [1] [3]. PZN encodes its digits directly in Code 39 (no base-32 step), uses a modulo-11 check digit, and is prefixed with "PZN" and a minus sign [4] [5]. Unlike the Laetus Pharmacode family, both are open identifiers backed by a national drug registry (AIFA for AIC, IFA for PZN) rather than closed-loop binary print-control codes.

Fun facts

  • The "32" in the name refers to the base-32 (radix-32) compression of the numeric value, not to a number of digits or bars — hence the alternative name "Radix 32" [6] [3].
  • The leading "A" that users see in front of a Code 32 number is purely cosmetic: it is printed for human readability but never appears in the encoded bars [1].

Status

Code 32 remains in use as Italy's national pharmaceutical barcode but is being phased out in favour of EU Falsified Medicines Directive (FMD) serialization. A decree published 6 February 2025 opened a two-year stabilization phase beginning 9 February 2025, during which both the Bollino and EU-FMD serialization are permitted; the deadline for using the Bollino is 8 February 2027, after which only EU-FMD-compliant Data Matrix serialization (GTIN, batch, expiry, randomized serial) will be allowed [7] [8]. Code 32 encoders remain supported in current tooling (Zint, bwip-js, BWIPP) [1] [2].

Sources

1 Code 32 (Italian Pharmacode) - BarTender Barcode Guide — Seagull Scientific, accessed 2026 2 Italian Pharmacode — BWIPP wiki, accessed 2026 3 Encoding of the Farmacode or Code 32 — free-barcode.com, accessed 2026 4 Encoding of PZN in Code 39 — IFA GmbH, accessed 2026 5 PZN - German Pharmacy Barcode — Mobilio Development, accessed 2026 6 Code 32 Barcode (Italian Pharmacode, Radix 32) — Neodynamic, accessed 2026 7 Italy: From Bollino to EU-FMD — tracekey solutions GmbH, accessed 2026 8 The Italian Drug Traceability System — AIFA, 2020

Deployments

No country reports mention this standard by name.

source · docs/standards/code-32/index.md