logo
QR Codes•

QR Code Labels: How to Go From a List to Printed Labels

How to make QR code labels from a list: one PNG per row, a mail merge or label tool, text or URL codes, size, contrast, and when to use dynamic codes.

Avatar for undefined
CodeQR Team
Content Team

QR code labels start with a list. Each row gets its own QR code image, and a label or mail-merge tool places that image on a sheet next to the row's text. Use a text code when a scanner reads the label and a URL code when people scan it with a phone. Make the code static by default. Choose a dynamic code only for a label that stays where it is while its destination changes, such as a shelf label that points to the current offer.

From a list to a sheet of labels

The process has three steps. First, a list with one row per label: the text that prints on the label and, for URL codes, the address the code should open. Second, one QR code image for each row. Third, a label or mail-merge tool that inserts each image from a link into the label layout.

The second step is the tedious one: making a hundred images by hand takes an afternoon and invites mistakes. It is also the step you can automate.

Text codes and URL codes

A text code holds a short piece of text, such as a SKU, a bin location or a part number. A scanner reads it and enters the text where the cursor is. A URL code holds an address. A phone scans it and opens the page, which suits labels that customers or staff meet without special equipment.

You can mix both in one list. Decide per label type, and keep the choice consistent within a type so that everyone knows what a scan will do. Don't put long text in a code if a short ID will do: more content means a denser pattern that needs more room.

When a label should be dynamic

A static code holds its content itself. A scan opens it directly and never passes through CodeQR, so CodeQR records no scans for it and the destination can't change.

A dynamic code holds a short link, so you can point it somewhere else later, and every scan is counted. That helps for a label that stays in place while what it points to changes: a shelf label that opens the current offer, or a bin label that opens this month's checklist. Our guide on whether QR codes expire compares static and dynamic codes.

For volume, static is the practical choice. Static codes are unlimited on Pro, Business, Scale and Enterprise, and count toward the monthly limit on Free and Starter. Dynamic codes count toward that limit on every plan. See the pricing page for your plan.

Check the list before you generate

The codes will contain exactly what is in your cells, so a few minutes on the list save a wasted print run. Look for empty rows, addresses missing the https at the start, stray spaces at the end of a cell and duplicated rows that would print two identical labels. Sort the list in the order you plan to stick the labels, for example by aisle or by shelf, so the sheet comes out in the order people will use it.

Keep the label text short as well. A label that says "Aisle 4, shelf B" is quicker to read than a paragraph, and the code does the job of carrying the detail.

Label size and quiet zone

A QR code needs an empty margin around it, called the quiet zone, so a scanner can tell where it starts. Labels that print the code edge to edge, or that put text right against it, fail more often than their designers expect.

Print one label at the final size, put it on the real surface, and scan it with a few phones from the distance people will stand. Resize before you print the sheet. Our guide on QR code size for print has the sizing rules in detail.

Logos on small labels

By default a code has a logo in the middle: the CodeQR logo on the Free plan, your workspace logo on paid plans, or the CodeQR logo if your workspace has none. The Free plan can't remove it. On a paid plan you can set "Show Logo" to "No".

On a small label the logo takes up space the pattern could use. If the labels are small or will be scanned from a distance, turn it off and keep the pattern clean. Our post on QR codes with a logo explains when a logo helps.

Test before the full run

Print a single sheet before the whole batch. Check that the text fits, that the code sits inside its margin and that the labels peel off the sheet cleanly. Scan every code on that sheet with a phone, or with the scanner your team uses. If one fails, look at the row it came from before you blame the printer. Fixing a row is cheap, and reprinting a full run is not.

Colors and contrast

Codes are black on white by default, and the foreground and background take hex colors. Keep a strong contrast between them, with the dark color on the foreground. Light foregrounds on dark backgrounds, low-contrast pairs and colors that print differently on your label stock are the usual causes of a code that looks fine on screen and fails on paper. Test the colors with a printed sample.

Get one image per row

Every code gets a PNG of 1024 pixels, hosted on a CDN. The link to it comes back as the image field in the API and as "Image URL" in Make. A link is exactly what a mail-merge or label tool needs: it can fetch the picture for each row. Check the documentation of the tool you use for how it inserts an image from a link.

Create your account

To build labels from your own list, you need a CodeQR account and a connected project. You can create a free CodeQR account and make a test code first. For other ways to connect tools, see how to connect CodeQR to Zapier, Make, n8n and IFTTT. If your labels will come from code, the API reference has the details.

Use the Make template for labels

The Make template turns a Google Sheets list into label-ready images: create a printable QR code label for each Google Sheets row.

Each row holds the Label Text and a URL. The template creates a static code and writes the PNG link back to the row, ready for a label or mail-merge tool. The guided setup asks for your Google connection and spreadsheet, your CodeQR connection (sign in to CodeQR and allow Make to access the project) and the fields to map.

The Google Sheets trigger checks for new rows on the scenario's schedule, every 15 minutes in the template. When you turn the scenario on, Make asks where to start, and "All" processes the rows already in the sheet. Make counts each module run as an operation, so a large list needs a Make plan with enough monthly operations.

QR code label questions

Create one QR code image per row, then use a label or mail-merge tool that inserts an image from a link. The Make template does the first part: it creates a code for each Google Sheets row and writes the PNG link back to the row.

From a sheet to label-ready codes

Add the label text and a URL to each row, and Make creates the code and writes the PNG link back for your label or mail-merge tool.