Asset tags from the spreadsheet you already keep.
You have a list of equipment — asset IDs, serial numbers, room or rack names — and you need a QR code per item to put on a label. The codes have to be told apart afterwards, and they have to still work in five years. This is that job.
Why a physical label should carry a static code
Most QR generators produce a dynamic code: the image encodes a link to the vendor's domain, which then redirects to your destination. That is a good trade for a poster you will reprint next month. It is a bad trade for a label screwed to a machine, because the label outlives the decision.
A dynamic code stops resolving when the subscription lapses, when the scan quota is hit, or when the vendor shuts down — and the failure is silent, discovered by whoever is standing in front of the equipment. A static code encodes your destination directly. There is nothing in the middle to expire, and nothing to keep paying for. The trade is that you cannot change where it points without reprinting, which for an asset tag is usually the correct trade.
The full static-versus-dynamic comparison.
Two columns out of your asset list
The first column is the filename — use the asset ID you already use, so the file and the record match without a lookup. The second is what the code carries.
filename,text
pump-0142,https://intranet.example.com/assets/pump-0142
pump-0143,https://intranet.example.com/assets/pump-0143
forklift-07,https://intranet.example.com/assets/forklift-07Export the two columns as CSV from Excel or Google Sheets and paste them intothe generator. There is no row limit; the CSV is capped at 64 KiB, which is thousands of ordinary rows.
What to encode: a URL or the bare ID
A URL into your own asset register is the more useful choice when one exists: a phone scans it and lands on the record. It also means the destination is yours to change without touching the label.
The bare ID is the right choice when scanning happens inside an app that expects an identifier, or when the codes must resolve with no network at all. It is also the choice that reveals least: a scanned URL tells a stranger where your intranet lives, and a code on a machine in a public space can be read by anyone standing near it.
Do not encode anything you would not want read by a passer-by. A QR code is not a container for a secret; it is printed text in another alphabet.
The manifest is how you prove the batch is right
The ZIP contains manifest.json, listing every filename against the exact payload encoded into it. Before four hundred labels go to a printer, that file is how you check that pump-0143.svg really carries pump 0143 — not by scanning four hundred images, and not by trusting that the export preserved row order.
Read it as JSON rather than opening it in a spreadsheet. A payload beginning with =, +, -, or @ is treated as a formula by Excel, and a verification file that executes its own contents is not a verification file.
Nothing leaves the page
An asset register is usually internal: intranet hostnames, site layouts, equipment counts, sometimes serial numbers under support contracts. That is often data you are not free to hand to a third party at all. The CSV, the generated SVGs and the ZIP stay in the browser tab — nothing is uploaded, the codes contain no redirect through anyone else's domain, and no scan is tracked or counted anywhere.
Before the print run
- Scan a sample at final size, with the phone your staff actually carry, on the material you are actually printing. Whether a code reads depends on payload length, print quality, contrast, curvature and wear, and no generator can promise it will.
- Keep the payload short. A shorter destination is a less dense code, and a less dense code survives a scratched or faded label far better than a long one.
- The SVG is vector, so it scales to any label size without the softening a resized PNG picks up.
- Keep the manifest with the batch. When a label is damaged two years from now, it is what tells you which file to reprint.
Open the browser-local generator
QR codes from Excel or Sheets ·CSV rules and print-check guide