Free Barcode Generator — Bulk Generation and Excel Support

No sign-up, no item cap, no watermark. Nothing you type is sent to a server — everything is generated inside your browser.

This tool renders 100+ symbologies with the open-source bwip-js (MIT). Libraries are served from our own server; no request goes to a third-party CDN.

Which barcode type should I use?

The right answer depends on where the barcode will be scanned. A barcode belongs to the system it lives in more than to the data it carries: the scanner at a supermarket till and the handheld in your warehouse do not expect the same symbol.

Where you will use it Type Why
Retail shelf, supermarket till, marketplace EAN-13 / UPC-A The only accepted standard. But the number must be allocated to you — see the GTIN section below.
Internal stock, bin location, work order, asset Code 128 Takes letters and digits, is compact, and every scanner reads it. Wherever you use your own codes, this is the default.
Carton / outer case (containing N units) ITF-14 Tolerant enough to be read even when printed straight onto corrugated board. Digits only.
Pallet, shipping unit, supplier portal GS1-128 Carries several fields — batch, best-before, quantity — in one barcode, using application identifiers.
Very small part, electronics, medical DataMatrix Fits in a few square millimetres and still reads when partly damaged.
A link or text to be scanned by phone QR Every phone camera reads it. For long text, choose this over a 1D barcode.

Supported barcode types

The tool renders more than a hundred symbologies. The six most used are explained below; the full list is in the type menu above — including postal codes (Royal Mail, USPS, Japan Post), pharmacy codes (PZN, Pharmacode), healthcare HIBC variants and the GS1 Composite family.

Code 128

The most flexible 1D barcode: it encodes all 128 ASCII characters, so a code mixing letters, digits and punctuation fits in a single symbol. It has three subsets (A, B, C) and the tool switches between them automatically to produce the shortest symbol — for all-numeric data the C subset packs two digits into one character, which shortens the barcode noticeably. It has no fixed length, but long values make it wide; beyond roughly 20 characters a 2D code is usually the better answer. It is the default choice for internal stock codes, bin locations, work orders and serial numbers.

EAN-13 / EAN-8 / UPC-A

These are the retail product barcodes and they take digits only: thirteen for EAN-13, eight for EAN-8, twelve for UPC-A. The last digit is always the check digit; enter twelve digits and the tool computes the thirteenth for you. The structure is fixed: the leading digits are the GS1 company prefix, the middle ones the item reference, the last one the check digit. EAN-8 is reserved for packs too small to carry a thirteen-digit symbol (a stick of gum, a single chocolate bar) and is requested separately from GS1. You can draw these types with this tool, but drawing one and owning the number are different things — the next section explains why.

ITF-14

This is the carton and outer-case barcode. It is fourteen digits and carries the GTIN of the product inside together with a "packaging indicator" digit — encoding "this case contains so many of that item". Its distinguishing property is tolerance: its thick bars and the surrounding bearer bar mean it still reads when flexo-printed straight onto corrugated board. That makes it the choice of manufacturers who do not want to apply a separate label to the case. It takes digits only and the length is fixed; enter thirteen digits and the tool completes the check digit.

GS1-128

This is Code 128 structured by GS1 rules. The difference: it carries several data fields in one barcode, each preceded by an application identifier (AI) saying what it is. For example (01) is the GTIN, (10) the batch number, (17) the expiry date, (37) the count. You type the value in bracketed form — for example (01)09521234543213(3103)000123 — the brackets are for readability only and are not part of the encoded data. It is used on pallet labels, on shipping units sent to supplier portals, and in food and pharmaceutical chains where traceability is required. Getting the field structure wrong causes the barcode to be rejected at the supplier portal, so confirm the AI list your customer expects beforehand.

QR

The most widespread 2D code, and today every phone camera reads it. Its real advantage over a 1D barcode is capacity: it carries up to a few thousand characters, so a URL, a vCard or a few lines of free text will fit. It has four levels of error correction; at the highest level roughly a third of the symbol can be damaged and it still reads — which is why a logo can sit in the middle. Its drawback is that, being square, it uses space less efficiently than a 1D barcode on narrow, long labels. If you want to capture a long load description in a single scan inside a warehouse, QR is far more reliable than Code 128: a Code 128 symbol carrying the same data thins its modules past what a scanner can resolve.

DataMatrix

Like QR it is two-dimensional, but it fits into a far smaller area — a square of a few square millimetres is enough. That is why it is used with direct part marking (laser, dot peen) on items that cannot take a label: circuit boards, surgical instruments, small machined parts. Its error correction is strong; the symbol still reads when part of it is worn or scratched. The GS1 DataMatrix variant, used under GS1 rules, is in practice the European standard for carrying serial numbers and expiry dates in the pharmaceutical sector. Its drawbacks are that phone cameras read it less comfortably than QR and that the scanner must support the symbology.

