Standards/code-32
Code 32
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
code32encoder. - BWIPP (github.com/bwipp/postscriptbarcode) — PostScript, 499 stars, active 2026. Provides the
code32encoder; 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.