QR codes for asset tags and inventory labels
Asset labelling is the most common serious use of bulk QR generation. You have a register — laptops, tools, lab equipment, AV kit, furniture — and you want a code on each item that pulls up its record. The generation part is easy. The decisions around it determine whether the labels are still working in three years.
Decide what the code should point at
This choice is harder to change later than any other, so take it first.
Option 1: a URL into your asset system
The best option when you have a system with per-asset pages — Snipe-IT, an ITSM tool, a maintenance platform, even a shared spreadsheet with anchor links:
https://assets.example.com/asset/A-1001
Scanning opens the record directly. The risk is that the URL structure is now baked into physical labels. If you migrate systems, every label points at a dead address.
Option 2: a URL on a domain you control
The safer version of option 1. Encode a short URL on your own domain and redirect from there:
https://example.com/a/A-1001
A migration then means updating one redirect rule instead of reprinting several hundred labels. This costs nothing extra to set up now and is the single best decision you can make about a QR asset programme.
It also produces a shorter URL, which means fewer modules in the pattern, which means chunkier squares that scan more reliably at small sizes.
Option 3: plain text
Encoding just the asset ID with no URL works if scanning happens inside an app that expects a bare identifier. It is robust — nothing to break — but a phone camera will simply display the text, so it is no use to anyone without your app.
Build the CSV
Export your asset register with at least the ID and the URL. If your
register only holds IDs, build the URL with a formula:
="https://example.com/a/"&A2.
url,asset_id,location
https://example.com/a/A-1001,A-1001,Workshop
https://example.com/a/A-1002,A-1002,Workshop
https://example.com/a/A-1003,A-1003,Lab 2
Upload it to the generator, select url as
the URL column and asset_id as the filename column. Now the
image files are named after the same identifier that appears in your
register and on the equipment itself, so reprinting a single damaged
label is a matter of finding one file by name.
Do not be tempted to name files after location. Assets move.
The point covered in
choosing a filename column
applies with particular force here: name after the thing, not after a
fact about the thing.
Individual files or printed sheets?
For asset labelling, 1 QR code per image is usually correct. Asset labels almost always go through label software — Brother P-touch, Dymo, Avery templates, or a thermal printer's own tooling — and those tools want to place one image per label, found by filename.
Set codes per image above 1 only if you are printing onto sheet stock and
cutting by hand. In that case leave labels switched on: a grid of
unlabelled QR codes is genuinely impossible to sort out once cut, and the
printed A-1001 underneath each code is what lets you match
label to asset. See
printing sheets of codes
for the grid sizes.
Print the ID in human-readable text too
Every asset label should carry the identifier as text alongside the code. This is the most frequently skipped step and the most frequently regretted.
Reasons it matters:
- A scratched or partly peeled code becomes unreadable. The printed ID still works.
- Stocktaking often happens on paper, or by someone without the app.
- When someone phones to say "the projector is broken", they can read you the number.
If you generate labelled sheets, this comes for free — the label under each code is the asset ID. If you use label software, add a text field next to the image.
Size and materials
A 2 cm (0.8 in) code is comfortably scannable at arm's length for a short URL. Go bigger if the assets are stored high on racking, if scanning happens under poor lighting, or if the URL is long.
Materials matter more than most people expect:
- Paper labels are fine for office equipment in a dry room and nowhere else.
- Polyester or vinyl labels survive handling, cleaning products and moderate abrasion. This is the default for anything in a workshop or lab.
- Laminated or over-laminated labels resist solvents and UV. Necessary outdoors, where an unlaminated label will fade to illegibility within a season.
- Matte, not gloss. Glossy laminate throws glare straight back at a phone camera held close.
Whatever you choose, keep the white quiet zone around the pattern. Do not crop tight to the black edge, and do not place the label so that the code wraps around a corner or a curved surface — a code bent around a cable or a tube will not scan.
Plan for reprints from day one
Labels get damaged, assets get added, and someone will eventually stick one on upside down. Two habits make this painless:
- Keep the source CSV in the same place as the asset register, not in someone's downloads folder. Regenerating a batch is instant if you still have the file.
-
Keep the generated ZIP too. Because files are named
after asset IDs, reprinting one label means finding
A-1001.png— no regeneration needed.
For new assets, generate small top-up batches with the same settings. The filenames will be consistent with the originals because they come from the same column of the same register.
Test before committing to a run
Print one label on the real material at the real size. Then scan it: in the actual storage location, under the actual lighting, at the distance someone will really stand. A code that scans perfectly on your monitor can fail on matte vinyl in a dim store cupboard.
Check the destination too, not just that the code scans. A code that resolves cleanly to a 404 is worse than no code at all, because people stop trusting the system after two or three of them.
A note on privacy
Asset registers frequently contain internal hostnames, network paths and equipment locations — precisely the kind of data that should not be pasted into an unknown web service. Generation here happens entirely in your browser: the CSV is read locally and never uploaded, which is why this tool is usable on registers that would not otherwise be allowed near an external site. See the Privacy Policy for the details.
The same reasoning argues against routing asset codes through a third-party dynamic-QR service, since every scan would then report equipment locations and timings to an outside server — static vs dynamic QR codes covers when that tradeoff is worth making and when a static code is simply the better engineering.