Static codes that never expire
The codes produced here are static: the data is encoded directly into the pattern. Nothing routes through a third-party server, so there is no account, no tracking, and no link that stops working when a free trial ends.
The trade-off is that a static code cannot be edited after printing. If the destination might change, point the code at a URL you control and redirect from there.
What businesses put in them
- UPI payments. Format:
upi://pay?pa=yourid@bank&pn=Your%20Name - WhatsApp. Format:
https://wa.me/91XXXXXXXXXX?text=Hiopens a chat with a pre-filled message - Google review links, printed on a card at the counter
- Menus, catalogues and price lists
- Event check-in and admit cards
- Wi-Fi access. Format:
WIFI:S:NetworkName;T:WPA;P:password;;
Printing them so they actually scan
- Size. Minimum 2 × 2 cm for close scanning. For a standee or hoarding, roughly one-tenth of the expected scanning distance.
- Quiet zone. Leave clear white space of at least four modules around the code. Crowding it is the most common reason a code fails.
- Contrast. Dark pattern on a light background. Inverted codes fail on many older scanners.
- Error correction. Choose High if you plan to place a logo in the centre — it allows around 30% of the code to be obscured.
- Test before printing a thousand. Scan with at least two different phones, one Android and one iPhone.
Measuring scans
A static QR code cannot report scans by itself. To measure them, encode a URL with UTM parameters and read the traffic in GA4 — use utm_medium=qr and name the campaign after the physical placement, so a standee at one shop can be compared with a flyer at another.
Frequently asked questions
Do these QR codes expire?
No. The data is encoded in the pattern itself, so the code works as long as whatever it points to still works.
Can I add a logo in the middle?
Yes. Set error correction to High and keep the logo under roughly 25% of the code area, then test the result on more than one phone.
Is my data sent to a server?
No. The code is generated in your browser and the PNG is created locally.
How do I make a UPI QR code?
Encode a URL in the format upi://pay?pa=yourvpa@bank&pn=YourName. Adding &am=100 fixes the amount; leaving it out lets the payer enter one.