How to Name and Organise Hundreds of QR Codes
Why QR code libraries turn into a mess
The first ten codes are easy to keep track of. By code 300, the dashboard says "Flyer new", "Flyer new FINAL", "Test 2" and "Menu" three times over. Then someone asks you to change where the window sticker points, and nobody knows which of the four "Window" codes is actually on the glass. This usually happens 12 to 24 months in, after staff have left, the agency has changed and a campaign has been reprinted.
You can fix it with three things: a naming convention, a small set of tags and folders, and a register that links every code to a physical place. None of them needs technical skills.
First, separate static from dynamic
A static QR code stores the destination in the pattern itself. After printing, you can't edit, redirect or track it. For a static code, the name matters most for the artwork file. You need to know which file went where, because if the URL behind it breaks, the only fix is to reprint.
A dynamic QR code points to a short redirect that you can change at any time, as long as your plan is active. If the subscription lapses, the redirect stops working, and so does every printed code that uses it. These are the codes you will come back to edit, so these are the ones worth naming carefully.
A naming convention that survives staff turnover
Use the same fields in the same order every time, separated by hyphens. This format works for most small businesses:
LOCATION-CHANNEL-PURPOSE-YYYYMM-VERSION
- CLJ01-WINDOW-MENU-202610-V1: window sticker at the first Cluj shop, linking to the menu
- ALL-FLYER-AUTUMNSALE-202609-V2: A5 flyer for all branches, second print run
- WH2-ASSET-FORKLIFT07-202403-V1: label on forklift 7 in warehouse 2
Location comes first because that's how people ask for a code: "the one at the Cluj shop". Sorting alphabetically then groups codes by site. The date is written as YYYYMM so it sorts in order, and it should be the date the code was printed or put up, not the date you clicked "create".
Rules that make it stick
- Uppercase, no spaces, no accents. Names end up in spreadsheets, CSV exports and file names, where spaces and special characters cause problems.
- Keep a fixed list of allowed values for each field. For channels, that might be WINDOW, TABLE, FLYER, POSTER, PACK, BADGE, ASSET, INVOICE, EMAIL and VEHICLE. Write the list down in one shared place and add to it on purpose, not on impulse.
- Never use "new", "final", "test" or a person's name. In two years nothing is new and that person may be gone.
- Name the placement, not the destination. "HOMEPAGE" stops being true the day you redirect the code somewhere else. "WINDOW" stays true as long as the sticker is on the glass.
- Raise the version number when the printed artwork changes, not when you edit a dynamic destination. Editing the link doesn't change what's on the wall.
- Keep names under about 40 characters so they stay readable in the dashboard list and on a label.
Folders and tags: give each one a single job
Use folders for ownership (Marketing, Operations, HR) and tags for anything that cuts across them, such as campaign name, year, product line or "temporary". A code sits in one folder but can have several tags. Stop at two folder levels. Deeper trees are where codes get lost.
One tag that pays off: EXPIRES-YYYY-MM on anything tied to a time-limited offer. When the month comes, filter by the tag and you have your clean-up list.
Print the ID on the item itself
The most useful habit of all is to print a short human-readable ID next to every code, for example "CLJ01-WIN-03" in 6–7 pt text under it. Anyone standing in front of the sticker can then find it in the dashboard in seconds. Put the text outside the quiet zone, the blank margin about four modules wide around the code, or scanning gets less reliable. Stickers of 25 mm and up have room for it. On posters, a corner works.
This matters even more for physical equipment. Codes used for asset tracking or a maintenance log should carry the asset number in both the name and the printed label, so the code still matches the inventory after the machine moves to another site. For employee badges, use the employee number rather than the name. People change names and leave, and a name in a code identifier adds personal data you don't need.
Keep a register: a spreadsheet is enough
The dashboard knows what each code points to. It doesn't know where the code physically is. A shared spreadsheet fills that gap. Use these columns:
- Code name
- Type (static or dynamic)
- Current destination URL
- Physical location (address, shelf, vehicle, catalogue page)
- Quantity printed and printer or supplier
- Owner, as a role ("Shop manager Cluj"), not a person
- Date deployed
- Review or expiry date
- Status: live, paused or retired
If you create codes in bulk, build the spreadsheet first and generate the codes from it, so every code gets its proper name from day one. Renaming 200 codes later is a miserable afternoon.
Retire codes, don't delete them
Printed codes outlive their campaigns: a flyer in a drawer, a sticker on a rented van, a menu someone took home. If you delete a dynamic code, everyone who scans an old print gets an error. Mark it retired instead, and point it to a useful fallback such as your current offers page. Then check the analytics. If a "retired" code still gets scans, there are still copies of that print in circulation.
Static codes can't be redirected. The only protection is to keep the destination URL working. Don't delete the page, and if it has to move, set up a redirect on your website.
Common mistakes
- One code reused across many placements. Analytics then can't tell the window from the flyer. Use one code per placement wherever you want to compare results.
- An account in a personal or agency name. Put the account on a shared company email address you control, so access doesn't leave with an employee or a supplier.
- Letting the plan lapse. Hundreds of dynamic codes depend on one subscription. Pay with a company card and put the renewal date in the register owner's calendar.
Six-monthly audit checklist
- Sort by last scan. For any live code with zero scans in 90 days, check whether it's still physically there.
- Test-scan about 10% of codes in person, on one iPhone and one Android phone.
- Open every destination and check for 404s and expired promotions.
- Update the owner column for anyone who has changed role or left.
- Retire expired campaign codes and point them to a fallback page.
- Confirm the plan's renewal date and payment method.
Make yours
If you need a handful of codes that will never change, the free generator on the homepage makes static codes. Pick your naming convention before you download them. If you'll want to edit destinations, see scan counts or generate hundreds of codes from a spreadsheet, dynamic codes on a paid plan are the better fit. Just remember they only keep working while the plan stays active.
Ready to make your own QR code?
Create a free QR code