Barcode Generator
Generate vector (SVG) barcodes for Code 128, EAN-13, UPC-A, and QR Code, with correct check digits and quiet zones, entirely in your browser.
Runs entirely in your browser — nothing is uploaded.
Code 128 and QR Code accept any text. EAN-13 needs 12-13 digits, UPC-A needs 11-12 digits.
Choosing a barcode symbology
"Barcode" isn't one format — it's a family of encoding schemes (symbologies), each suited to a different job. Code 128 is the general-purpose workhorse: it encodes the full ASCII character set at high density, which makes it the default choice for internal tracking numbers, serial numbers, and logistics labels where you control both the printer and the scanner. EAN-13 and UPC-A are retail symbologies — fixed-length, numeric-only, and tied to a global product-numbering system (GS1) that retailers' point-of-sale systems expect. You don't get to choose your own EAN/UPC number; it has to be issued through GS1 or a reseller, because the whole point is that it's globally unique. QR Code is a 2D symbology that trades the "scan from across the room" range of a laser scanner for much higher data density and the ability to be read by any phone camera — the right choice for URLs, marketing codes, or anything a consumer scans rather than a warehouse scanner.
What quiet zones are, and why skipping them breaks scanning
A "quiet zone" is the blank margin of empty space required immediately before and after a barcode's bars (and around all four sides of a 2D code). Scanners use that blank space to recognize where the barcode starts — without it, the scanner can't reliably tell the difference between the barcode's first bar and whatever text or graphic sits next to it, and reads fail intermittently, often only on some scanners and not others, which makes the problem maddening to track down after the fact. Quiet zone width isn't arbitrary either: each symbology's specification defines it relative to the barcode's narrowest bar width (its "module"), not as a fixed distance — a barcode printed larger needs a proportionally larger quiet zone. This tool always renders the specification-correct quiet zone for the selected symbology; if you're placing a barcode into a design manually, that's the single most common thing to get wrong.
Vector vs. raster: why SVG is the right output for print
A raster image (PNG, JPEG) is a fixed grid of pixels — scale it up and the bars blur or alias, which is exactly the kind of edge softness that makes a scanner's decode algorithm struggle. A vector image (SVG, EPS, or a PDF built from vector paths) describes the bars as exact geometric shapes, so it prints at any size or resolution with perfectly sharp edges. For anything going to a professional printer or a print-ready PDF, vector is the correct choice; PNG is fine for on-screen use (a webpage, an email) where "resolution" is a fixed, known quantity rather than something a print shop's RIP will rescale.
Check digits, briefly
EAN-13, UPC-A, and several other numeric symbologies end in a check digit — a number calculated from all the preceding digits using a fixed formula (a weighted sum, modulo 10, for EAN/UPC specifically). Its only job is error detection: if a digit gets mistyped or a scan misreads one character, the check digit almost certainly won't match anymore, and the scanner rejects the read instead of silently returning the wrong product. When you enter a 12-digit UPC-A or 12-digit EAN-13 value into this tool (one digit short), the check digit is calculated for you automatically; enter the full length including what you believe is the correct check digit, and most barcode tooling (including production systems) will instead verify it and flag a mismatch rather than silently trusting it.
Testing before committing to a print run
A barcode that looks fine on screen can still fail to scan once printed, for reasons that have nothing to do with the encoding itself: a thermal printer with a worn printhead producing uneven bar edges, label stock with too much gloss causing scanner glare, a bar code printed smaller than the symbology's minimum reliable size, or bar width reduction (a thermal-transfer printing compensation setting) not accounted for at design time. Before committing to a full print run, print a single test label on the actual printer and stock you'll use in production, and scan it with the actual scanner (or scanner model) it needs to work with — not just a phone camera app, which is far more forgiving than a dedicated laser or imager scanner.
Need this inside your own system?
Label Platform does this at scale — driven directly from your data, not one label at a time.
See Label Platform →