Paste a list of codes — one per line — and generate a UPC, EAN-13, or Code128 barcode for each. Everything is drawn locally on canvas; nothing is uploaded to a server, and no account is required.
Up to 100 codes per batch — this keeps rendering fast and the tab responsive. Invalid codes for the selected format (wrong length, non-numeric for EAN/UPC) are skipped and listed below the results.
UPC-A is the 12-digit format used on retail products in the US and Canada. EAN-13 is the international equivalent (13 digits) used almost everywhere else, and is also what most UPC-A codes are stored as once padded with a leading zero. Code128 is different in kind — it isn't tied to a fixed digit count or a retail product-numbering scheme, and can encode any alphanumeric string, which makes it the right choice for internal codes, asset tags, or anything that isn't a registered retail product number.
Each barcode is rendered locally using canvas-based encoding (via the open-source JsBarcode library) — the same fundamental technique any barcode generator uses, just running entirely on your device instead of a server. You can confirm nothing is uploaded by checking your browser's Network tab while a batch runs.
Up to 100 codes per batch. EAN-13 and UPC-A require the correct digit count and a valid checksum digit at the end — codes that don't validate are skipped and listed separately rather than silently producing a broken barcode, since a barcode that fails to scan at checkout is a worse outcome than an obvious error message.
Technically yes, this tool will produce a valid UPC/EAN barcode from any correctly-formatted number — but most marketplaces require the underlying number itself to be registered through GS1 (the organization that issues UPC/EAN prefixes) to avoid conflicting with another seller's product. This tool handles the barcode image; it doesn't register or validate ownership of the number itself.
EAN-13 expects 13 digits including the checksum. A 12-digit UPC-A number can be converted to EAN-13 by adding a leading zero — if your list is UPC-style 12-digit codes, select UPC-A rather than EAN-13 so they're read correctly without needing to pad them yourself first.
For EAN-13 and UPC-A, a code is skipped if it isn't purely numeric, isn't the exact expected length, or fails the format's built-in checksum validation (the last digit is calculated from the others specifically to catch typos and transcription errors). Code128 has no such restriction and accepts any alphanumeric string.