Skip to main content

QR label URLs

A QR label encodes a link to the item or location it's stuck on. Scan it, and that link opens the record in Cobblr. Because the link is printed into the code, the address it points at is baked in the moment you print.

Why this matters

Say you print a hundred labels, stick them on a hundred bins, and later you move Cobblr to a new home, or just change how you reach it. Every label was printed with the old address, so every one of them now points at nothing. A hundred dead stickers.

The fix is to never print the moving address in the first place. Print a stable name that you control, and forward that name to wherever Cobblr actually lives today. Move Cobblr later, and you re-point the forward once instead of reprinting a hundred labels.

Use a stable name you control

Pick an address that belongs to you, not to whichever machine happens to run Cobblr right now:

  • A domain you own (labels.example.com), with a redirect rule at it.
  • A free Cloudflare Worker on workers.dev: a ten-line redirect with no domain to buy and no machine behind it, so the name survives every box you own. The URL is longer, but nobody types it; a QR code doesn't care.
  • The DuckDNS or Tailscale name you already reach Cobblr at (from the install options). Simplest when the name and the instance move together; a Tailscale name is private to your tailnet with Serve, or publicly reachable with Funnel, so keep in mind who'll be scanning.

There's a difference in kind between these. A name that points at your instance (DuckDNS, Tailscale) keeps labels alive as long as Cobblr stays behind that name. A name with a redirect at it (the domain, the Worker) is decoupled from the instance entirely: when Cobblr moves anywhere, even to a different address scheme, you edit one forward and every printed label keeps resolving. The sticker never changes; only the thing it forwards to does.

Setting the base URL

Set it once per workspace, in the label settings, as the custom label base URL. From then on, every label you print encodes that name no matter how you happen to be reaching the app at print time.

Leave it blank and labels fall back to the address you're viewing Cobblr at when you print. That works for a quick batch you'll scan at home, but for labels meant to last, set the stable name first.

What the code says about itself

A label's token comes in two styles. Descriptive tokens carry a readable hint of what they point at, so a phone's camera preview shows something meaningful before you even open the link. Opaque tokens are random, revealing nothing about your stuff to someone who photographs the label. Pick per workspace in the label settings; plain navigate-to-record labels default to descriptive.

Printing and moving

Labels are printed from the Labels page: browse to what needs labeling (by kind, or walk the location tree), queue them, and print the batch. Every label printed after you set the base URL carries the stable name.

When Cobblr does move, the labels don't change and neither does Cobblr: you update the forward at your DNS or proxy so the stable name points at the new home, and every sticker in the building keeps resolving.