Barcode Generator

Generate vector (SVG) barcodes across 15 symbologies — EAN/UPC, ITF-14, SSCC-18, GS1-128, Code 39, Codabar, MSI, QR Code, Data Matrix, PDF417, Aztec, and more — with correct check digits and quiet zones, entirely in your browser.

Runs entirely in your browser — nothing is uploaded.

Try an example:
Batch mode — generate up to 500 at once

One value per line, up to 500. Uses the symbology and sizing settings above. Nothing leaves your browser — generation and packaging both happen locally.

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, EAN-8,UPC-A, and UPC-E are retail symbologies — fixed-length, numeric-only, and tied to GS1's global product-numbering system that retailers' point-of-sale systems expect. ITF-14 and SSCC-18 are logistics symbologies for cases and pallets rather than individual retail units.GS1-128 carries structured GS1 Application Identifier data in one symbol — see the dedicated GS1-128 builder for constructing that data properly. Code 39, Codabar, andMSI are older general-purpose 1D symbologies still common in specific industries (Codabar in blood banks and libraries, for instance). The 2D symbologies —QR Code, Data Matrix, PDF417, andAztec Code — trade 1D's "scan from across the room" range for much higher data density in a much smaller footprint; GS1 DataMatrix is the GS1- structured variant behind Sunrise 2027 (see theGS1 Digital Link generator for the Digital-Link-URI variant of the same idea).

SymbologyCategoryCharacter setLengthCheck digit
Code 128General 1DFull ASCIIAny length (practical limit ~48 characters for a scannable size)No
EAN-13RetailDigits only12 digits (check digit calculated) or 13 (verified)Yes
EAN-8RetailDigits only7 digits (check digit calculated) or 8 (verified)Yes
UPC-ARetailDigits only11 digits (check digit calculated) or 12 (verified)Yes
UPC-ERetailDigits only7 digits (check digit calculated) or 8 (verified)Yes
ITF-14LogisticsDigits only13 digits (check digit calculated) or 14 (verified)Yes
SSCC-18LogisticsDigits only17 digits (check digit calculated) or 18 (verified)Yes
GS1-128LogisticsOne or more GS1 Application Identifiers, human-readable forme.g. (01)09506000134352(10)ABC123No
Code 39General 1DUppercase A-Z, digits, and - . $ / + % spaceAny lengthNo
CodabarGeneral 1DDigits, - $ : / . +, start/stop from A-DAny length, must start and end with A, B, C, or DNo
MSIGeneral 1DDigits onlyAny lengthYes
QR Code2DAny text or URLUp to ~4,000 characters (numeric) or ~2,900 (text)No
Data Matrix2DAny textUp to ~2,300 charactersNo
GS1 DataMatrix2DOne or more GS1 Application Identifiers, human-readable forme.g. (01)09506000134352(10)ABC123No
PDF4172DAny textUp to ~1,100 bytesNo
Aztec Code2DAny textUp to ~3,000 charactersNo

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, reads fail intermittently, often only on some scanners and not others. Quiet zone width is defined relative to the symbol's own module width, not as a fixed distance: retail (EAN/UPC) symbols need roughly 9 module widths of clear space, general 1D symbologies roughly 10, and 2D matrix symbols roughly 4 modules on every side. This tool always renders the specification-correct quiet zone; the "Highlight quiet zone" toggle draws that exact margin visually so you can see how much clear space your label design actually needs to leave.

DPI, module width, and magnification

A barcode's physical printed size is really a statement about its module width — the width of its single narrowest bar or square, in millimeters — not a pixel count, which only matters once you rasterize. For retail (EAN/UPC) symbols, GS1 defines a nominal module width (0.33mm) and expresses acceptable sizes as a percentage of it — "magnification" — typically 80% to 200%; this tool's magnification control sets the module width directly from that percentage. For every other symbology, set module width directly. Target DPI matters when you export a raster (PNG): it determines how many pixels this tool uses per module so the raster doesn't blur or alias at your intended print size — vector (SVG) output is resolution-independent and doesn't need this at all.

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) 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.

Check digits, briefly

EAN-13, EAN-8, UPC-A, UPC-E, ITF-14, and SSCC-18 all end in a check digit — a number calculated from the preceding digits using GS1's standard mod-10 weighting — whose only job is error detection: a mistyped or misscanned digit almost certainly won't match anymore, and the check catches it before it reaches a system that would otherwise silently accept wrong data. Enter one digit short of the full length and this tool calculates the check digit for you; enter the full length and it verifies whatever you typed, naming the expected digit if it doesn't match. Code 39 optionally supports a different scheme (mod-43, over a 42-character set including letters and symbols); MSI commonly uses the standard Luhn algorithm, though real-world MSI implementations also use mod10/mod10 and mod11/mod10 double-check-digit variants this tool doesn't implement — say so rather than silently picking one without comment.

Bar width reduction and thermal printing

Thermal transfer and direct thermal printers tend to print bars slightly wider than the digital file specifies, because heat spreads a little beyond the printhead element that applied it — a real, physical effect, not a software bug. Bar width reduction (BWR) compensates by shrinking each bar slightly in the source file so the as-printed result comes out correct; it's normally a printer-driver setting, but this tool's BWR control applies the same compensation directly to the generated 1D barcode's bar strokes, which is useful when you need the compensation baked into the file itself rather than configured per-printer. It has no effect on 2D symbols, which aren't printed as continuous bars.

Testing before committing to a print run

A barcode that looks fine on screen can still fail to scan once printed: a thermal printer with a worn printhead producing uneven bar edges, label stock with too much gloss causing scanner glare, or a module width below the reliable-scan threshold at your chosen size. 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.

Get the barcode symbology cheat sheet

Occasional emails when we ship something new. Unsubscribe anytime.

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 →