Barcode generator

Generate CODE128, EAN, UPC and more, then download.

You need a barcode on a shelf label, an asset tag, or a shipping carton, and the software you already own either can't print one or wants a licence fee for it. This tool draws the barcode in your browser from a value you type and hands back a PNG you can drop into a label template. The harder part is usually choosing the symbology, so the notes below cover what each format expects.

How it works

Pick the format first

The Format dropdown is not cosmetic — each symbology accepts a different kind of value.

FormatAcceptsTypical use
CODE128Any length, letters, digits, punctuationInternal labels, asset tags, shipping
EAN-13Exactly 13 digitsRetail products, most of the world
EAN-8Exactly 8 digitsSmall retail packaging
UPC-AExactly 12 digitsRetail in the US and Canada
CODE39Uppercase letters, digits, a few symbolsOlder industrial and military systems
ITF-14Exactly 14 digitsOuter shipping cartons

If you are labelling your own stock and nobody outside your company will scan it, CODE128 is the sensible default: it is compact and it accepts letters.

Enter the value

Type the code into Value and press Generate. Fixed-length formats reject anything of the wrong length, and the final digit of EAN, UPC and ITF-14 codes is a check digit calculated from the digits before it. Copy the number exactly as it is printed on the product rather than inventing one — a mismatched check digit produces a code that scanners refuse.

Download and print

Download PNG saves the rendered image. Print black on white at 100% scale; shrinking a barcode much below its nominal size makes the narrow bars thinner than many scanners can resolve. Leave the blank margin on both sides of the bars intact — that quiet zone is how a scanner finds the start and stop patterns.

One caveat: rendering a valid-looking EAN or UPC image does not make the number yours. Retail product codes are issued by GS1, and an arbitrary 13-digit number may already belong to someone else's product.

Terms explained

CODE128
A dense symbology that encodes the full ASCII range, so one code can hold letters, digits and punctuation. The usual choice for internal and logistics labels.
EAN-13 / UPC-A
Retail product symbologies built on GS1 numbering. EAN-13 takes 13 digits and is used worldwide; UPC-A takes 12 and is standard in North America.
ITF-14
A 14-digit Interleaved 2 of 5 code printed on shipping cartons to identify a case containing a known quantity of a retail item.
Check digit
The last digit of an EAN, UPC or ITF-14 code, derived from the preceding digits so a scanner can detect a misread or a typo.
Quiet zone
The blank margin either side of the bars. Crop it away and scanners frequently fail to read the code at all.

Frequently asked questions

Which barcode format should I choose?

If the code is only for your own inventory, labels or equipment, use CODE128 — it takes letters as well as digits and packs into less space. If the item will be scanned at a shop till, you need a retail format: EAN-13 in most countries, UPC-A in the United States and Canada.

Can I create a real retail barcode here?

You can render the image, but the number itself has to be a GTIN licensed to your company through GS1. Making up a 13-digit number gives you a scannable picture that is not a valid product identifier and may clash with an existing product.

My barcode will not scan. What is wrong?

The three usual causes are printing too small, poor contrast, and a missing quiet zone. Print in solid black on a white background at full size, avoid glossy or sharply curved surfaces, and keep a few millimetres of blank margin on each side of the bars.

Why is my value rejected?

Fixed-length formats are strict: EAN-13 needs exactly 13 digits, EAN-8 needs 8, UPC-A needs 12 and ITF-14 needs 14. CODE39 accepts only uppercase letters, digits and a handful of symbols. Switch to CODE128 if your value does not fit any of those.

Is the value I type sent to a server?

No. The barcode is drawn on a canvas element inside your browser and the PNG download is produced from that canvas, so the code you enter is not uploaded anywhere.