Bulk barcodes from Excel

For most people who need barcodes the data is already in a spreadsheet. So the tool offers two routes rather than a row-by-row form: paste the values straight from Excel, or upload the .xlsx or .csv file as it is.

The paste route treats the tab character as a column separator — when you copy a cell range in Excel the clipboard is already in that format. The first column is the value to encode. If there is a second column it is used as the text under the barcode: you can produce a label that reads "Red screw M6" while still encoding ABC-0001. That distinction matters in practice, because the person reading the label and the device scanning it need different information.

When generation finishes you see a per-row status. Bad rows do not stop the job; they are flagged in red with the reason — for example "EAN-13 must be 12 or 13 digits". So in a list of 400 rows you fix only the three that failed.

Export .xlsx with embedded barcodes

One of the outputs you can take after a bulk run is an Excel file with the barcode images embedded inside the cells. Open the file and you see the barcode itself next to the value; there is no separate image folder to manage.

This is rare among free barcode generators — most either download images only, or put a plain text list into Excel. The file is built on your own device; at no point does it reach our server. Alternatively you can download the barcodes as PNG or SVG files in a ZIP archive; file names are derived from the encoded value, so when you unpack the archive it is obvious which file belongs to which item.

A4 label sheets: columns, rows and millimetres

If you are going to print the barcodes, what you want is not individual images but a full sheet of labels. The tool lays your generated barcodes onto an A4 (or Letter, or A5) page and leaves the layout entirely to you: how many columns, how many rows, the label size in millimetres, the top and left margins, and the gap between labels.

There are presets for the common label stocks on the market (for example 70×37 mm in a 3×8 grid, 105×48 mm in 2×6, 38×21 mm in 5×13). Choosing a preset fills the column, row and size fields together; you can then override any of them. If you use a thermal label printer you can set the page size to the label size itself (100×150, 100×50 or 58×40 mm) — each label then becomes its own page.

The PDF is produced as vector: the bars stay sharp even at 400% zoom and the printer renders the barcode at its own resolution. Compared with a raster output, that makes a visible difference to scan reliability.

Size, aspect ratio and human-readable text

Width and height are entered in millimetres, because the meaningful measure of a barcode is its physical size, not pixels. A barcode that looks fine on screen may not scan when printed 20 mm wide; what decides is the bar thickness.

You can set the human-readable text three ways: below, above, or not at all. That text is not the barcode's data — no scanner reads it, only people do. Still, think before removing it: when a label is creased, wet, or the scanner fails, that line is the only fallback that lets someone key the code in by hand. Unless space is genuinely tight, leaving it on pays for itself in the field. You can also change its size in points.

A warning about colours: barcode scanners work with red light, so red bars on a white background do not scan — to the scanner, red is indistinguishable from white. The safe choice is dark bars on a light background; black on white is always best. Inverting the contrast (light bars on a light background) also stops the code from reading.

This tool does not give you a barcode number (GTIN)

Drawing an EAN-13 symbol and owning that number are two different things. This tool draws the symbol; it does not allocate the number.

If you are going to put your product into a supermarket, a retail chain or a marketplace, the product number (GTIN) must be formally allocated to you. GS1 allocates it: in Türkiye that is GS1 Türkiye (the national numbering centre within TOBB), in Spain AECOC / GS1 España. You join as a company, you are given a company prefix, and you number your products under that prefix.

A barcode you draw from thirteen made-up digits is technically a valid symbol and a scanner will read it without trouble. But that number has not been allocated to you; in all likelihood it belongs to another company. The result is the wrong product appearing at the till, or the barcode not being recognised by the store's system at all. This is why retailers check the GS1 registration.

For codes you use inside your own operation, on the other hand, you need nobody's permission. Bin locations, work order numbers, asset tags, internal stock codes — as long as they do not leave your system you number them however you like, and Code 128 is made for exactly that. This is also where this tool is genuinely at home.

Sources: GS1 España · AECOC · GS1 Türkiye

Check digits, and why your input is rejected

In the EAN, UPC and ITF families the last digit is a check digit computed from the data. Its purpose is to catch a scanner misreading a digit, or a person mistyping the number: change a digit and the arithmetic no longer agrees, so the system rejects the code.

The calculation uses the Modulo-10 method. You do not have to supply the check digit here: enter 12 digits for EAN-13, 11 for UPC-A or 13 for ITF-14 and the tool computes the last one and shows it. If you enter the full length it validates the digit you supplied and warns you when it is wrong.

When a code is rejected the three commonest reasons are: the wrong number of digits (entering 11 digits for an EAN-13), a character the type does not accept (EAN and ITF take digits only, Code 39 takes no lower-case letters), or a hand-written check digit that was computed wrongly. The tool reports each of these separately, in plain words.

