Last updated 28 August 2026
When bulk beats one at a time
The moment you need more than a handful of QR codes — table numbers for a restaurant, asset tags for equipment, unique links for a print run — generating them individually stops being sensible. What matters then is not the codes themselves but the file names, because a folder of qr-1.png through qr-200.png is almost useless when you need to find the one for table 47. That is why the name-before-comma format exists here: the label you give each row becomes the file name, so the output arrives already organised. Error correction is worth a thought too. Higher levels make the code denser but let it still scan when part of it is damaged or obscured, which matters for anything printed on a surface that will get scuffed, wet or partially covered.
Common questions
How do I control the file names?
Put the name first, then a comma, then the content — for example table-07, https://example.com/menu?t=7. That row becomes table-07.png. Rows without a comma are numbered in order instead.
Which error correction level should I use?
M is a sensible default for screens and clean print. Go to Q or H for anything that will be printed on a surface likely to be scuffed, wet or partly covered — a higher level means more of the code can be damaged and still scan, at the cost of a denser pattern.
Is there a limit?
Five hundred codes per run. Beyond that the browser starts struggling with memory and the ZIP takes long enough that people assume it has frozen. Split larger jobs into batches.
Is my list uploaded anywhere?
No. Every code is generated in your browser and zipped locally. Nothing about your list is sent to a server, which matters if the URLs contain customer or asset identifiers.