Skip to main content

Barcode Generator — Code 128, EAN-13, UPC-A

Pick a symbology, enter your number or text, and download a print-ready barcode. Check digits are computed for you on EAN-13 and UPC-A — or verified if you paste the full number — so a typo can’t become an unscannable label.

Any ASCII text — letters, digits, symbols.

Enter the content above to generate a scannable barcode.

SVG is vector — print it at any size without blur. The PNG exports at 4× resolution for crisp small labels.

Lay out the product label in Moda

Drop the barcode into a label, packaging mockup, or price tag design.

Try Moda free →

Which format do I need?

EAN-13 is the 13-digit retail barcode used on products worldwide; UPC-A is its 12-digit North American counterpart, and scanners read both interchangeably. Code 128 is the flexible one: it encodes letters, digits, and symbols at high density, which makes it the default for internal SKUs, shipping labels, asset tags, and anything that isn’t a retail product code. If you’re labeling products for a store shelf you need the EAN/UPC number your GS1 registration issued; for everything internal, Code 128 with your own scheme.

Check digits, computed and verified

The last digit of an EAN-13 or UPC-A isn’t part of the product number — it’s arithmetic over the other digits, and scanners use it to reject misreads. Enter the first 12 (or 11) digits and the tool computes the check digit and shows it; paste all 13 (or 12) and it verifies the last digit, telling you what it should have been if it doesn’t match. A barcode generated from a mistyped number scans fine — as the wrong product. Validation here is what prevents that.

SVG for print, PNG for everything else

Barcodes live or die on crisp edges. The SVG download is vector: bars stay razor sharp at any print size and import into design tools as editable shapes. The PNG renders at four times screen resolution, which survives office printers at typical label sizes. Whatever you do downstream, never stretch a barcode non-uniformly — changing the bar-width ratios is the fastest way to make a scanner give up.

What this tool doesn’t do

It doesn’t issue numbers. Retail EAN/UPC codes are assigned through GS1 licensing — generating a barcode image from digits you invented will scan, but it will collide with someone else’s product in retail databases. Use this tool to render numbers you legitimately hold, test scan workflows, and produce internal labels where you control the numbering scheme.

Frequently asked questions

What’s the difference between EAN-13 and UPC-A?

UPC-A is 12 digits, EAN-13 is 13, and a UPC-A is exactly an EAN-13 with a leading zero. Modern scanners read both everywhere; the distinction matters mainly for matching what your retailer or marketplace listing expects. Amazon, for instance, accepts either as a product identifier.

Why does the tool say my check digit is wrong?

The final digit must equal a specific calculation over the preceding digits, and yours doesn’t. Usually one digit was mistyped or two were swapped — the error the check digit exists to catch. The message tells you the digit the math expects; if your source lists a different one, re-check the source number digit by digit.

Can Code 128 encode letters and symbols?

Yes — the full ASCII set: upper and lower case, digits, and punctuation. Characters outside ASCII (accented letters, emoji) can’t be represented and are flagged inline. Code 128 also adds its own internal checksum automatically, so there’s no check digit for you to manage.

Will these barcodes scan at retail checkouts?

The symbology is exactly what checkout scanners read — print quality and number legitimacy are the real variables. Print with sharp contrast at standard size (EAN-13 nominal is about 37 × 26 mm), leave the quiet zone margins intact, and use a number actually registered to your product.

Do I need a GS1 license to use this?

Only for retail product codes. GS1 licenses the number, not the image — any generator can render it. Internal barcodes (inventory, assets, tickets) need no license at all; Code 128 with your own numbering is standard practice.

Related tools

← All tools