Print it once.
Change where it goes, forever.
A rii.link QR encodes your short link — never the destination. The ink is permanent; the pointer behind it stays yours to edit. That one fact is the whole feature.
Demonstration: the printed flyer’s QR code never changes — matrix 4f00d9, zero reprints — while the destination it resolves to changed three times over one summer: a menu in May, a waitlist in July, an event recap in September.
ONE SUMMER, THREE DESTINATIONS, ZERO REPRINTS — THE LEFT PANE IS THE POINT
The difference is what’s in the ink.
“Dynamic”, “tracked” and “routed” aren’t three features. They’re one architectural fact with three consequences.
The full destination URL, turned into modules. It works — until the URL changes. Then every printed copy is wrong, and ink doesn’t take edits.
A short link, turned into modules once. The destination is a database row you edit; every printed copy follows instantly. The code on the shelf never knows.
No reprints, ever.
Know what you’re printing.
Four parts, one budget. Worth two minutes before it goes on ten thousand boxes.
Finder eyes
Three 7×7 anchors a camera uses to find and orient the code. They stay square here — styled eyes look distinctive and scan worse.
Data modules
The payload, bit by bit — your short link, not your destination. Shorter slug, coarser modules, scans from farther away. Another reason the URL doesn’t belong in the ink.
Quiet zone
Four modules of empty margin, part of the spec. Most “it won’t scan” complaints are a layout crowding this line.
Error correction
Redundancy woven through the matrix: up to 30% can be scuffed, torn or covered and the code still resolves. This is the budget your logo spends — next section.
Three real levers. No fake ones.
Exactly what the dashboard gives you: a logo, your colors, a module shape. When a generator promises gradients and custom eyes, ask what they cost in scans.
The logo spends the same budget damage does.
error correction × the same logo, honestlyA centered logo covers roughly 10–12% of the matrix. On anything that gets handled, shipped or weathered, print H — it keeps the rest in reserve.
One code, every surface.
It’s the same pointer whether it’s lacquered onto packaging or forty feet wide in a station. Print the size the surface needs; the link underneath doesn’t care.
A scan is a click.
Same table, same dashboard, same export. There’s no separate “QR analytics” product because there’s no separate pipeline — a scan arrives as a click.
And no hidden fingerprinting: scans are told apart only because the code’s URL carries a visible rii_qr marker — plus any UTM tags you add in the QR settings.
Synthetic sample of scans in the request log: time, country, device, status and path for each scan — the same columns the dashboard’s live request log shows.
SYNTHETIC SAMPLE — COLUMNS FROM THE LIVE REQUEST LOGRouting rules ride along. Unbundling them is impossible.
A scan resolves through the same single path as a click, so every rule on the link — geo, device, time, language — already applies to the printed code. Routing rules come with Premium — and there’s no separate QR add-on to buy on top.
Print it once. We’ll keep it pointed at the right place.
Codes are on the free tier — export a PNG in the next five minutes, reprint it never.
Codes look better on your own domain → /custom-domains