Bulk QR Generator

Paste a column of links, product codes or table numbers and get a QR code for each one, labelled and laid out on a sheet you can print. You can also take them away as separate PNG images in a ZIP.

How to use it

The input is a CSV, and the work is telling it which column to encode and which one to print underneath as the label.

  1. Prepare a CSV with a header row One column holding what to encode, and ideally another holding a human label — a table number, a product name.
  2. Choose the columns The prefix box turns bare IDs into full links, so a column of "1001, 1002" becomes real URLs without editing the spreadsheet.
  3. Print the sheet, or download the ZIP The print layout drops everything except the codes and their labels.
Full instructions

Drop a CSV here

one row per code · a column of links, codes or numbers

Choose a file

Read on your own device. Nothing is uploaded.

In depth

Turning a spreadsheet of links into a printable sheet of labelled QR codes

Making one QR code is quick. Making fifty is tedious unless you have a tool that reads a list and produces them all at once. This article explains how the bulk QR generator works, walks through every setting on the page, and covers the printing and sizing rules that decide whether a code actually scans when someone holds a phone up to it.

Screenshot: Many codes, one pass
Many codes, one pass as it appears when the page opens.

When you need a batch of QR codes

A restaurant prints table tent cards and each table gets its own ordering link. A warehouse labels bins with codes that point to the inventory record for that bin. An event planner hands out badges with a unique check-in link per guest. A school creates a poster wall where each poster links to a different student project.

In every case someone has a list of values - URLs, product IDs, or ticket numbers - and needs a QR code for each one. Doing them one at a time means pasting a value, generating a code, downloading the image, renaming it, and repeating. This tool takes a CSV, reads one column, and gives you every code at once, either as a printable sheet or a ZIP of individual PNG files.

Preparing your CSV

The file needs a header row. One column should hold the values you want to encode. That might be full URLs, short codes, product IDs, or any text up to a few hundred characters. A second column should hold a human-readable label for each code - a table number, a product name, or a person's name. The label appears printed below each code on the sheet so you can tell them apart at a glance.

Drop the CSV file onto the page, or press Choose a file. You can also press Or paste rows instead to type or paste rows directly into a text box. The tool reads the file on your device. Nothing is uploaded.

Choosing the right columns

Once the file is loaded, two dropdowns appear in the side panel. Column to encode selects which column holds the data to put inside each QR code. Label column selects which column holds the text to print beneath each code on the sheet.

If your CSV has only one column, that column is used for both. If it has several, pick carefully. Encoding the wrong column gives you codes that scan to the wrong values, and you would only discover the mistake after printing.

The prefix trick for turning IDs into full URLs

The Add before each value field is one of the most useful controls on the page. Suppose your spreadsheet has a column of product IDs: 1001, 1002, 1003. You want each code to point to a full URL like https://shop.example.com/p/1001. Instead of editing the spreadsheet to add the base URL to every row, type https://shop.example.com/p/ into the prefix field. The tool puts that text before each value when it builds the code.

This keeps your spreadsheet clean and makes it easy to change the base URL later. If you move to a new domain, change the prefix and regenerate. The spreadsheet stays the same.

Error correction and what each level means

The Error correction dropdown has four levels. L makes the smallest code but is the least forgiving. A smudge or a scratch can stop it from scanning. M is the default and handles minor damage. Q is better for print, where ink can bleed or the paper can fold. H survives the most damage and is the one to pick if you plan to stick a logo over part of the code.

Higher error correction makes the code pattern denser. More modules are packed into the same square. If you print at a small size, a dense code may become hard for a phone camera to resolve. Pair higher correction levels with a bigger print size to be safe.

Sizing and layout controls

Code size sets the pixel dimensions of each code image. The default is 320 pixels, which is fine for on-screen previews and standard label printing. Raise it for large posters. Lower it for tiny sticker sheets.

Columns on the sheet controls how many codes sit side by side in each row. The default is four. Raise it to fit more codes per page. Lower it to give each code more room. When you print the sheet, these columns determine the grid layout on the paper.

Code colour changes the dark modules of each code from the default black to any colour you choose. Use this for brand-coloured codes. Keep the contrast high - a light pastel on white paper will not scan reliably. Dark colours on a light background are always the safest choice.

