What you're using right now
- 100+ barcode & QR symbologies
- Live preview & customization
- PNG & SVG export, no login
- Copy to clipboard
Loading Barcode Mintβ¦
Free Online Barcode & QR Code Generator
Generate a PZN barcode encoding a German Pharmazentralnummer, the identification number printed on pharmaceutical packaging sold in Germany.
Open the generator βTurn a CSV β or a numbered sequence β into hundreds of barcodes at once, exported as a ZIP of images or a print-ready PDF sheet. Launching with Pro.
The browser generator stays free forever. Paid plans are for teams who need bulk output and developers who need the REST API at scale β commercial license included. Tell us what you'd use; early-list members get first access and launch pricing.
What you're using right now
For designers & teams
Priced by requests. Commercial license and self-serve keys included; usage dashboard at launch.
PZN stands for Pharmazentralnummer, the central pharmaceutical number that uniquely identifies every medicinal product and many other pharmacy-sold items in Germany. A PZN barcode is a Code 39-based symbol that encodes this number with a leading "PZN" or "-" prefix character convention and a check digit, so pharmacy dispensing systems and insurance billing software can scan the package and instantly identify the exact product, strength, and pack size. It's the German equivalent of what a UPC or EAN does at a retail checkout, adapted for pharmacy and health-insurance workflows.
A PZN pharma generator is a tool built for the packaging designers, pharmaceutical wholesalers, and print vendors who need to produce correct, scannable PZN artwork — typing in the raw identifying number and getting back a properly formatted Code 39 symbol with the right prefix and check digit already calculated, rather than working out the modulo-11 arithmetic by hand for every product variant.
A PZN is a numeric identifier, historically 7 digits and now commonly 8 digits (PZN8) to accommodate the growing number of registered products, assigned by IFA (Informationsstelle für Arzneispezialitäten) in Germany. The barcode itself uses the Code 39 symbology, with the encoded string typically formatted as "-" followed by the PZN digits and a modulo-check digit calculated from the PZN value, so scanners and validation software can detect data-entry or printing errors before a wrong medication is dispensed or billed.
Every registered pharmaceutical, medical device, or pharmacy-sold item in Germany gets its own PZN assigned by IFA when it's registered for sale, and that number stays fixed to the specific product, strength, and pack size combination for the life of the product on the market. That stability is what makes PZN reliable for automated dispensing and billing: scanning the same package months or years apart should always resolve to the same product record.
PZN is not a GS1 Application Identifier system — it's Germany's own pharmaceutical numbering scheme, administered by IFA and used alongside (not instead of) GS1 identifiers like GTIN on some packaging. The check digit is calculated using a weighted modulo-11 algorithm specific to the PZN format, and Barcode Mint computes and appends it automatically. Because it rides on Code 39, the barcode itself has no fixed physical size requirement beyond standard Code 39 quiet zone and X-dimension guidance, but German pharmacy packaging regulations (Packungsbeilage and related rules) do specify placement and minimum legibility on cartons.
Because PZN uses the underlying Code 39 character set and structure, any standard Code 39-capable scanner can physically read the bars — the part that's PZN-specific is the data format (the prefix character and the modulo-11 check digit convention) rather than the symbology itself. That's worth knowing if you're troubleshooting a scan issue: a scanner that reads generic Code 39 correctly but rejects a PZN code is more likely hitting a software-side validation rule than a physical decode problem.
Every prescription and over-the-counter medication package sold through German pharmacies carries a PZN barcode, scanned at the point of dispensing so the pharmacy system can verify the product, check for interactions or recalls, and submit the correct billing code to statutory or private health insurers. It also appears on many non-drug items sold through pharmacies — supplements, medical devices, and cosmetics registered with IFA — and is used in wholesale pharmaceutical distribution within Germany to track inventory between manufacturers, wholesalers, and pharmacies.
Because German statutory health insurance billing is built around PZN, the code also functions as the backbone of prescription reimbursement: a pharmacy's dispensing software reads the PZN, matches it to a reimbursement rate and any patient co-payment rules, and submits that record to the relevant insurer, which makes PZN accuracy a financial as well as a clinical safety concern.
Select PZN (Pharma) from the Linear Barcode list, then enter the 7- or 8-digit PZN number assigned to the product. Barcode Mint calculates the correct check digit and formats the encoded data according to PZN convention automatically, so you don't need to compute it by hand:
/barcode?type=pzn&data=04150726The live preview shows the fully formatted symbol, prefix and check digit included, as soon as you enter the raw PZN number, which makes it easy to catch a mistyped digit before generating final artwork for an entire product line.
Always verify the PZN digits against the manufacturer's official product listing before printing — a transposed digit produces a barcode that scans successfully but identifies the wrong product, which is a serious risk in a pharmacy dispensing context. Print at a resolution that keeps Code 39's narrow bars crisp, since PZN codes are often placed on small cartons with limited space, and maintain the required quiet zone on both sides. Test scans with actual pharmacy point-of-sale hardware before a full production run, since German pharmacy systems expect the PZN prefix formatting to match exactly.
Because the modulo-11 check digit will catch a single mistyped digit but cannot catch an entirely wrong-but-otherwise-valid PZN, cross-check the source number against IFA's official product database or the manufacturer's packaging specification rather than relying on the check digit alone as your only accuracy safeguard.
PZN is specific to the German market; other countries use different pharmaceutical identifiers on the same Code 39 or Code 128 base, such as Code 32 for the Italian national drug code or NTIN/PPN for GS1-based pharmaceutical numbering used more broadly across Europe. A product sold in multiple countries will often carry several of these codes on different regions' packaging, or a GS1 DataMatrix encoding an NTIN alongside batch and expiration data for markets that have moved to 2D serialization requirements. If you need pan-European or GS1-standard pharmaceutical identification instead of Germany-specific PZN, look at the NTIN or PPN symbologies instead.
This fragmentation across national pharmaceutical numbering schemes is part of why many manufacturers selling across Europe now print a GS1 DataMatrix as the primary machine-readable code (satisfying EU Falsified Medicines Directive serialization requirements) while retaining PZN in linear Code 39 form specifically for compatibility with existing German pharmacy dispensing systems that were built around it.