Skip to content

Barcodes & codes ​

Every asset and kit in Shelf can be identified three different ways, and they all end up in the same place. This page is the whole identifier story: what each code is, when you'd use it, and how to tell the workspace which one to show you.

The QR code and the Shelf code are two views of the same thing β€” one row in Shelf's code pool. Scan the QR or type the six characters and you land in exactly the same place. The alternative barcode is a separate record you attach to an asset, for gear that already carries a barcode of its own.

The QR code ​

The square on the label. Shelf mints one for every asset and kit at the moment it's created, and one for each blank label in the printing pool, so a code always exists before you need it.

What it encodes is short on purpose: QR.ARTGRP.AU/123ABC. Nineteen characters, which keeps the printed QR at its smallest and coarsest grid β€” 21 modules square. That's what makes a 10mm QR on 12mm tape readable by a phone at arm's length in a dim store, and it's why the payload is never allowed to get longer. A printed QR is permanent; the label on a case you made in 2026 has to still work in 2032.

Scanning behaviour is covered in Assets, kits & labels β€” briefly: signed in to that code's own workspace you land on the asset; signed out, or in a different workspace, you land on the lost & found portal.

The Shelf code ​

ARTGRP-123ABC on screen. Four stacked lines on a 12mm label β€” ART / GRP / 123 / ABC.

This exists for one situation: someone is standing in front of a case, on the phone to you, and the QR won't scan. Scuffed label, no camera, gaffer tape over half of it, warehouse with no signal. They can read you six characters, and you can type them into the search box or the found portal and get the same answer a scan would have given.

Everything about it is shaped by that:

  • Six characters from a confusable-free alphabet β€” 23456789ABCDEFGHJKMNPQRSTUVWXYZ. No 0 or O, no 1, I or L. The pairs people mishear and mis-key over the phone simply aren't in the set, so there's nothing to guess at. That still leaves about 887 million possible codes.
  • Random, never sequential. ARTGRP-123ABC tells you nothing about ARTGRP-123ABD, and you can't count upwards from a code you've seen. That matters because a printed code is also a public lookup key on the found portal β€” sequential codes would let anyone walk your whole fleet.
  • ARTGRP is decoration. It's printed and displayed to make the code look like a code and to say whose it is; it isn't stored and isn't part of what you type. 123ABC is the code.
  • It resolves identically to a QR scan. Same asset, same page, same found-portal behaviour.

Older assets created before Shelf codes existed get one the first time you print a label for them, so you never have to go back and fix anything by hand.

SAM IDs ​

SAM-0001, SAM-0002, and so on: a plain sequential number per asset, assigned in creation order. It isn't printed on a label or encoded in anything β€” it's a display option, useful if your team already thinks in "asset 47" terms or you're migrating from a spreadsheet that numbered things. Kits don't have one.

Alternative barcodes ​

Plenty of gear arrives already wearing a barcode β€” a manufacturer's label, a sticker from the hire company you bought it from, a retail EAN on the box. Rather than making you cover that up with a Shelf label and re-scan everything, you can record the existing barcode against the asset and scan that instead.

Add them from the asset's (or kit's) edit form β€” an asset can carry more than one. Five types are supported:

TypeAcceptsTypical source
Code 1284–40 characters, letters, numbers and symbolsThe most common asset-tag barcode. Anything over 30 characters gets a warning β€” it prints very wide and scans poorly.
Code 394–43 characters, uppercase letters and digits onlyOlder industrial and government asset tags. No symbols, no lowercase.
DataMatrix4–100 charactersThe small square 2D code on electronics and cabling β€” fits where a linear barcode won't.
EAN-13Exactly 13 digitsRetail product barcodes. Shelf checks the 13th check digit, so a mistyped EAN is rejected rather than saved wrong.
External QR1–2048 characters, any contentA third-party QR that already exists on the item β€” a URL, a serial, another system's code.

Two rules worth knowing before a bulk import:

  • Values must be unique within your workspace. Two assets can't claim the same barcode; you'll get told which rows clash rather than silently ending up with an ambiguous scan.
  • Everything except External QR is stored uppercase. External QR keeps the case you typed, because URLs and third-party payloads are often case-sensitive.

Scanning an alternative barcode with Shelf's scanner takes you to the asset it belongs to, exactly like a Shelf QR would.

The workspace display preference ​

There's one setting that decides which of these codes you actually see. It's in Settings β†’ General, and it applies to the whole workspace: the code chip on every asset and kit list, the asset detail page, and the code printed as text on labels.

The setup wizard asks this as "how do you want to find a case in the store?" and sets it for you. Answering "not sure yet" leaves it at the default and puts "print a label" on your first-run checklist, so you can look at one before deciding.

The options are:

PreferenceShowsPick it when
QR Code IDShelf's raw internal id (abc123xyz)Rarely β€” it's the historical default and the hardest of the lot to read aloud.
SAM IDSAM-0001Your team already talks in sequential asset numbers.
Shelf codeARTGRP-123ABCYou print Shelf labels and want the thing on screen to match the thing on the case. This is the one to use if you're printing 12mm stacked labels.
Code 128 / Code 39 / DataMatrix / External QR / EAN-13That asset's barcode of the chosen typeYour gear is already tagged and the crew knows it by the manufacturer's number, not yours.

Two behaviours that stop this from ever showing you nothing:

  • A per-asset override wins. If one particular item has a preferred barcode set on it, that's what shows for that item regardless of the workspace setting β€” handy for the odd piece of gear everyone knows by its serial.
  • It falls back rather than blanking. Choose a barcode type and an asset that has no barcode of that type still shows its QR id. Choose Shelf code and an asset that hasn't been given one yet does the same. You always get a code.

Changing the preference is display-only. It doesn't touch what's stored, doesn't invalidate anything already printed, and doesn't stop any other code from resolving β€” a QR you printed last year still scans whatever you set here today.

Everything on this site is written by Artefact Group for our own installation. Shelf is a fork of the AGPL-3.0 licensed Shelf.nu project β€” for upstream’s own documentation, see docs.shelf.nu.