What actually decides whether a barcode scans is the width of its narrowest bar — the module width. The tool computes it from the dimensions you enter and shows it in millimetres under the preview, warning you when it falls below a safe threshold. That lets you catch the "it looked fine on screen but would not scan when printed" problem before you print.

The common mistakes, in order: trimming the quiet zone — the scanner works out where the barcode starts from that blank margin, and cutting the label close makes the code unreadable. Printing thermal labels too fast or with the head too cool, so the bars come out faint. Applying the label to a wet or oily surface. And enlarging a low-resolution image — take SVG or PDF from this tool and that problem never arises, since both are vector.

Trying to squeeze a long value into a single 1D barcode is another frequent mistake. A forty-character Code 128 thins its modules, at the same label width, past what a scanner can resolve; carrying the same data in a QR code is far safer. How we draw that line in the field is covered in barcode-verified loading . Which other details belong on a carton label besides the barcode is covered in what to put on a carton label.

Where does your data go?

Nowhere. The values you type on this page are not sent to our server. Barcode rendering, and the building of the PDF and Excel files, all happen inside your browser. No such endpoint exists on our server; you can verify it in your browser's network tab. Our server only sends the page and the library files. Like any web server it keeps an access log (IP address and timestamp), retained for 90 days.

The page uses no cookie and no local storage to remember your settings — reload it and the settings return to their defaults. That is deliberate: when nothing is stored, no consent question arises. The libraries are served from our own server; no request goes to a third-party CDN.

If you enter a third party's data (your customer's name in the caption under the barcode, say), you are the controller of that data. Privacy Policy and KVKK Information Notice explain the detail.

Frequently asked questions

Is this barcode generator free, and does it need a sign-up?

It is completely free and needs no account. There is no item cap, no watermark on the output, and every format including SVG is free. We do not ask for an email address either.

How do I generate barcodes in bulk from Excel?

Switch to the "Bulk generation" tab, select and copy the column of codes in Excel, and paste it into the text box. Alternatively upload your .xlsx or .csv file directly. Pick the type, press "Generate barcodes" and they are all produced at once.

Can I use the generated barcodes commercially?

Yes. We place no restriction on the images you produce, claim no copyright and add no watermark. The only limit concerns the number you encode — see the next question.

Can I sell a product with a barcode I made here?

No — not if you made the number up here. For retail, the product number (GTIN) must be allocated to you by GS1: GS1 Türkiye (TOBB) in Türkiye, AECOC in Spain. This tool draws the symbol; it does not allocate the number. See the GTIN section above.

How many digits does EAN-13 need, and who computes the check digit?

Twelve digits are enough; the tool computes the thirteenth — the check digit — with Modulo-10 and shows it to you. Enter thirteen and it validates the last digit, warning you if it is wrong.

How do I hide the text under the barcode?

Choose "Hide" under "Human-readable text". The same control moves the text above the barcode or changes its point size.

What is the difference between Code 128 and Code 39?

Code 39 is older, takes only upper-case letters and digits, and produces a noticeably wider symbol for the same data. Code 128 takes the full ASCII set and is far more compact. Unless you are feeding a legacy system that expects Code 39, use Code 128.

When should I use ITF-14?

When labelling a carton or outer case containing several units. Its thick bars keep it readable even when printed straight onto corrugated board. For an individual retail item you use EAN-13, not ITF-14.

How many labels fit on an A4 sheet, and how do I set the size?

Entirely up to you: you set columns, rows, label width and height, margins and the gap between labels, all in millimetres. There are presets for the common label stocks (70×37 mm in 3×8, 105×48 mm in 2×6, 38×21 mm in 5×13). The 70×37 mm preset, for instance, places 24 labels on an A4 sheet.

Can I export an Excel file with the barcode images inside?

Yes. After a bulk run the "Excel (.xlsx)" button downloads a file with the barcode images embedded inside the cells. The file is built on your own device.

Why is my barcode not scanning?

The commonest cause is bars that have been thinned too far. We show the module width in millimetres under the preview and warn when it drops below a safe threshold — widening the barcode is usually enough. Other causes: a trimmed quiet zone, faint thermal printing, low-contrast colours (red bars do not scan) and enlarging a low-resolution image. For that last one, download SVG or PDF instead of PNG.

Is my data uploaded to your server?

No. Rendering and file building happen entirely in your browser; there is no endpoint on the server that accepts form data. You can verify this in your browser's network tab.

If you need to label 200 cartons

This tool is enough for one-off jobs. But producing barcodes is only the first step of shipping work: the real question is being able to prove that the right carton went onto the right vehicle. Smartifie Logistic generates carton labels from order lines automatically, scans every carton during loading so short and over-shipments are caught as they happen, and produces the delivery note from the same data.

See Smartifie Logistic