/01 Choosing your barcode format
Barcodes come in families, called symbologies, and each one exists because a particular industry needed a particular trade-off. Some stack stripes to be read by a laser in one pass. Some pack data into a square to be read by a camera. Some encode numbers only, some the full character set, some pages of text.
This generator produces Data Matrix, Aztec Code, PDF417, Code 128, Code 39, EAN-13, and UPC-A from your own data, with an image ready to download for labels, packaging, and documents. It enforces each symbology's rules as you type: character sets, lengths, and check digits, so you cannot produce a code a scanner will reject for structural reasons.
The question worth answering before generating anything is which symbology the job actually needs, because barcodes are read by systems that expect a specific one. A retail scanner looks for EAN-13. A courier's handheld looks for Code 128. A parts marking system looks for Data Matrix. When in doubt, match what the receiving system already reads.
/02 The 2D codes: the most data in the least space
The two-dimensional symbologies are the ones to reach for when there is a lot to say and little room to say it. Data Matrix is the standard for marking small parts, electronics, and pharmaceutical packaging, and it stays readable down to a few millimetres square. If you have seen a tiny checkered square on a circuit board, it was a Data Matrix.
Aztec Code is the transport symbology: it appears on airline boarding passes and railway tickets, chosen because it needs no quiet zone and reads reliably from screens and poor prints. PDF417 is the document symbology, stacked rows that carry large amounts of text, which is why it appears on driving licences, boarding passes, and shipping manifests.
All three carry built-in error correction, meaning a partly damaged or dirty code still scans. That resilience, plus the density, is why 2D codes have been taking over from stripes everywhere except the one place stripes are entrenched: retail point of sale.
/03 The linear codes: stripes with a job each
Code 128 is the workhorse of linear barcodes. It encodes the full ASCII set, it is high density, and it is the default choice for shipping, packaging, and internal logistics. If a warehouse needs a code on a box, Code 128 is the usual answer.
Code 39 is the older, simpler cousin, one of the first alphanumeric symbologies. It survives in automotive, defence, and healthcare settings because it was there first and a lot of installed equipment still reads it. Its tolerance for being printed badly is legendary, which keeps it in the field.
EAN-13 and UPC-A are retail: the thirteen-digit EAN-13 used internationally and the twelve-digit UPC-A used in North America. These encode a product number allocated by GS1, and their final digit is a checksum computed from the rest. The generator calculates it for you, but a valid checksum does not make a number legitimate: genuine retail use requires a number you actually own.
/04 Getting a printed code to scan
The symbology rules get you a valid code. The printing rules get you a readable one, and they are the same across all formats.
Print in pure black on a plain light background. Contrast is what the scanner sees, and colour choices that look fine to a human can be invisible to a red laser. Leave a clear quiet zone at each end of a linear code and around a 2D one — the empty margin is part of the pattern, not wasted space.
Size matters at both ends. Printing too small makes the fine stripes or cells blur together, and a code that reads on your screen can fail on paper. Printing a linear code too wide can trip up scanners that expect codes within a certain field of view. And if a code will sit behind plastic or on corrugated cardboard, test with the real material before committing, because glare and print wobble kill more codes than any design choice does.
/05 Bulk barcode generation from a list
Labelling a shelf of stock or a room full of assets one code at a time gets old quickly. The batch mode in this barcode generator takes a whole list: add values one by one, or load a plain text file with one value per line, and every code is rendered in the chosen symbology and downloaded together as a single ZIP of images.
Bulk work is where format rules bite hardest. One bad value in a list of five hundred should not quietly produce an unreadable label, so each entry is checked against the symbology's rules before it renders, and failures are marked against that item instead of disappearing. Fix the flagged lines and generate again.
Because everything runs in your browser, a list of SKUs, serial numbers or internal asset tags never leaves your machine. That matters for inventory data you would not want sitting in an online barcode service's logs.