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
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
What is QR Code?
Need the specification and use cases first? What is QR Code?
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.