urltoolskit.org
URL utilities, in the browser
Say hi →

Batch QR code generator

one QR per line · your own filenames · PNG or SVG · ZIP download

Forty table tents, one QR each, all pointing at different URLs. Doing that a code at a time in a single-URL generator is an afternoon; doing it here is one paste and one download. Add label | url on each line and the files come out named for the label instead of qrcode(7).png.

Ready.

How to use

  1. Paste your URLs, one per line. To control the filenames, write label | https://… — the label becomes label.png, cleaned of characters a filesystem would object to.
  2. Set the size and error correction. For print, choose SVG instead: it scales to any size without the blur a resized PNG gets.
  3. Click Generate codes. Up to 200 codes per run.
  4. Check the grid — each code is shown with its label and target so you can confirm the pairing before printing 200 of them.
  5. Download all as ZIP. The archive is assembled in your browser.

Getting QR codes that actually scan

Keep the URL short. A longer URL needs a denser code, and density is what makes a code fail on a worn print or a cheap camera. A URL with a hundred characters of UTM parameters produces a visibly finer grid than a forty-character one. If you need campaign tracking, use a short redirect URL and put the parameters on the far side of it.

Do not skip the quiet zone. The blank margin around the code is part of the specification — scanners use it to find the code's edges. Two modules is the practical minimum, four is the standard. Printing a code flush against a border or a photo is a common cause of "it works on my phone but not theirs".

Contrast, and the right way round. Dark modules on a light background. Inverted codes (light on dark) are read by some scanners and not others, and a low-contrast pairing — grey on white, or two similar brand colours — fails under poor lighting even when it looks fine on screen.

Size for the scan distance. The rule of thumb is that the code should be about a tenth of the distance it will be scanned from: a poster read from two metres needs roughly a 20 cm code. For print, generate SVG and let the layout tool size it.

Error correction level H if you plan to place a logo over the middle, which is the only reason to accept the denser code it produces. Otherwise M is the right default.

FAQ

Is anything uploaded?

No. The QR library is fetched from a CDN the first time you generate, then everything — encoding, rendering, and the ZIP — happens in your tab. Your URLs are not sent anywhere.

Can it encode things other than URLs?

Any text works, so WIFI:, mailto:, tel: and vCard payloads all encode fine — write them out in full on the line. The mailto / tel / sms builder composes the trickier ones correctly.

Why is there a 200-code cap per run?

Rendering is synchronous work in the tab, and past a couple of hundred images the page becomes unresponsive. Run the list in batches — the cap is per run, not per session.

How do I check a code came out right?

The QR code reader decodes an image back to its text, locally. Worth doing on one code from every batch before a print run.