WBest Barcode Generator

Create scannable Code 128 and EAN-13 barcodes and download them as PNG or print-ready SVG. No watermark, no sign-up, never expires.

🔒 100% private, encoded in your browser, never uploaded View source on GitHub

Barcode

2 px
80 px

Real, scannable symbols

Proper encoding, checksums, and quiet zones, not a picture of a barcode. Download the SVG and the bar edges land exactly where a scanner expects them.

No watermark, no expiry

The image is yours the moment it renders. Nothing is stamped on it, nothing is gated behind an account, and no barcode ever stops working.

Your numbers stay yours

Product codes and internal references are encoded on your device and never uploaded. The page keeps working offline.

Code 128 vs. EAN-13: which one do you need?

Almost every barcode question comes down to this choice, and it is decided by who scans it, not by which looks better.

Code 128: for your own labels

Code 128 encodes the full printable ASCII set: letters, digits, spaces, and punctuation. It is dense, it is what shipping carriers and warehouses use, and you can put whatever you like in it: WB-INVENTORY-0042, a location, a serial number. Nobody needs to issue you a number first. If the barcode is scanned inside your own business, this is the right answer.

It is called 128 because it covers all 128 ASCII characters, using three code sets (A, B, and C) that it switches between mid-symbol. Code set C packs two digits into a single character, so long runs of numbers get noticeably shorter. This generator picks and switches the code sets for you, and adds the mandatory checksum automatically.

EAN-13: for retail checkouts

EAN-13 encodes exactly 13 digits and nothing else. It is the barcode on the back of supermarket products worldwide (the 12-digit UPC-A used in North America is the same system). The digits are not arbitrary: they begin with a company prefix issued by GS1, then your product reference, then a check digit.

That last point is the one people miss. This tool will happily render any 13-digit number as a technically perfect EAN-13, but only GS1 can allocate a number that is genuinely yours. Making one up may collide with a real product on someone else's shelf. For internal use, reach for Code 128 instead.

Choosing between the two symbologies this tool generates.
Code 128EAN-13
EncodesPrintable ASCII: letters, digits, punctuationExactly 13 digits
LengthAny (symbol grows with the data)Fixed
RegistrationNone, use it todayGS1 company prefix required for retail
Check digitEncoded in the bars, not printed13th digit, printed and scanned
Typical useInventory, assets, shipping, internal labelsProducts sold at a retail checkout

Printing barcodes that actually scan

A barcode that looks fine on screen can still fail at the scanner. Three things decide it:

1. Keep the quiet zone

The blank margin either side of the symbol is not padding. It is part of the barcode. Scanners use it to find where the code begins and ends. Every download here includes it, so the fix is simply: do not crop it, and do not place text or artwork inside it.

2. Print big enough, in vector

The narrowest bar is what limits everything. Print too small and neighbouring bars blur into one. Use the SVG download for anything on paper. It scales without ever softening an edge. If you must use PNG, raise the bar width first so the exported pixels have room.

3. Contrast, and nothing clever

Dark bars on a plain light background. Not on a photo, not on a gradient, not in a pale color because it matches the packaging. Red bars in particular can disappear entirely to a red-laser scanner. And always test-scan a printed sample. Phone scanning apps are more forgiving than checkout hardware, so pass on the real device if you can.

Frequently asked questions

Which barcode type should I use?

Use Code 128 for internal purposes such as inventory labels, asset tags, shipping references, and warehouse locations, because it encodes letters, digits, and punctuation in a compact symbol. Use EAN-13 only for retail products that will be scanned at a checkout, since it encodes exactly 13 digits and those digits must come from a GS1-issued company prefix.

What is a barcode check digit?

A check digit is a final digit calculated from all the preceding digits. The scanner recalculates it and compares, so a misread or mistyped digit is rejected rather than silently accepted as a different product. This generator calculates the EAN-13 check digit for you when you enter 12 digits, and verifies it when you enter all 13. Code 128 also carries a checksum, but it is encoded in the bars rather than printed.

Can I use these barcodes on products I sell in shops?

Only if the number is yours to use. Retail EAN-13 numbers are built on a company prefix issued by GS1, the organization that administers them globally. This tool renders any valid 13-digit number correctly, but it cannot assign you a number, and inventing one risks colliding with another company's product. For barcodes used only inside your own business, no registration is needed and Code 128 is usually the better choice.

Should I download PNG or SVG?

Choose SVG for anything printed. It is a vector, so it stays perfectly sharp at any size and the bar edges land exactly where the geometry says, which is what scanners need. Choose PNG for screens, email, or tools that cannot place an SVG. If you print a PNG, generate it at a large bar width so the bars do not blur.

Why will my printed barcode not scan?

The three usual causes are size, contrast, and quiet zone. Printing too small makes narrow bars blur together, so increase the bar width and print at full resolution. Low contrast breaks it too: keep bars dark on a plain light background, and never print on a busy image. Finally, leave the empty margin either side of the symbol intact. That quiet zone is included in every download here, and cropping it off is the most common reason a barcode stops scanning.

Is my barcode data sent anywhere?

No. The barcode is encoded and drawn in your browser with JavaScript, so your product numbers and internal references are never uploaded, logged, or tracked. There is no account, no watermark, and no expiry, and the page keeps working offline once loaded.