Generate a CODE128, EAN, or UPC Barcode
Create a barcode in CODE128, EAN, UPC, CODE39, and more formats, then download it as PNG or SVG.
Values never leave your device
No usage logging
Safe for unreleased products
No account
How it works
- 1
Pick the symbology
CODE128 for internal use, EAN-13 or UPC for retail, CODE39 for older industrial scanners.
- 2
Enter the value
Type or paste the code. The preview redraws live and flags a value the chosen format cannot encode.
- 3
Download PNG or SVG
PNG for a screen or a document, SVG whenever the barcode is going to a printer.
Why use this tool
Nine symbologies
CODE128, CODE39, EAN-13, EAN-8, UPC, ITF-14, MSI, Pharmacode and Codabar — the formats scanners actually expect.
Validates as you type
Each symbology has strict rules about length and characters. Break one and the preview tells you immediately rather than at the print shop.
SVG for label printing
Vector bars stay mathematically exact at any label size, which is what a thermal printer needs to produce a scannable result.
Check digit handled
EAN and UPC require a calculated final digit; it is worked out for you rather than left as a trap.
Nothing is uploaded
Product codes and internal SKUs are generated in your browser and never sent anywhere.
Unlimited and free
No per-barcode charge and no account — generate one label or a whole shelf.
Which barcode format should you actually use?
The choice is decided by where the barcode will be scanned, not by preference. If the product will be sold through retail, the format is dictated: UPC-A in North America, EAN-13 almost everywhere else, and both require a number issued by GS1 — you cannot invent one. For anything internal — warehouse bins, asset tags, equipment labels, a small workshop's own stock system — CODE128 is the right default: it encodes letters as well as digits, packs them densely, and every modern scanner reads it. CODE39 is the older equivalent and still appears in industrial and defence contexts because some legacy readers only speak it. ITF-14 is for the outer carton rather than the item inside it. Pick by the scanner, then work backwards.
Why retail barcodes cannot be self-generated
This is the single most expensive misunderstanding in this area. A UPC or EAN barcode is not just a pattern of bars — the digits encode a company prefix that GS1 assigns to one business, and a product reference within it. Generating a valid-looking EAN-13 for a product you are about to list does produce a barcode that scans; it also produces one whose prefix belongs to somebody else, which is why retailers reject it and why marketplaces suspend listings over it. This tool generates the symbol for a number you already have the right to use. If you are launching a retail product and do not have a GS1 prefix yet, that registration is the step that comes first.
Check digits, and the errors they catch
EAN, UPC and ITF-14 end with a check digit that is calculated from the preceding digits by a fixed formula. Its purpose is not security but error detection: if a scanner misreads a bar or a person mistypes a digit, the arithmetic no longer agrees and the read is rejected instead of silently pulling up the wrong product. This is why entering twelve digits into an EAN-13 field is not a rounding error — the thirteenth is not optional, it is the result of the other twelve. The tool computes it, so you supply the meaningful digits and the validation happens before anything is printed.
Printing a barcode that actually scans
More barcodes fail at the printer than in the generator. Four rules cover most failures. Export SVG so the bar edges stay sharp — a scaled-up PNG produces soft transitions that a laser scanner reads slowly and a cheap camera scanner not at all. Keep the quiet zone, the blank margin at each end; it is part of the symbol and cropping it is the most common cause of a barcode that refuses. Print dark bars on a light background and never invert, because scanners measure reflectance and expect that polarity. And do not stretch the image to fill a label: changing the width-to-height ratio distorts the bar widths that carry the data. Test-scan the printed label, not the screen preview.
Barcodes and QR codes solve different problems
A linear barcode stores a short identifier — typically 8 to 20 characters — and is read by dedicated hardware at a till or in a warehouse, quickly and from a fixed distance. A QR code stores far more data, including a full URL, and is read by phone cameras from any angle. The practical split: if the reader is a laser scanner attached to a point-of-sale or inventory system, you need a barcode in the symbology that system expects. If the reader is a customer's phone, you almost certainly want a QR code. Putting a URL in a CODE128 barcode technically works and is almost always the wrong choice.
Why generating codes locally matters here
Barcode values are rarely arbitrary. They are SKUs, asset tags, batch numbers, patient or specimen identifiers — data that maps directly onto a company's inventory or a person's record. A hosted generator sees every value you type. Because this one runs entirely in your browser, an unreleased product code or an internal asset numbering scheme never reaches a server, which matters more for a small business than it first appears: your SKU list is a fair summary of what you sell and how much of it.
Common mistakes to avoid
- Generating your own EAN-13 or UPC for a retail product. The digits encode a GS1-assigned company prefix; a self-made number scans fine and belongs to another business, which is why retailers reject it and marketplaces suspend the listing.
- Entering twelve digits for an EAN-13. The thirteenth is a check digit calculated from the other twelve, not a free character — supply the meaningful digits and let it be computed.
- Printing from an enlarged PNG. Scaling a raster barcode softens every bar edge; export SVG, or generate the PNG at the final label size.
- Cropping away the blank margin at each end. That quiet zone is part of the symbol — scanners use it to find where the bars begin, and removing it breaks an otherwise valid code.
- Stretching the barcode to fill a label. Changing the width-to-height ratio distorts the bar widths that carry the data. Scale proportionally, or regenerate at the size you need.
How it compares
| KeroTools | Hosted barcode services | Label software | |
|---|---|---|---|
| Symbologies included | 9, all free | Often tiered by plan | Many |
| Values sent to a server | Never | Yes | No |
| SVG export | Free | Usually paid | Yes |
| Check digit calculated | Yes | Yes | Yes |
| Account required | No | Usually | Licence required |
| Cost | Free | Free tier / subscription | Paid |
Features
CODE128
Encodes the full ASCII set at high density — the default choice for internal and logistics labels.
EAN-13 and EAN-8
The retail standard outside North America; 13 or 8 digits with an automatic check digit.
UPC-A
The 12-digit North American retail standard, accepted by every point-of-sale scanner.
CODE39
Older and less dense, but still required by some industrial and defence systems.
ITF-14
For outer cases and shipping cartons rather than individual retail items.
MSI, Pharmacode, Codabar
Niche symbologies used in inventory, pharmaceutical packaging and libraries.
Live validation
An invalid length or character is caught in the preview, before it reaches a label.
PNG and SVG export
Raster for documents and screens, vector for anything printed.
No installation
Nothing to download or install — it works on the web page.
Secure by default
Served over HTTPS, with no file tracking and no third-party upload.
Who uses it
Warehouse & inventory teams
CODE128 labels for bins and shelves, generated in bulk without a per-label subscription.
Small retailers
Turning GS1 numbers they already hold into print-ready EAN-13 symbols.
Workshops & repair shops
Asset tags for tools and equipment, kept off any third-party service.
Libraries & labs
Codabar and Pharmacode symbols for systems that still require those older symbologies.
Frequently Asked Questions
No. Everything runs locally in your browser — nothing is uploaded, stored, or shared.
Yes — completely free, with no account and no limits.