Bulk QR Code Generator: Three Ways to Make a QR Code for Every Row
How to generate QR codes in bulk from a list: a Google Sheets automation, the bulk API for one-off batches, and the API per record for your own app.


A bulk QR code generator turns a list into one QR code per line, so you don't have to make them one by one. In CodeQR there are three ways to do it, and the right one depends on how your list lives. If it is a spreadsheet that keeps growing, use a Make automation that creates a code for every new row. If it is a one-off batch, send it to the bulk API, which takes up to 100 codes per request. If the list lives in your own app, call the API once per record. For volume, make static codes unless the destination may change or you need scan counts.
What a QR code per row means
Each row in your list is one thing you want a code for: a product, a store, an attendee, a shelf, a unit. The code for that row opens that row's page. The hard part is keeping a hundred or a thousand codes tied to the right rows, with the image in hand when you need to print. A bulk workflow should give you one code per row, a stable ID you can look up later, and a link to the finished image written back next to the row.
Three ways to generate QR codes in bulk
- A spreadsheet that keeps growing. New rows appear all the time, and each should get a code without anyone touching it. A Make automation watches the sheet and creates the code.
- A one-off batch. You have a finished list and need all the codes now. The bulk endpoint takes up to 100 codes in one request.
- Your own app. The records live in a database. Your code calls the API when a record is created.
What to put in the sheet
For the spreadsheet route, two columns are enough to start: the URL the code should open and a title for it. The title becomes the code's name in your CodeQR dashboard, so use something you can search for later, such as a product name or a store number.
Add two more columns for the results, headed QR Code ID and QR Code Image. The automation fills those in. Keep the header row clean and the URLs complete, with https at the start, because the code encodes exactly what the cell contains.
Static or dynamic for a batch
A static code holds the destination itself. A scan opens it directly and never passes through CodeQR, so the destination can't change after printing and CodeQR records no scans for it. A dynamic code holds a short link: you can change the destination later, and every scan is counted. Our guide on whether QR codes expire goes through the difference.
For a large batch, static is the sensible default. Static codes are unlimited on the Pro, Business, Scale and Enterprise plans, while dynamic codes count toward the monthly QR code limit on every plan. On Free and Starter, static codes count toward that limit too. See the pricing page for how your plan treats each type.
Choose dynamic when the destination might change after printing, for example a shelf label that should point to the current offer, or when you need to count scans.
Way 1: a spreadsheet and a Make automation
Make is an automation platform. The template for this guide watches a Google Sheet, and for each new row it creates a QR code from the URL and Title and writes the QR Code ID and the PNG link back to the row. The codes it makes are static.
The Google Sheets trigger checks for new rows on the scenario's schedule, every 15 minutes in the template, so it is not instant. When you turn the scenario on, Make asks where to start: choose "All" to process the rows already in the sheet.
Make counts each module run as an operation, so a long list needs a Make plan with enough monthly operations for it.
Way 2: the bulk API for a one-off batch
If you have a finished list and no spreadsheet to keep, call the bulk endpoint. It creates up to 100 codes per request, so a longer list goes out in chunks of 100.
You send the codes you want in one request, and you authenticate with an API key from the dashboard. Our help article on creating an API key and its permissions shows how, and the API reference has the request format.
The help center also has a guide to creating links and QR codes in bulk from a spreadsheet.
Way 3: the API per record, from your own app
When the records are in your own system, create the code at the moment the record is created. Call the create endpoint with the record's URL and title. Send your record's ID as the external ID: it is unique per project, so a second request with the same ID returns a 409 conflict instead of making a duplicate. That makes retries safe. The help article on fixing API errors lists what each status means.
The response carries the code's ID, its short link and the image, so you can store them with the record.
Getting the images out
Every code gets a PNG of 1024 pixels, hosted on a CDN. The link comes back as the image field from the API and as "Image URL" in Make. Paste it into a design tool, a mail merge or your own template, or download the files in one pass with a short script.
By default the code has a logo in the middle. On the Free plan it is the CodeQR logo and it can't be removed. On paid plans it is your workspace logo, and you can turn it off. Our post on QR codes with a logo covers when a logo helps and when it gets in the way.
Printing a batch
Print one code from the batch at the size you plan to use, then scan it with more than one phone before you print the rest. Size and quiet space matter more than any design choice. The guide on QR code size for print has the rules.
If the codes will sit on surfaces that get scuffed, raise the error correction level. The levels are L, M, Q and H, and the default is M. Higher levels tolerate more damage but make the pattern denser, so they need a little more room.
Create your account
You need a CodeQR account and an API key or a connected project to run any of the three routes. You can create a free CodeQR account and try a short list before you commit to a large one. If you want to connect other tools later, see how to connect CodeQR to Zapier, Make, n8n and IFTTT.
Use the Make template for a growing sheet
If your list is a Google Sheet, the Make template does the repetitive part for you: create a QR code for each new Google Sheets row.
The guided setup asks for four things: your Google connection, the spreadsheet, your CodeQR connection (sign in to CodeQR and allow Make to access the project), and the fields to map, which are the URL and the Title. Turn the scenario on, choose "All" to process the rows already there, and from then on every new row gets a code, with the QR Code ID and the PNG link written back next to it.
Bulk QR code generator questions
Pick the route that matches your list. For a growing Google Sheet, use the Make template that creates a code for each new row. For a finished batch, use the bulk API, which takes up to 100 codes per request. For records in your own app, call the API once per record.