← Toolz / Design & Color / Barcode Generator

Barcode Generator

Create proper, spec-compliant barcodes — the same Barcode Writer in Pure PostScript engine used by professionals — for products, inventory, tickets and labels. Pick a symbology, type your data, and download a print-ready PNG or a vector SVG — or switch to Bulk from CSV and generate a whole list of barcodes as one ZIP. Everything is generated in your browser; nothing is uploaded. Need a QR code instead? Use the QR Code Generator. Need to read one back? The Barcode Scanner decodes them.

The gap between the bottom of the bars and the printed number.

Scanners need contrast and a quiet zone: keep bars dark on a light background and leave the padding in place for anything that will actually be scanned.

The preview is rendered at the same print resolution as the PNG, so what you see is exactly what prints. The SVG is a true vector — scale it to any size for labels and packaging.

For product labels, stock rooms, events and shipping — real barcodes that real scanners can read.

100% free · No sign-up · No daily limits · No watermarks · Processed in your browser — files never leave your device

UNDERSTAND YOUR RESULTS

Barcode Generator — EAN, UPC, Code 128, Data Matrix & More guide

Generate spec-compliant barcodes free in your browser: EAN-13, EAN-8, UPC-A, UPC-E, ITF-14, Code 128, Code 39, Code 93, GS1-128, Interleaved 2 of 5, Data Matrix, PDF417 and Aztec. Customise size, height, colours, padding and the space under the bars, then download a print-ready PNG or a vector SVG — or generate a whole list at once from a CSV file and take it away as a ZIP. Nothing is uploaded.

📖 From the blog: Generating barcodes for products, stock and labels

How to use this tool

  1. Choose the barcode type for your job — EAN-13 for retail products, Code 128 for inventory and labels, ITF-14 for shipping cartons, Data Matrix for tiny industrial codes. The sample data and the hint under the data box show exactly what the format expects.
  2. Type your data. Retail formats accept the number without its check digit and add it for you; if you type the full number, the check digit is verified and an error is shown if it is wrong. Adjust resolution, bar height, padding, colours and the text gap — the space between the bars and the printed number — while the preview updates live.
  3. Download the PNG (rendered at print resolution, exactly as previewed) or the SVG (a true vector for labels and packaging at any size).
  4. Need a whole list? Switch to Bulk from CSV: column 1 of the CSV holds the data, optional column 2 a file name. Every row is checked against the chosen type — a header row is skipped automatically and invalid rows are listed with the reason — then one click downloads a ZIP with a PNG and an SVG for each valid row.

A worked example

A small shop printing shelf labels: choose EAN-13, type the 12-digit product number from the supplier list, keep the standard black-on-white with padding, and download the SVG — the print shop can scale it to the label size with zero quality loss, and the check digit is guaranteed correct because the generator computed it.

What you can do with this tool

How it works

Barcodes are drawn by bwip-js, the JavaScript port of Barcode Writer in Pure PostScript — the same encoding engine behind many professional label tools. Each symbology is encoded exactly to its specification: module widths, start/stop patterns, and check digits computed with the standard algorithms (mod-10 for EAN/UPC/ITF, mod-43 for Code 39 where applicable, Reed-Solomon error correction inside the 2D codes). Colours, scale, bar height, rotation, quiet-zone padding and the text gap are applied at render time. Bulk mode encodes and validates each CSV row with the same engine, then packages the images with JSZip.

Frequently asked questions

Which barcode type do I need for products I sell?

EAN-13 in most of the world, UPC-A in the US and Canada. The number itself must come from GS1 (your national GS1 organisation licenses GTINs) — this generator creates the barcode image from your number, it does not issue numbers.

What is a check digit and why does the tool add it?

The last digit of an EAN/UPC/ITF number is computed from the others with a mod-10 formula — scanners use it to catch misreads. Type the number without it and the tool adds the correct one; type it with a wrong one and you get an error instead of a broken barcode.

PNG or SVG — which should I download?

SVG for print and labels: it is a vector and stays razor sharp at any size. PNG for screens, documents and anywhere a quick image is easier — it is rendered at full print resolution to stay crisp.

Why does my barcode not scan?

Usually physics, not data: bars printed too small, low contrast (coloured bars on colour), the quiet-zone padding cropped off, or a glossy surface reflecting the scanner light. Keep bars dark on white, padding on, and test with the Barcode Scanner tool or a phone before printing a batch.

How do I add space between the bars and the numbers?

Use the Space under bars (text gap) slider. It widens the gap between the bottom of the bars and the human-readable number in the preview, the PNG and the SVG alike. It applies while “Show the data as text” is ticked, and it is purely cosmetic — scanners read the bars, not the gap, so pick whatever looks right on your labels.

Can I generate barcodes in bulk from a spreadsheet?

Yes. Save the sheet as a CSV with the barcode data in column 1 and an optional file name in column 2, then open Bulk from CSV on this page and drop the file in. The barcode type and settings on the page apply to every row, a header row is skipped automatically, and rows that fail validation are skipped and listed with their reasons. The results download as one ZIP with a PNG and an SVG per barcode; a few hundred rows at a time is comfortable.

Is my data uploaded anywhere?

No. The barcode engine runs entirely in your browser as JavaScript — product numbers and label data never leave your device.

What data will each barcode type accept — and what will it reject?

Each format has its own rules, and the tool shows an error in plain language instead of producing a broken code. For example, Code 39 cannot hold lowercase letters, Interleaved 2 of 5 needs an even number of digits, and a UPC-E only exists for UPC-A numbers that compress. Check the hint under the data box for the type you picked before typing a long list.