A QR code is a square pattern of black-and-white dots. When someone points their phone camera at it, the phone reads the dots and instantly opens whatever was encoded — usually a website link.
Think of it as a shortcut your eyes can scan. Instead of typing https://circularos.com/bin-finder into a browser, the user just holds their phone up. One tap. They're there.
Key insight: A QR code is just a picture. There's no "QR account", no "QR provider" you pay monthly. Once you generate the picture, it works forever — for free — as long as the URL it points to still works.
② Why CircularOS needs them
The OS has 3,700+ pages. Most of them solve a real-world problem (recycling, compliance, bounties, meals). But people in the real world don't type URLs — they scan QR codes. We need codes for:
Where
What it points to
Why
On bins
/bin-finder
Show people the nearest collection point
On flyers / vans
/bounty-intake
Workers can submit a job from their phone in 30s
On packaging
/vmr or /esg-block
Customers verify the meal/ESG claim themselves
On business cards
/dashboard or /portals
One scan opens the whole CircularOS
At events
/carrot-simulator
Live demo — people play with it on their phone
In emails / decks
Anything specific
Easier to scan than to click on a printed page
③ How the Studio works
Open /qr-studio. You see three columns of work, and that's it:
Step ① — Type a URL (or click a preset). The address you type here is what the QR will open.
Step ② — Style it. Pick the colour of the dots, the background colour, the size in pixels, the error-correction level (how scratch-tolerant), the dot shape, and the margin (white space around it). Live preview updates as you change anything.
Step ③ — Download. Two buttons. PNG for web/email/social. SVG for posters/banners (scales infinitely without going blurry).
The whole thing runs in your browser. No upload. No server. No third-party scanner sitting between you and the customer. The QR is generated on your device the moment you click.
Click any preset → URL loads automatically → preview redraws → download. About 5 seconds end-to-end.
⑤ Print rules — get this right or scans fail
Size
Minimum: 2cm × 2cm. Anything smaller and most phone cameras struggle.
For posters seen from a distance: 1cm of QR per 1m of viewing distance. (e.g. a poster viewed from 4m away → at least 4cm × 4cm.)
Use SVG for anything bigger than A4 — PNG starts to look pixellated.
Contrast
Dark dots on a light background scans best. Black-on-white is the safest combo.
Avoid inverted codes (light dots on dark background) — many cameras refuse them.
If you must brand it, keep contrast strong: dark navy on white = fine. Light grey on white = scan failures.
Quiet zone (the white margin)
QR codes need at least 4 modules of blank space around them. The Studio handles this with the Margin slider — keep it at 10–20.
Never let other graphics touch the edge of the QR.
Error correction
Level
Recovers from
When to use
L
~7% damage
Clean digital displays only
M (default)
~15% damage
Most prints — recommended
Q
~25% damage
Outdoor, weatherable surfaces
H
~30% damage
If you add a centre logo, or expect dirt/scratches
⑥ Troubleshooting
"My QR doesn't scan." Almost always one of three things: too small, not enough contrast, or no white margin around it. Reprint at 3cm minimum, black-on-white, with a clear quiet zone.
"It opens the wrong page." The URL is locked into the picture forever. You can't edit a printed QR. Either reprint, or use a permanent redirect path (e.g. /go/spring-flyer) on the server that you can re-point later.
"Will it expire?" No. The picture is forever. The only thing that "expires" is the URL it points to — if you delete or rename that page, the QR will hit a 404. So always point QR codes at stable URLs.
⑦ What's coming next (v2)
Tracked QR codes — wrap the URL in /qr-go/<token> so each scan gets logged into the Shadow Layer (who scanned, when, from where).
Centre logo upload — drop the CircularOS sigil or a partner logo into the middle of the code (force ECC=H automatically).
Bulk generator — paste a CSV of URLs, get back a ZIP of PNGs/SVGs ready for the printer.