Print the value under each code is a checkbox that adds the encoded value as small text beneath the code, in addition to the label. This helps when you want to verify at a glance what a code contains without scanning it.

Getting the output

There are two ways to get your codes. Print the sheet opens the browser print dialogue, which strips the page interface and shows only the codes in a grid with their labels. Print it directly, or save it as a PDF from the print menu. This gives you a single page or set of pages with every code laid out and ready to cut.

Download all as ZIP produces a zip file containing one PNG per code. Each file is named after its label. This is the option to pick when you need to place individual codes into other designs, such as product packaging files or event badges.

Worked example: table tent cards for a restaurant

You run a small restaurant with twenty tables. Each table has a number from 1 to 20. You want a QR code on each table that opens a menu page at https://myrestaurant.com/menu?table=1 through table=20.

Open a spreadsheet and make two columns: table_number with values 1 through 20, and label with values Table 1 through Table 20. Export it as a CSV and drop it onto the page.

Set Column to encode to table_number. Set Label column to label. In Add before each value type https://myrestaurant.com/menu?table= so each number becomes a full URL. Set Error correction to Q because the cards will be handled by guests and may get food on them. Set Code size to 320 and Columns on the sheet to 4.

The sheet preview shows twenty codes in five rows of four. Each code has its label beneath it. Press Print the sheet, print onto card stock, and cut along the edges. Each table now has its own scannable code.

Printing tips that prevent scanning failures

Size matters more than anything else. A code printed at one centimetre across will not scan reliably with most phone cameras. Two centimetres works for close-up scanning like table tents. Five to ten centimetres works for posters scanned from a short distance. Anything meant to be scanned from a metre or more away needs to be very large.

Always test one code before printing the whole batch. Print a single sheet at the final size, on the final paper stock, and scan it with an ordinary phone at the distance and angle people will actually use. If it scans, print the rest. If it does not, increase the size or raise the error correction level.

A note about URL shorteners

It is tempting to shorten every URL before encoding it. A shorter URL makes a simpler, smaller QR code. But if the shortening service you use shuts down or changes its terms, every printed code becomes a dead link. You cannot update a QR code that is already on a poster or a product label. Use a domain you control. If you need to change the final destination later, set up a redirect on your own server.

Your links stay on your own device

Many bulk QR services see every URL you feed them. Those URLs often include unpublished product pages, private event links, or internal systems. This tool generates every code inside your browser using the site's own encoder. Nothing is uploaded. Your list of links is never sent anywhere. You could disconnect from the internet after the page loads and the tool would still work.

Help

Many codes, one pass

The input is a CSV, and the work is telling it which column to encode and which one to print underneath as the label. That label also names the file, so a ZIP of two hundred codes arrives with every one identifiable instead of numbered code-1 to code-200. Nothing leaves the page: the codes are drawn by the site's own encoder.

Prepare a CSV with a header row

One column holding what to encode, and ideally another holding a human label — a table number, a product name.

Choose the columns

The prefix box turns bare IDs into full links, so a column of "1001, 1002" becomes real URLs without editing the spreadsheet.

Print the sheet, or download the ZIP

The print layout drops everything except the codes and their labels.

Do not use a shortener you do not control

A QR code is permanent once it is printed; the link inside it is not. If the shortening service closes, every printed code dies with it. Encode a URL on a domain you own, and redirect from there.

Good to know

Use Q or H error correction for print

Higher error correction lets a code still scan with a scuff, a fold or a logo over the middle. It makes the pattern denser, so pair it with a decent print size.

Test one before printing five hundred

Print a single code at the real size and scan it with an ordinary phone, at the distance and lighting people will actually use. Then print the rest.

Your URLs stay here

Bulk QR services see every link you feed them — often unreleased product pages or private event links. This encodes in your browser, so nobody sees the list.

Common questions

How many codes can it make at once?
Up to 500 in one pass, which covers most printing jobs. Larger lists are better split into batches anyway.
What size should I print them?
A rough rule: the code should be at least a tenth of the scanning distance. Two centimetres for a menu, ten for a poster read from a metre away, much larger for a wall.
Can I put my logo in the middle?
Not in this tool — the single QR generator handles decorated codes. If you do that, use H error correction and test thoroughly.
What does the prefix box do?
It is put in front of every value before encoding, so a column of IDs becomes a column of full URLs without touching the spreadsheet.