Bulk QR Code generator

A batch of QR codes has a property the linear symbologies do not: the symbols come out at different physical sizes. A QR grid grows in steps as the content lengthens, so a list of URLs where one is forty characters and the next is a hundred produces visibly different squares on the same sheet — and on a label with a fixed cutout, the long ones are the ones that stop scanning.

One value per line. A single line of comma- or semicolon-separated values works too. A header row (like “Value”) counts as a value and will be rejected — leave it out.

Nothing recognized yet.

Appearance
Size
Colours

Enter a value — the code appears here.

Specification

Character set
any data
Length
from 1 to 2953 characters
Check digit
not used by this symbology

Where this code earns its place in a batch

  • Per-item links at scale: the reader is the phone already in the customer's hand, so a run of QR labels needs no scanner bought, issued or configured.
  • Anything where the person scanning is not an employee — packaging, posters, table tents, parcels — because QR is the only two-dimensional code the public recognises as scannable.
  • Payloads that carry the whole instruction rather than a key: Wi-Fi credentials, a payment link, a phone number, each of which the phone acts on directly.

Preparing the list

  • Keep the payloads close in length. Shortened URLs of a uniform shape give a uniform grid across the whole run; a mix of short and long links does not.
  • Choose the error correction level once for the batch: raising it adds modules to every symbol, which is the same as making every symbol denser at a fixed size.
  • Check the widest value in the list before printing, not the first one: the batch is only as printable as its longest payload.

What goes wrong in a batch

  • Assuming a fixed print size fits every row. The module count changes with the content, so a size chosen on a short value leaves the long ones below the readable module width.
  • Pasting URLs with tracking parameters attached. Each parameter adds characters, and the characters add modules — often enough to push the whole run up a version.

Frequently asked questions

Why are some codes in my batch bigger than others?
Because QR versions are discrete: the grid steps up from 21×21 modules to 25×25 to 29×29 and onwards as the content grows. Two links differing by a dozen characters can land either side of a step and come out visibly different.
Can a batch mix links, text and Wi-Fi credentials?
Each symbol is encoded independently, so technically yes. In practice a batch is a print run with one purpose, and mixing payload types means the labels do different things while looking identical.