Free online file tools — no uploads, your files never leave your browser
Every symbology here is drawn in your browser by bwip-js, the open-source Barcode Writer in Pure JavaScript — the same engine behind many server-side barcode APIs, running locally instead. The text you encode never leaves the page, and the PNG you download is rendered at 3× scale so it prints cleanly on labels.
Check digits are not magic: for EAN-13 and ITF-14 the page computes the GS1 modulo-10 digit itself and appends it (or verifies yours if you type all the digits), and for ISSN it uses the modulo-11 algorithm that can produce the trailing X. If you are not sure which format you need, start with the all-in-one generator — the table there maps each symbology to its industry.
| What you are making | Tool |
|---|---|
| A label, asset tag or order ID with letters and digits | Code 128 Generator |
| A retail product code for checkout scanning | EAN-13 Generator |
| A shipping-carton code (GTIN-14) | ITF-14 Generator |
| A high-capacity code for IDs and shipping paperwork | PDF417 Generator |
| A compact code for tickets and boarding passes | Aztec Generator |
| A serial/publication identifier barcode | ISSN Generator |
| A scan-to-add-contact code for business cards | vCard QR Generator |
| Not sure yet — compare all six symbologies | All-in-one Barcode Generator |
The barcode that fails is almost never the encoding — it is the printing. Keep the quiet zone (the blank margin the spec requires around every symbol; do not crop the PNG tight), print pure black on white at the final size, and test one unit with the actual scanner that will read it: a phone camera, a USB wedge scanner or the carrier's device, whichever applies. If the code will be photocopied or faxed, test a photocopy of the print too — every generation of copy widens the bars, and linear codes like Code 128 and EAN-13 are the first to suffer. A two-minute test here is cheaper than reprinting a label run.