What is a QR and barcode label generator?
Generating one QR code is easy — dozens of sites will do it, and your phone can probably do it too. The hard part starts at scale. You have 240 storage boxes, or 1,800 library items, or a spreadsheet of SKUs from your supplier, and you need every one of them turned into a code, laid out on a sheet you can actually feed through a printer, at a size the scanner will read.
That is the gap this tool fills. It takes a list — pasted, typed, or imported from a CSV — and turns each row into its own label. Every label carries a code plus whatever text you want next to it, and the labels are arranged automatically on the paper you choose, with the grid, the page count and the cutting marks worked out for you.
The whole flow in one line: paste data → generate codes → customise labels → arrange on the sheet → preview → print. Everything on this page exists to move you along that line without a detour into design software.
Two design decisions are worth knowing about, because they affect the output you get. First, the labels are drawn as vector SVG rather than as images. A QR code drawn as vector prints at whatever resolution your printer supports — 600 or 1200 dots per inch — instead of being blown up from a 300 dpi bitmap, so the module edges stay hard and the scanner sees clean transitions. Second, the exported PDF is vector too: each module and each bar is a rectangle in the PDF, not a picture of one.
How to create QR code labels
The short version: paste your values, pick QR, choose a size, print. The longer version has a few decisions in it worth making deliberately.
- Get your values in. One per line in the paste box is enough for a simple job. If you have several columns — a code plus a product name and a price — paste the whole table, including the header row, and the columns are detected.
- Choose the QR content type. A QR code holding
https://example.com/xas plain text and one built as a URL payload look identical, but the second is what makes a phone camera offer to open the link. The same applies to Wi-Fi credentials, email addresses and contact cards, which each need their own payload syntax. Pick the type that matches what you want to happen when someone scans. - Set the error correction level. M is the sensible default. Go to Q or H only if the labels will be handled roughly, printed on textured stock, or partly covered by a logo — and understand that higher correction packs more modules into the same square, making each one smaller.
- Size the code. The code size slider is a percentage of the label. Watch the module size readout: below about 0.4 mm you are relying on a very good printer and a very patient scanner.
- Add your text lines. Bind each line to a column so every label fills itself in from its own row.
How to create barcode labels
Barcodes are less forgiving than QR codes, because each format has rules about what it can encode, and breaking those rules produces a symbol that looks fine and scans as nonsense — or does not scan at all.
So the flow adds a validation step. Choose a format and every row is checked against it before anything is drawn. EAN-13 rows must be exactly 13 digits with a valid check digit. Code 39 rows may only contain the 43 characters that format supports. Codabar values must be wrapped in a start and stop letter. Rows that fail are listed with the reason in plain words, and you can remove them in one click or fix them in the grid.
Two conveniences worth knowing:
- Check digits are calculated for you. Paste 12 digits for an EAN-13 and switch on Add check digit, and the thirteenth is computed with the standard GS1 mod-10 weighting. Paste 13 digits with the wrong final digit and the tool tells you what it should be.
- Code 128 switches modes on its own. Runs of digits are packed two-per-symbol in its numeric mode and everything else falls back to the alphanumeric mode, which is why a 12-digit Code 128 barcode is much narrower than a 12-letter one.
How to generate hundreds of QR codes at once
There is no separate bulk mode — bulk is the normal mode. Every row in the grid is a label, so 400 rows is 400 labels. What changes at that scale is how the work is scheduled.
Generating several hundred QR codes takes real computation: each one is a Reed-Solomon encode plus a mask evaluation. Doing that in one synchronous loop freezes the tab. Instead the work is broken into chunks with the browser given a chance to breathe between them, and a progress bar appears once a batch is large enough to be worth reporting. Identical values are encoded once and reused, so a list with repeats costs no more than a list without.
The sheet preview renders one page at a time rather than all of them. A 40-page job would otherwise put tens of thousands of elements into the document for no benefit, since you can only look at one page anyway. Printing and exporting build every page, which is why those actions show progress on big jobs.
Practical ceiling: a few hundred labels is comfortable on any machine, a couple of thousand is workable on a desktop, and beyond that you are better off splitting the job into batches — which is also easier to check and to cut.
How to generate labels from a CSV or spreadsheet
Most real label jobs start life in a spreadsheet, so there are two routes in and they end up in the same place.
Paste. Select the rows in Excel, Google Sheets or LibreOffice — including the header row — copy, and paste. Spreadsheets put tab-separated text on the clipboard, which is detected automatically. This is the fastest route and involves no file at all.
Import a file. Choose a CSV or TSV and it is read locally. Quoted fields containing commas are handled properly, so "Widget, blue" stays in one column instead of splitting in two.
Either way, the columns land in the editable grid and you choose which one supplies the code value. That choice matters more than it looks: for a retail label the barcode comes from the SKU or GTIN column while the text lines show the product name and price, whereas for an asset label the QR usually holds a URL built from an asset ID. Any column can drive the code, and the rest are available to the text lines.
Preparing the data
- One header row, then one item per row. No merged cells and no blank spacer rows.
- Keep leading zeros intact. Spreadsheets love to eat them — a GTIN of
0036000291452becomes36000291452if the column is formatted as a number. Format the column as text before you export. - Decide how prices and dates should read before importing. The tool prints text exactly as it receives it.
- Check for duplicate codes. The tool flags them, but it is easier to fix the source.
How to print QR codes and labels on A4 paper
You have two options, and they need different settings.
Printing onto pre-cut label sheets. Set the label size, margins and gaps to match your sheet's specification exactly — the manufacturer publishes them, usually in millimetres. Print one page onto plain paper first, hold it up to a blank label sheet against a window, and check the alignment before you waste a real sheet. Nudge the page margin by a millimetre at a time if the whole grid sits high or low.
Printing onto plain paper or card and cutting. Simpler, cheaper, and what most people actually do. Turn on crop marks, print, and cut with a guillotine. You are free to choose any label size you like, so pick one that divides the page nicely.
The print dialog settings that matter
- Scale: 100% or Actual size. Never Fit to page. That option shrinks everything by a few percent to clear the printer's unprintable border, which is invisible to the eye and fatal to a barcode that was already close to its minimum bar width.
- Headers and footers: off. Otherwise the browser stamps the URL and date onto your sheet and can shift the layout.
- Background graphics: on if your labels have any fill or border.
- Paper size in the dialog must match the paper size in the tool. A sheet laid out for A4 sent to a Letter tray will be rescaled.
If your printer cannot print within 8 mm of the paper edge, increase the page margin in the tool rather than scaling the page down. That keeps every label at its true size and simply moves the grid inwards.
What people use label sheets for
Product and retail labels
A retail label is usually a barcode plus a product name and a price. If the product is sold through tills that read GS1 barcodes, you need EAN-13 or UPC-A with a genuine company prefix — you cannot invent those numbers, because they are allocated to a specific business and a duplicate will ring up as somebody else's product. For a market stall, a café, or anything scanned only by your own till, Code 128 with your own SKU is simpler and packs more into less width.
Inventory and stock labels
Inventory labels want a code and a human-readable line, because people need to find things by eye as well as by scanner. Code 128 is the usual choice. Keep the value short: A-12-04 beats AISLE-12-SHELF-04 both in bar width and in how quickly someone can read it out over a radio.
Warehouse and location labels
Location labels get scanned at distance, often from a forklift, so they need to be much bigger than product labels — 100 mm wide or more, with a tall symbol. Bar height matters here: a scanner sweeping across a tall barcode has more chances to catch a clean line, which is why warehouse labels look so stretched compared to retail ones.
Asset tracking with QR codes
Asset tags are the best case for QR rather than a barcode, because a QR code can hold a URL. Point it at a page in your asset register — https://example.com/asset/00194 — and anyone with a phone can see the maintenance history without special hardware. Use the sequential numbering tool to produce the ID series and bind the URL column to the code.
Two practical notes: QR codes on equipment get scratched and greasy, so error correction Q or H earns its place there; and printing the asset ID as text next to the code means the tag is still useful after the QR has been damaged.
Event, ticket and visitor labels
Ticket labels usually pair a QR code holding a unique ticket reference with the attendee's name and seat printed alongside. Generate the references with the numbering tool or import them from your ticketing export, and use the duplicate check before printing — two tickets with the same code is a problem you want to find in advance.
Storage, library and equipment labels
Home and office storage is the simplest case of all: a QR or barcode holding a box number, the box number printed large next to it, and a contents line underneath. Libraries typically use Codabar, which is why that format is still supported decades after it stopped being fashionable.
QR codes vs barcodes: which should you use?
They solve different problems, and the choice is usually obvious once you ask what will do the scanning.
| Linear barcode | QR code | |
|---|---|---|
| Reads with | Laser and imager scanners, phones with an app | Any phone camera, imager scanners |
| Capacity | A short code, typically under 20 characters | Hundreds of characters, including URLs |
| Shape | Wide and short — needs horizontal room | Square — fits a small label better |
| Damage tolerance | Low; a scratch across the bars kills it | High; 15–30% can be lost and still decode |
| Till compatibility | EAN-13 and UPC-A are the retail standard | Not used at traditional tills |
| Best for | Retail products, stock rooms, existing scanner fleets | Asset tags, tickets, anything linking to a page |
The deciding question is rarely technical. If your business already owns laser scanners, use a barcode. If the people scanning will be using their own phones, use a QR code. If the item is sold in a shop, the format is chosen for you.
Choosing the right barcode format
| Format | Accepts | Use it for |
|---|---|---|
| Code 128 | Letters, digits, punctuation | The default for internal codes — SKUs, asset tags, shipping references. Compact and widely read. |
| Code 39 | A–Z, 0–9, and - . $ / + % | Legacy scanners, government and automotive systems. Wider than Code 128 for the same data. |
| EAN-13 | Exactly 13 digits | Retail products worldwide. Needs a real GS1 prefix for public sale. |
| EAN-8 | Exactly 8 digits | Small retail packaging where EAN-13 will not fit. |
| UPC-A | Exactly 12 digits | Retail in the United States and Canada. |
| ITF-14 | Exactly 14 digits | Shipping cartons and outer cases. Prints reliably on corrugated board. |
| Codabar | Digits and - $ : / . +, wrapped in A–D | Libraries, blood banks, photo labs, membership cards. |
If you are not sure, the answer is almost always Code 128. It handles anything you are likely to put in an internal code, produces the narrowest symbol for a given value, and every scanner made in the last thirty years reads it.
Choosing the right label size
Label size is a negotiation between how many fit on a sheet and how reliably they scan. Smaller labels waste less paper and more of them fit; but every millimetre you remove shrinks the code inside them.
| Label size | Grid | Per A4 | Typical use |
|---|---|---|---|
| 25 × 25 mm | 7 × 10 | 70 | Small QR-only asset dots |
| 38 × 21 mm | 4 × 12 | 48 | Address-style labels, small SKUs |
| 50 × 25 mm | 3 × 10 | 30 | The general-purpose product label |
| 2 × 1 in (50.8 × 25.4 mm) | 3 × 10 | 30 | The American equivalent |
| 63.5 × 38.1 mm | 2 × 7 | 14 | Larger product and shelf labels |
| 3 × 2 in (76.2 × 50.8 mm) | 2 × 5 | 10 | Shipping and carton labels |
| 4 × 2 in (101.6 × 50.8 mm) | 1 × 5 | 5 | Warehouse location labels |
A useful rule when you are undecided: start from the code, not the label. Work out the smallest code that will scan reliably in your environment, add the quiet zone, add room for the text you need, and the label size falls out of that. Choosing the label first and then squeezing the code into whatever space is left is how unscannable labels get made.
QR code and barcode printing tips
Module and bar size
This is the number that decides whether your labels work. For a linear barcode the critical dimension is the X-dimension — the width of the narrowest bar. GS1 requires at least 0.264 mm for retail symbols, and 0.33 mm is a far more comfortable target on office printers. For internal Code 128 you can go down to about 0.25 mm on a good laser printer, and no lower.
For QR codes the equivalent is the module — one of the small squares. Below roughly 0.4 mm on a laser printer, toner spread starts merging adjacent modules and read rates fall off. The tool shows the current module or bar size in the statistics panel and warns you when it drops into the danger zone.
Quiet zones
The blank margin around a symbol is part of the symbol. Scanners use it to find where the code begins and ends, and clipping it is one of the most common causes of a code that will not read. Linear barcodes want at least ten times the narrow bar width of clear space on the left and right; EAN-13 specifically wants 11 modules on the left and 7 on the right. QR codes want four modules of clear space, though two is usually tolerable at close range. Keep some label padding and do not cut right up to the bars.
Printer and paper
- Laser beats inkjet for small codes. Toner sits on the surface; ink soaks into paper fibres and spreads, thickening bars and eroding the gaps between them.
- Matte beats glossy. Gloss reflects the scanner's own light straight back at it.
- Print black on white. Not dark blue, not dark grey. Scanners judge contrast, and coloured "black" often has far less of it than it appears to have.
- Never scale a printed sheet on a photocopier afterwards.
- Keep bars vertical relative to the scan direction for handheld laser scanners, or use a tall symbol so the beam has a wide target.
Avoiding scanning problems
When a printed code will not scan, work through this list in order — it is almost always one of the first three:
- The print dialog scaled the page. Check that scale is 100%.
- The bars or modules are below the minimum size. Check the statistics panel.
- The quiet zone was cut off, or something was printed too close to the symbol.
- The contrast is poor — light toner, coloured paper, or a nearly empty cartridge.
- The paper is glossy and reflecting the scanner's light.
- The data is not valid for the format — which the tool checks, but a code fixed by hand afterwards may not be.
Test-scan one printed label, not the screen. Screens are backlit and far more forgiving than paper.
Working efficiently with bulk labels
A few habits make large jobs much less painful:
- Check duplicates before printing. Duplicate asset IDs or ticket references cause problems that surface weeks later.
- Print one page as a proof. Cut a label from it, scan it, hold it against the item it will go on.
- Print in batches you can actually cut. Ten pages is a manageable sitting; sixty is not.
- Keep the source data. Export the CSV so the same batch can be reprinted identically when a label peels off.
- Number sequentially with padding.
BOX-007sorts correctly in every system;BOX-7does not.
Privacy and browser-based processing
Label data is often more sensitive than it looks. A stock list reveals what a business holds and where; an asset export names equipment and locations; a ticket file is a list of customers. That data does not need to travel anywhere for a QR code to be drawn.
So it does not. The QR encoder and the barcode encoders run as JavaScript in your tab, the labels are built as SVG in the page, and the PDF is assembled in the browser. There is no upload endpoint on this page, which means there is nothing to delete afterwards and no copy of your list sitting on a server.
Two honest caveats, because vague reassurance helps nobody:
- Your work — the grid contents and the settings — is saved to this browser's
localStorageso a refresh does not lose it. That is data at rest on your own machine. On a shared computer, use Reset everything when you finish. - Printing hands the document to your operating system's print system, and downloading writes a file to disk. What happens to a spooled job or a saved PDF after that is governed by your own machine and network, not by this page.