Free · No account · Works offline
Print it once.It keeps working.
Point a camera. Get the answer.
Twelve kinds of code, built in this browser and checked against the standard each one is supposed to follow. Put yours on an A4 or A5 page with your own heading and instructions, then print it.
No account. Nothing uploaded. Nothing that can be switched off.
↑ real code — try scanning it
Why the details matter
A wrong square fails silently.
A malformed code still looks like a QR code. You only find out it is broken when someone is standing in front of it, trying.
Escaping
A WiFi password containing ; or , corrupts the payload unless it is escaped. Most generators do not.
Wrong
WIFI:S:Rio;P:fl4t;22;;Right
WIFI:S:Rio;P:fl4t\;22;;
Unescaped, the password reads as fl4t — and the code still scans.
Currency
Several UPI apps reject a payment code with no cu= field. Ours always sets it.
Wrong
upi://pay?pa=rio@ok&am=250Right
upi://pay?pa=rio@ok&am=250&cu=INR
Without cu=, several UPI apps refuse the payment outright.
- Android and iOS
- sms:?body= is an iOS convention. Android scanners need SMSTO: — so that is what we emit.
- Calendar
- RFC 5545 requires UID and DTSTAMP. Without them, some calendar apps refuse the import.
The part nobody else does
A code on its own tells nobody what it is for.
A downloaded square is not a sign. Put it on an A4 or A5 page with your own heading and instructions, then print it or save a vector PDF — for any of the twelve types, not just the one someone built a template for.
WiFi card
Taped by the door. Nobody spells the password out loud again.
Menu card
On the table, with the three steps people actually need.
WhatsApp card
By the till. Scanning opens a chat with the message already typed.
01
Pick the code
Any type. The studio opens on a layout written for that type.
02
Write on it
Your heading, your instructions, your opening hours. Nothing is fixed.
03
Print it
Straight to a printer, or a vector PDF that stays sharp at any size.
Twelve kinds, one flow
Pick what it should do.
Each type encodes a different standard, and getting that standard exactly right is what decides whether a code scans on a cheap phone in bad light. WhatsApp and UPI are the two that carry a whole conversation, or a whole payment, inside one square.
- TextAny words at all — a note, a code, a serial number.Plain text
- URLA poster, a menu, a form — one scan away.Plain URL
- EmailA message with the subject already written.mailto: URI
- PhoneTap to call, no digits to mistype.tel: URI
- SMSA pre-written text, ready to send.SMSTO:
- WhatsAppOpens a chat with the message already typed.wa.me link
- WiFiGuests join without ever seeing the password.WIFI: format
- ContactYour details land in their phone, spelled right.vCard 3.0
- UPI PaymentScan to pay, with the amount already filled in.NPCI deep link
- PayPalA PayPal.me link, optionally with the amount.PayPal.me
- EventInto their calendar before they forget.RFC 5545
- LocationThe exact spot, not a vague address.geo: URI
What this will always do
Nowhere. It goes nowhere.
Static QR codes are built entirely in this browser tab. The WiFi password, the UPI ID, the phone number — none of it is sent anywhere, because there is no server to send it to.
No upload
The encoder runs on your device — open the network tab: nothing you type is in a request.
No account
Nothing to sign up for. History is saved on this device only.
No expiry
A static code has the data inside it. It works after we are gone.
- What you type
- This browser tab
- Your finished code
A servernever reached
Later, maybe
What might come later.
Everything above is finished and free, and none of it is waiting on anything. These are the things being considered next — nothing is promised, and no date is being offered.
- Syncing across devices
- An optional account, so saved codes and pages follow you to a second device. Accounts will stay optional — the tool will always work fully without one.
- Counting scans
- This one needs a server, and that is not a policy choice: a scan can only be counted if the code points at a redirect that resolves somewhere. Such a code stops working when the service does — so if it is ever built it will be a separate, clearly-labelled option, never the default, and never applied to a code you already printed.
There is no paid tier today and nothing is being collected to sell. If anything is ever charged for it will be an added service, not the part you are already using.
It takes about ten seconds.
No sign-up, no watermark, no trial. Pick a type, fill in one field, and take away the square — or the printable page it belongs on.