-
Notifications
You must be signed in to change notification settings - Fork 15
Asset QR Labels
Stick a code on a laptop, scan it with a phone, and you're looking at the asset β with its history, its owner, and the ability to change its status and location while you're stood next to it.
The point isn't the QR code. It's that walking round with a phone becomes a way of doing the asset audit instead of writing it on a pad and typing it up afterwards.
Printing β FreeITSM gives each asset a number and a code, and you print them onto label stock.
Scanning β anyone with access scans a label and lands on that asset.
And a third path for companies that don't want FreeITSM picking the numbers: see Using pre-printed tags.
An asset tag is the number you write on kit β LT0001, DT0042. Open any asset and it's the first field on Key info.
Tags are unique per company. Two companies on one install can each run their own LT0001 without colliding; only the QR itself is unique across the whole install. If you type a tag that's already in use, FreeITSM tells you which asset has it rather than just refusing β so you can go and look rather than hunt through a list.
Tags are optional. An asset without one still gets a working QR label; the label just prints no tag where the number would be.
One asset: open it and click Print label.
A batch: in the asset list, Ctrl+click or Shift+click to pick several β exactly as you'd select files β then Print labels on the bar that appears. A plain click still just opens an asset, so nothing changes if you never use it.
Either way you get a print sheet:
- Pick your label stock β 65, 40, 24 or 12 labels per A4 sheet.
- Each label carries the QR, the asset tag and the hostname. The tag is printed as text as well as encoded, because a scuffed or dirty code still has to be readable by a person β which is why asset tags survived the invention of the barcode.
- Print goes through your browser's normal print dialog. There's no PDF step and nothing to install.
Check the alignment on plain paper first. Printers vary by a millimetre or two, and label stock is expensive to waste. The dashed guides you see on screen don't print.
The codes are generated inside your own install β nothing about your estate is sent to an outside QR service.
Point any phone camera at the code. No app.
You'll land on a page built for a phone, showing what the thing is, who has it, its serial, warranty and when it was last seen β and letting you change its status and location on the spot. Anything heavier links through to the full record.
You need to be signed in. If you're not, the page says so; sign in and scan again. The label is in your hand, so that's the shortest way back.
A label for a company you can't access simply isn't recognised β the same answer you'd get from a code that doesn't exist, so a label can't be used to find out what exists elsewhere on the install.
The phone camera above is the easiest way to look one thing up. It's the wrong tool for a stocktake: updating forty assets means leaving FreeITSM, opening the camera, tapping the banner, editing, and repeating the whole dance forty times.
Assets β Scan keeps the camera on screen, so the loop is scan, done, scan again. Two modes, because what a scan should mean depends on the job:
| Mode | What a scan does |
|---|---|
| Look up | Opens that asset. The single-asset case. |
| Stocktake | Choose a status and/or location once, up front; then every asset you scan is updated as you go, with a running count and a list of what you've done. |
Things worth knowing:
- An asset already set the way you're setting it is counted as seen and left alone. A stocktake shouldn't fill five hundred asset histories with changes that changed nothing.
- Resting the camera on one label doesn't count it five times. Each asset counts once per session, so the number at the top is one you can trust.
- Undo last puts the most recent one back, for the inevitable wrong laptop.
- It reads FreeITSM's own labels and the manufacturer's barcode already on most kit β so an asset you haven't tagged yet is still findable by its serial.
- You can type a tag, serial or hostname when a label is damaged or the camera is blocked.
- A torch toggle appears on phones that expose it, which matters on a dim shelf.
- A scan gives a short buzz and blip, because in a store room you're looking at the kit, not the screen.
- Decoding happens entirely on your phone. No image goes anywhere.
β οΈ The camera needs anhttpsaddress. Browsers refuse camera access on a plainhttp://one β a browser rule, not a FreeITSM one. There the page says so and typing still works. It's the same address the labels point at, so if your labels work, the scanner will.
Every edit made this way goes through the same code path as a desktop edit, so asset history and the warranty calendar are updated exactly as they always were. A phone edit is not a lesser edit.
Durable labels β polyester or anodised aluminium β outlast anything you'll print in the office, and matter far more than the encoding once a laptop has been knocked about for three years.
There's no single standard for asset labels, but there is a standard process, and FreeITSM produces what it needs:
- Select your assets and open the print sheet.
- Click CSV for a printer. You get one row per label β asset tag, hostname, serial, and the QR's URL as plain text.
- Send that to the print house. They'll merge it into their own template (the trade calls this variable data printing) and send you a proof.
The QR contains an ordinary web address, which every print system can encode and every phone can read β so you're not asking them to do anything unusual.
Plenty of companies buy a box of sequentially numbered tags rather than printing their own. Then the job is the other way round: the sticker exists, and the database needs to agree with it.
Assets β Assign tags is built for that, and for doing it quickly:
- Scan the asset β point a barcode scanner at the manufacturer's serial sticker, which is already on virtually every piece of kit. (You can type a hostname or an existing tag instead.)
- Check the asset it found β it's shown before you go any further.
- Scan or type the tag going on it, and save. It resets straight to step 1 for the next one.
A barcode scanner is just a keyboard that types and presses Enter, so there's nothing to install or pair. A running list of what you've tagged builds up as you go, and a tag that's already in use is refused without losing your place, so you can put a different one on and carry on.
Matching is exact β no near-misses β because the one genuinely bad outcome here is putting a tag on the wrong machine.
- Codes are minted when you first print, not when the asset is created. An install with 4,000 auto-discovered machines isn't carrying 4,000 codes for labels nobody will print.
- A tag change is recorded in the asset's history, like any other field.
- Re-printing gives the same code. A label that's fallen off can be replaced without invalidating anything.
- Company scoping applies throughout β the list you print from, the CSV, and the scan itself.
- Assets β the module this lives in
- QR asset labels β Developer Guide β how labels are made, under the hood
- Asset scanning β Developer Guide β how a scan is read, under the hood
- Multi-Tenancy β why tags are per-company
- Database Verification β needed once after upgrading, before labels work
FreeITSM β an open-source IT Service Management platform Β· github.com/edmozley/freeitsm Β· MIT licence
- Installation
- β° Scheduled tasks (cron jobs)
- Architecture
- AI Providers
- Internationalisation (i18n)
- Timezones & Time Handling
- Theming & Dark Mode
- β¨οΈ Command palette (βK)
- π Searching inside tickets
- π Attached documents
- MobileβFriendly
-
Security
- Layer 1 β which modules you can enter
- β³ π§© Module Access Control
- β³ π οΈ Module Access β Developer Guide
- Layer 2 β what you can administer
- β³ π Roles & Permissions
- β³ π οΈ Roles β Developer Guide
- β³ π€ Why capabilities are constants
- Layer 3 β the System module
- β³ π Admin Access Control
- Hardening
- β³ π Security review response 2026-08
- β³ π‘οΈ Security hardening 2026-08
- β³ π οΈ Security hardening 2026-08 β Developer Guide
- β³ π‘οΈ Round three β plain English
- β³ π οΈ Round three β Developer Guide
- Single Sign-On (SSO)
- ποΈ LDAP & Active Directory
- Browser Extension
- API Reference
-
π REST API β how it works
- β³ π« REST API: Tickets
- β³ π» REST API: Assets
- β³ π΄ REST API: Problems
- β³ π REST API: Changes
- β³ π REST API: Knowledge
- β³ β REST API: Tasks
- β³ ποΈ REST API: CMDB
- β³ π REST API: Contracts
- β³ ποΈ REST API: Calendar
- β³ πΏ REST API: Software
- β³ π¦ REST API: Service Status
- β³ βοΈ REST API: Morning Checks
- β³ π REST API: Forms
- β³ βοΈ REST API: Workflow
- β³ πΊοΈ REST API: Network Mapper
- β³ π§ Using the API docs page
- β³ π OpenAPI specification
- β³ β OpenAPI: kept correct
- β³ π οΈ Maintaining the catalogue
- Watchtower
-
Tickets
- β³ Mailbox Authentication
- β³ π€ Email send log
- β³ Basic IMAP mailboxes
- β³ Email rendering & images
- β³ SLA Management
- β³ WhatsApp channel
- β³ π¬ Web chat channel
- β³ π£ Slack channel
- β³ π Linking tickets
- β³ ποΈ Canned responses
- β³ βοΈ Limiting replies to particular senders
- β³ βοΈ Email signatures
- β³ π The public web address
- β³ π Raising a ticket for someone else
- β³ π Merging tickets
- β³ β Splitting tickets
- β³ β Selecting several tickets
- β³ π οΈ Snoozing tickets β Developer Guide
- β³ π₯ Collision detection
- β³ β±οΈ Time tracking
- Problem Management
- Tasks
- Assets
- Knowledge
- Change Management
- Calendar
- Morning Checks
- Reporting
- Software
- Forms
- Contracts
- Service Status
- π Notifications
- π¨ War Room
- Self-Service Portal
- LMS
- Process Mapper
- CMDB
- Network Mapper
- Workflows
- Issue trackers (Jira, Azure DevOps)
- System
-
Overview
- β³ π Progress tracker
- β³ Concepts & vocabulary
- β³ Email routing & mailboxes
- β³ Settings: global vs per-company
- β³ Users & self-service
- β³ Staff cross-company access
- β³ Worked examples
- β³ Pitfalls & gotchas
- β³ Scope: what it's for
- β³ π οΈ Developer Guide (make a module multi-company)
- β³ ποΈ Case study: CMDB (a linked graph)
- β³ π§ͺ Test harness (prove it's isolated)