Make a barcode
Private — your file is never stored
Only affects the PNG. The SVG has no fixed size — it is vector art and stays sharp at any scale, which is why it is the better choice for printing.
Your code will appear here
How it works
Pick the format
Each one says what it is for, so you are not choosing between Code 39 and Code 93 on a coin flip.
Enter the number or text
Retail formats take digits only and the count is checked. Leave off the last digit and it is calculated for you.
Download
SVG for print, PNG for everything else. Both are yours, with no licence and no attribution.
Choosing a symbology, and printing it so it scans
The symbologies here do different jobs and are not interchangeable. EAN-13 and UPC-A are retail product codes, fixed at thirteen and twelve digits — and they are the same standard underneath, a UPC-A being an EAN-13 with a leading zero. EAN-8 is the short form for small packages. ITF-14 goes on outer cases and shipping cartons. Code 128 takes arbitrary text at high density and is what internal systems, logistics and asset tracking use. Code 39 takes letters and digits, is far less dense, and survives in older industrial and military systems because almost every scanner ever made reads it.
The fixed-length retail codes carry a check digit computed from the others by a weighted sum, so that a misread or a mistyped digit is caught rather than becoming a different product. It is calculated and verified here, and a wrong one is refused rather than drawn — a barcode with a bad check digit is not a barcode with a small flaw, it is one that scanners will reject outright.
The quiet zone is the single most common reason a barcode does not scan. The clear margin either side is part of the specification, not decoration — around ten times the width of the narrowest bar — and it is what tells a scanner where the code begins and ends. Cropping a barcode tight, or placing it against a box edge or a coloured panel, breaks it as surely as removing a bar would. The generated image includes the quiet zone; keeping it is your job.
Size and contrast decide the rest. Scaling a barcode down until the narrow bars fall below what your printer can resolve makes it unreadable no matter how perfect the file is — a 300 DPI laser printer is the realistic minimum and thermal label printers are better. Keep it dark on a light background, never light on dark, and never print it across a fold or a curve. Test with an actual scanner before ordering ten thousand labels, because a phone camera app is more forgiving than a retail laser.
When you want something else
You cannot invent a retail barcode. An EAN or UPC that will work in a shop encodes a company prefix issued by GS1, the organisation that administers the numbering globally, and using a number you made up means either scanning as nothing or colliding with somebody else's product. This page will happily draw any valid number; whether you are entitled to that number is a separate question, and for anything going to retail the answer comes from GS1 rather than from a generator.
For labels at volume, generating images is the wrong approach. Label printers speak ZPL or EPL, and sending the barcode as a command lets the printer render it at its own native resolution — always sharper than a scaled image, and far faster. In code, python-barcode, ZXing and bwip-js generate every symbology here plus the GS1 composite and 2D formats this does not, and they slot into a print pipeline properly.
Frequently asked questions
Which format do I need?
For a retail product sold outside North America, EAN-13. Inside North America, UPC-A. For small packaging where neither fits, EAN-8. For a shipping carton, ITF-14. For anything internal — asset tags, warehouse locations, your own inventory numbers — Code 128, which takes letters as well as digits and is compact. Code 39 is older and produces a longer barcode, but almost every scanner ever made reads it, which occasionally matters with old equipment.
What is a check digit and why does it matter?
It is the last digit of a retail barcode, and it is not chosen — it is calculated from all the others. Its job is to catch scanning and typing errors: change one digit and the check digit no longer matches, so the scanner rejects the read instead of quietly ringing up a different product. Enter the first twelve digits of an EAN-13 here and the thirteenth is worked out for you.
What if my number has the wrong check digit?
It is refused, with the digit it should have been. That is deliberate and it is the main reason to use this page rather than the first generator in the search results. Your number came from somewhere — packaging, a spreadsheet, a supplier — and silently correcting its last digit would hide a typo in the one part of the number that exists to catch typos. Far better to find out here than after printing.
Will it pad a short number for me?
No — and most generators will, which is worth knowing. We measured it: asked for an EAN-13 of "123", the underlying engine does not complain, it pads with zeros and returns a perfectly valid barcode. Valid, and for a completely different product. Somebody prints a thousand labels and discovers it at a till. This page counts the digits first and refuses, telling you how many the format needs.
Do I need to buy a barcode number?
To sell in shops, yes — retail EAN and UPC numbers are allocated by GS1, and the prefix identifies you as the company. A made-up number may clash with a real product and shops will reject it. But for anything internal, no: your own inventory, asset tags, library systems and warehouse locations can use any numbers you like, and Code 128 is designed for exactly that.
Is it free to use commercially?
Yes. These are open standards with no licence fee for generating codes. The images are yours for packaging, labels or anything else, with no attribution and no watermark.
Is my data stored anywhere?
No. Nothing is stored and no request is made. You can disconnect from the internet after the page loads and it keeps working.
Why will my barcode not scan?
Most often it was printed too small or the white space at each end was trimmed — linear barcodes need a quiet zone before the first bar and after the last, and cropping it is the commonest cause of failure. After that: printing at low resolution so the thin bars blur together, scaling a PNG up, or printing light-on-dark. Use the SVG for printing and test a real scan before committing to a print run.
Good to know: EAN-13, EAN-8, UPC-A and ITF-14 are fixed-length and their check digit is calculated and verified here — a wrong digit is refused rather than drawn. Code 128 and Code 39 take arbitrary text. A barcode drawn too small, or printed on a low-resolution printer, will not scan whatever the file says.
Put this tool on your website
Free for any blog, class page or help article. Paste one snippet and your visitors can use it right on your page.