A hundred QR codes, not a hundred clicks.
Paste a list of URLs or text values, generate a QR code for every line, then download each one or grab them all in a single ZIP. Everything runs in your browser — nothing you paste is sent anywhere.
No items yet.
Generate up to 100 QR codes at a time (fewer on small screens, to keep things smooth).
Paste a list with one URL or text value per line, pick one shared style, and Frame turns every line into its own QR code in a single run. Then download them one by one or all together as a ZIP of PNG files. Product teams use it for packaging links, restaurants for table cards, event and training teams for session and station links, and marketers for campaign variants. It's free, with no signup, and it all happens in your browser.
How do I generate multiple QR codes at once? Paste your list above, one item per line (optionally as Label | content), choose the colours, quiet zone and size, click Generate QR codes, spot-check a few, then click Download all as ZIP.
A batch QR code generator, also called a bulk QR code generator, creates many QR codes in one run from a list, instead of making them one at a time. Frame's version takes one item per line: every line becomes its own separate, static QR code, with its own PNG file. Nothing is merged, so 50 lines give you 50 codes. It's the quick route whenever a project needs a different code for each product, table, room, page or reference number.
Label | content on a line to name that code's file.Each non-empty line is one QR code. Spaces at the start and end of a line are trimmed. To name a code, put a label, a vertical bar and the content on the line; spaces around the bar don't matter.
| You paste | The QR code contains | File name |
|---|---|---|
Table 01 | https://example.com/menu/table-01 | https://example.com/menu/table-01 | Table 01.png |
Product A | https://example.com/products/a | https://example.com/products/a | Product A.png |
https://example.com/page-3 (no label) | https://example.com/page-3 | qr-code-003.png |
Room 12B – ask reception for a key | That text, exactly | qr-code-004.png |
| characters stay in the content.|
is treated as plain content, bar included.-2 added to its name.=A2&" | "&B2, then copy that column.Labels exist so that, after the download, you can tell Table 14 from Table 41 without scanning each file. They name the PNG and appear on the card on screen, but they are not put inside the QR code; only the content after the bar is.
Shelf B-07.png. Slashes
become dashes, hidden control characters and leading dots are removed, and names are capped at
80 characters.qr-code-001.png,
qr-code-002.png and so on.-2, -3 added, so no file overwrites
another.Stick to letters, numbers, spaces and hyphens in labels. Characters like : * ? " < >
are left as they are, and some computers refuse them in file names when you unzip.
Each line is encoded literally, exactly as typed. That suits:
The batch tool doesn't build special formats. It won't turn a line into a WiFi login, contact
card or calendar event the way the single QR code generator does, and multi-line
data can't fit in one line anyway. It also doesn't add https://: a line reading
example.com is encoded as plain text, which some scanners won't treat as a link.
Include the full address.
Up to 100 per batch on a typical desktop or laptop screen, and 40 on small screens (700 px wide or less, which in practice means phones). The limit for your screen is shown above the Generate button. If your list is longer, the count under the box says so, and only the first 100 (or 40) lines are generated in that run.
The limit is a technical safeguard, not an upsell. Every code is drawn as a full-size image in your browser, and phones have much less memory for holding dozens of large images and zipping them. For bigger projects, split the list into several batches of up to 100, since there's no cap on how many batches you run.
| Feature | Batch QR generator | Single QR generator |
|---|---|---|
| Codes per run | Up to 100 (40 on phones) | One |
| Best for | Many links or values that each need their own code | One carefully designed code |
| Input | A pasted list, one item per line | A form for the chosen type |
| Special formats | No, each line is encoded as typed | Yes: WiFi, vCard, event, WhatsApp, location and more |
| Design | One shared colour, background, quiet zone and size | Colours, gradients, shapes, frames, logos, templates |
| Download | PNG per code, or all as one ZIP | One PNG, up to 4000 px |
A common approach is to design one code in the main generator to settle colours, then reuse those colours here for the full set.
Static. Making many codes at once doesn't make them dynamic. A dynamic QR code normally points to a redirect service that lets you change the destination later and counts scans. Frame doesn't run one. Each batch code contains its URL or text directly, so it can't be edited after printing, has no expiry and doesn't depend on Frame. If a destination changes, update the page at the same address or regenerate that code. The static vs dynamic QR codes guide explains the trade-off.
Most batches are lists of web addresses: product pages, menu items, property listings,
campaign landing pages, staff profile pages, or event session pages. Each URL gets its own code,
and the URL is encoded exactly, including query strings such as ?utm_source=poster,
so any tracking your own analytics already does keeps working. Frame doesn't open or check the
pages, so a typo or a page that doesn't exist yet gets encoded all the same. Check the list
before you generate.
One code per product page or manual on packaging, shelf labels or info cards. SKU-1042 | https://example.com/p/1042. Frame makes the files; it doesn't keep inventory records or scan history.
Label each line by table so the files match the cards: Table 07 | https://example.com/menu?t=07. If your ordering system gives each table its own link, paste those; Frame isn't ordering software.
Session pages, booth links, room signs, or attendee links your ticketing system already issued. Frame encodes what it's given; it doesn't create secure tickets, verify them or stop reuse.
Lab stations, lesson resources, worksheet answers or classroom activity links, one per station: Station 3 | https://example.com/lab/3. Nothing is tracked per student.
A code per branch, flyer variant or landing page, each with its own campaign parameter in the URL. Frame doesn't report scans, so read results in your own analytics.
Plain-text asset tags or links to equipment manuals: PUMP-07 | https://example.com/docs/pump-07. Useful for maintenance labels and shared equipment.
One design applies to every code in the run, which keeps a large printed set consistent:
Error correction is fixed at a medium level (M, about 15% recovery), a good balance for plain codes. Logos, gradients, dot shapes and frames aren't available in batch mode. If you need them, make those codes individually in the main generator. Even with the same design, codes won't all look the same: a longer URL needs more, smaller squares than a short one.
Every card has its own Download PNG button. Download all as ZIP packages
every successful code into one file, frame-batch-qr-codes.zip, built in your
browser. Inside are PNG images at the size you chose, named as described above. The PNGs are
stored as-is rather than compressed again, since PNG is already compressed. Unzip it, check that
the names match where each code will go, and keep the folder with your print files. There's no
SVG or PDF export.
Table 07.png really goes
on table 7 before printing hundreds.Your list is processed in your browser and is not uploaded to Frame. The codes and the ZIP are created on your device, there's no account, and Frame keeps no copy of your list and no scan records. When someone scans a code, they visit that code's destination directly.
Blank lines are skipped, anything past the 100-item limit (40 on phones) is ignored, and an item that's too long for a QR code fails on its own. The status line under the buttons says which of these happened.
Add labels with Label | content. Without them, files are numbered
qr-code-001.png onwards in list order.
The line wasn't split. Check there's exactly one bar with text on both sides, and don't paste two spreadsheet columns directly, because they arrive separated by a tab.
That's normal: longer content needs a bigger grid of squares. Print dense codes larger and test them.
The line probably lacks https://. Batch mode encodes lines exactly, so add the full
address and regenerate.
Choose a smaller output size, split the list, or use a desktop browser.
Check that source line and its label, fix it, and regenerate. Frame doesn't validate destinations.
Check a file in the QR Code Checker, then review size, contrast and the quiet zone using the guides above.
https:// and has been checked.Paste your list into the box at the top of this page, one URL or text value per line, choose the shared style, and click Generate QR codes. Every line becomes its own QR code, which you can download individually or all together as a ZIP.
A tool that turns a list into many separate QR codes in one run. In Frame, each line of your list becomes its own static QR code and its own PNG file.
Yes. It's free to use with no signup and no watermark, and you can run as many batches as you need.
Up to 100 per batch on a typical desktop or laptop screen, and 40 on small screens such as phones. Longer lists can be split into several batches.
Yes. Paste one URL per line and each gets its own code. Include https:// on every line, because batch mode encodes each line exactly as typed and doesn't check the pages.
It's the optional line format for naming files. The text before the first vertical bar becomes the file name, and the text after it is what goes into the QR code. The label itself isn't encoded.
Yes. Download all as ZIP saves every generated code as PNG files in one ZIP, built in your browser. Each code also has its own Download PNG button.
PNG images at the size you choose: 600, 1200 or 2000 pixels square. SVG and PDF export aren't available.
No. Instead, paste a column from your spreadsheet. If you have labels and links in two columns, combine them into one Label | link column first, because two pasted columns arrive separated by a tab.
No. Frame creates static codes only: each one contains its URL or text directly, with no redirect, so it can't be edited after printing and scans aren't counted.
No. Batch mode uses one shared colour, background, quiet zone and size. For logos, gradients or frames, create those codes individually in the main generator.
Longer content needs more modules, so a long URL makes a denser code than a short one, even with the same design. Print dense codes larger and test them.
No. Your list is processed in your browser, and the codes and ZIP file are created on your device. Frame keeps no copy of your list.
No. Batch codes are static with no redirect, so there are no scan counts or analytics. Campaign parameters already in your URLs are kept, so your own analytics still work.
Yes. Label each line by product or table so the files are easy to match to packaging or table cards. Frame creates the files; it doesn't manage inventory or orders.
Only to encode unique links that your ticketing system already provides. Frame doesn't create secure tickets, verify them or prevent reuse.
Scan a sample from across the list, especially the longest entries, check that file names match placements, and test a printed proof before a large run.