What a WiFi QR code actually is (and why it needs no app)
A WiFi QR code is your network name and password encoded as a WIFI: URI baked straight into the black-and-white pattern. There is no website behind it, no redirect, no server. The phone reads the pattern, parses the credentials, and offers to join. That is the whole mechanism.
Here is what the encoded string looks like:
WIFI:T:WPA;S:CafeGuest;P:Latte2026;H:false;;
When a guest points their camera at it, the phone decodes that string and pops a banner: "Join CafeGuest?" One tap and they're online. They never see, type, or remember the password. That ends the part of your day where you recite an 18-character password across the counter to someone who mistypes it twice.
This works because the credentials live inside the code itself, not on a server you pay for. That's the same reason a static QR code never expires — the data is the code. You generate it once at EZQR's WiFi QR generator, print it, tape it to the wall, and it keeps working for years with zero ongoing cost. Cancel your account, switch tools, lose your login — the printed code on the wall does not care. It still joins people to your network.
The format itself is part of the QR Code standard, ISO/IEC 18004. Every modern phone camera understands it. You don't ship an app, you don't ask guests to download anything, and you don't depend on any company staying in business. The honest truth: this is one of the few QR use cases that needs no internet at all to do its job.
The WIFI: URI format, field by field
The entire WiFi QR spec is one line with five fields. Once you know what each does, you can read any WiFi code by eye and spot the mistake when one fails.
The template is WIFI:T:<auth>;S:<ssid>;P:<password>;H:<hidden>;; — and yes, the double semicolon at the end is required. Here's every field:
| Field | Meaning | Valid values | Required? |
|---|---|---|---|
| T | Encryption / authentication type | WPA, WPA2, WPA3, WEP, nopass | Yes (use nopass for open networks) |
| S | SSID — your network name | Any text; case-sensitive | Yes |
| P | Password | Any text; omit entirely if nopass | Yes, unless T is nopass |
| H | Hidden network flag | true or false | Optional; defaults to false |
| Closing | Terminator | Two semicolons ;; | Yes |
Tips
- **T (type)**: Use `WPA` as the value for WPA, WPA2, and WPA3 networks — phones treat them interchangeably here. Use `WEP` only for ancient hardware. Use `nopass` for a genuinely open network with no password.
- **S (SSID)**: Type it exactly as your router broadcasts it. `CafeGuest` and `cafeguest` are two different networks to a phone. A capitalization mismatch is the single most common reason a code connects to nothing.
- **P (password)**: This is the field where special characters cause silent failures — covered in the next section. Leave it out completely when `T:nopass`.
- **H (hidden)**: Set `true` only if your router suppresses SSID broadcast. Set `false` (or omit) for every normal network. Marking a visible network as hidden makes some Android phones fail to find it.
Escaping special characters — the gotcha that breaks half of all DIY codes
Five characters break a WiFi QR code if you paste them raw into the password or SSID: the colon :, the semicolon ;, the comma ,, the double quote ", and the backslash \. These are structural characters in the WIFI: URI, so the phone reads them as field separators instead of part of your password. Escape each one with a backslash.
Say your password is P@ss;w0rd. The semicolon ends the password field early, so the phone tries to join with P@ss and fails every time. The fix is to write it as P@ss\;w0rd — the backslash tells the parser "this semicolon is data, not a separator." Same rule for the other four:
:becomes\:;becomes\;,becomes\,"becomes\"\becomes\\
Most generators won't tell you this. They take your input, drop it into the URI without escaping, and hand you a code that looks perfect and connects to nothing. You find out when a guest taps "Join," waits, and gets "Incorrect password" on a password you know is correct. EZQR's WiFi QR generator escapes these characters for you, so you paste your real password and the code just works. If you ever build the URI by hand, do the escaping yourself.
There's one more trap worth naming. If your password is all digits — say 48205173 — some encoders wrap it in quotes to force it as text. You don't need to do that manually, but if you copy a WIFI: string from somewhere and see P:"48205173", leave the quotes alone. Stripping them can change how the phone interprets the value. When in doubt, test the code on a real phone before you print a hundred copies.
How to make a WiFi QR code, step by step
From your router credentials to a printed sign, the whole process takes about four minutes. You need three things: your network name, your password, and your encryption type (almost always WPA). Here's the workflow:
Tips
- **Step 1: Find your exact SSID and password.** Check your router label or admin panel. Copy them character for character — capitalization counts. For a business, point the code at your **guest network**, not the main network.
- **Step 2: Pick your encryption type.** Choose `WPA` for any WPA/WPA2/WPA3 network (the default on every router since 2006). Choose `nopass` only if the network is truly open.
- **Step 3: Open [EZQR's WiFi QR generator](/qr-codes/wifi).** Enter the SSID, password, and encryption. The generator escapes special characters automatically — preview updates live.
- **Step 4: Leave 'hidden' off** unless your router actually hides the SSID. Almost no small-business network does.
- **Step 5: Style it if you want.** Add brand colors or a center logo. Keep contrast high — dark code on light background. See the [QR best-practices guide](/guides/qr-code-best-practices).
- **Step 6: Export.** PNG is free and prints fine for a table tent. For a large wall sign or vinyl decal, the SVG/PDF export on the [Lite plan](/pricing) keeps edges crisp at any size.
- **Step 7: Test on two phones — one iPhone, one Android — before printing.** Confirm both join the network, not just decode the text. This 30-second check saves a reprint.
- **Step 8: Print at the right size.** A table-tent code reads fine at 2–3 cm; a wall sign across a room needs 8–15 cm. See the [QR code size guide](/guides/qr-code-size-guide).
Which phones scan it natively (and what to do for the rest)
Native WiFi QR scanning has been built into the default camera since iOS 11 in 2017 and Android 10 in 2019. That covers the overwhelming majority of phones in any room today. The guest opens the camera, points it at the code, taps the banner, and joins. No app, no setup.
On an iPhone (iOS 11 or newer): open the stock Camera app, aim at the code, and a yellow "Join CafeGuest" notification slides down. Tap it. Done. This has worked on every iPhone since the iPhone 5s running iOS 11, so you're talking about a phone from 2013 or later.
On Android (version 10 or newer): the default camera or Google Lens reads it the same way — aim, tap the network prompt, connect. Samsung, Pixel, and most other Android phones shipped this years ago. Even some Android 9 devices handle it through the Settings WiFi menu.
For the rare older or stripped-down phone: the camera still decodes the code as text. The user sees the WIFI: string, copies the password, and joins manually. It's clumsy, but nothing is lost — the password is right there. You can also print the network name and password in small text beside the code as a fallback. That belt-and-suspenders approach guarantees a guest is never stuck.
Here's a contrarian take most generator marketing skips: you do not need a fancy custom-designed WiFi code for it to work. A plain black-and-white code scans faster and more reliably than a logo-stuffed, gradient-filled one. Decoration is for your brand, not for the scanner. If reliability is the goal, keep it simple.
The plaintext-password problem nobody mentions
Your WiFi password sits in plaintext inside the code, and anyone who decodes the image reads it. This is the one fact most WiFi QR articles bury, and it changes how you should use the feature. A QR code is not encryption — it's a way of writing text in squares. Any scanner app that shows the decoded contents reveals WIFI:T:WPA;S:CafeGuest;P:Latte2026;... to whoever pointed their phone at it.
For a guest network, that's a non-issue. The whole point of a guest network is that strangers use it. You're handing out the password anyway — the QR just hands it out faster. Print it, frame it, put it on every table.
For your main business network, it's a real risk. The network running your point-of-sale, your back-office computers, your security cameras — that password should never live on a code taped to a public wall. A customer photographs it, walks out, and now has standing access to the network behind your card reader. Use a separate guest network with its own password for the QR, and keep your operational network off any printed code entirely. Most routers since 2015 support a guest network in two clicks.
The practical rule for Sarah's cafe, an Airbnb, or an office lobby: one network for guests, one for the business, and only the guest one gets a QR code. If your router can't split them, get a router that can — it's a $40 fix that closes a real hole. Don't put a URL QR code to a credential-sharing page in its place either; that just adds a server dependency to a problem the guest network already solves.
Where WiFi QR codes pay off — and the one place they don't
WiFi QR codes earn their keep anywhere people ask for the password and you'd rather not recite it. Each setting below is a real pattern, and each maps cleanly to a guest network and a static code.
Cafes and restaurants. A table tent or counter card with the code ends the password recitation entirely. Pair it with your menu QR code on the same card — guests connect and browse the menu in two scans. This is the highest-volume use case by far.
Airbnb and vacation rentals. Print the code in your welcome guide or frame it by the door. Guests arrive tired, scan once, and they're online — no "the password is on the fridge" treasure hunt at 11pm. A vCard QR code with your host contact beside it makes the welcome packet complete.
Offices and guest networks. A code in the lobby or conference room gets visitors and contractors online without IT pulling someone off a ticket. The guest network stays isolated from the corporate network, and the code only ever exposes the guest credentials.
Events and pop-ups. Conferences, markets, and trade-show booths print the code on signage and badges. Attendees connect themselves, and your staff answers actual questions instead of spelling out a password 200 times. See the event QR playbook.
Retail and coworking. Stores and shared workspaces post the code where customers wait — fitting rooms, checkout lines, lounge tables. The retail QR guide covers placement that actually gets scanned.
Now the one place it doesn't work: captive-portal WiFi. Covered next, because it's the limitation that surprises people.
The captive-portal limitation (and static vs dynamic for WiFi)
A WiFi QR code does not work with captive-portal networks — the kind that show a "click here to accept the terms" or "enter your room number" splash page before letting you online. Hotels, airports, large public venues, and many corporate guest setups use these. The WIFI: URI only carries credentials for a direct WPA/WPA2/WPA3/WEP/open join. It has no way to fill in a web sign-in form, so it joins the radio network and then stalls at the portal page. If your network requires a browser sign-in step, a WiFi QR code is the wrong tool — use a URL QR code pointing at the sign-in page instead.
For every normal password-protected network, the code works perfectly. And for those, you almost always want it static.
Here's the reasoning. A WiFi password rarely changes — most cafes and rentals keep the same one for years. A static code bakes the credentials into the pattern: free forever, no server, no subscription, survives cancellation, never expires. There's nothing to break. Compare that to a dynamic code, which routes through a redirect server and needs an active account to keep resolving.
| Factor | Static WiFi QR | Dynamic WiFi QR |
|---|---|---|
| Best for | Fixed password (most cafes, rentals, offices) | Guest passwords you rotate on a schedule |
| Cost | Free forever, unlimited codes | From $5/mo (Lite plan) |
| Survives cancellation | Yes — data is in the code | Yes on EZQR — redirect keeps resolving |
| Can change password without reprinting | No — new password means new code | Yes — repoint from the dashboard |
| Scan analytics | No (no server in the loop) | Yes — count, device, country |
| Needs internet to connect | No | No for the join; the QR resolve does |
Tips
- **Default to static** for any WiFi code with a stable password. It's free, permanent, and has no failure point.
- **Use dynamic only** if you rotate the guest password on a schedule (some offices change it monthly) and want to update the code without reprinting the sign.
- **Both survive cancellation on EZQR** — even dynamic codes keep resolving, which most generators can't claim. See the [hidden-costs guide](/blog/qr-code-generator-hidden-costs-2026).
- **Want to know how many people scan?** Only dynamic codes log scans, and even then WiFi analytics are limited. For most owners, the static code's permanence beats the data.
Print, place, and test so it actually gets scanned
A WiFi QR code that nobody can scan is a sticker. Size, placement, and a one-line instruction decide whether it works in the real world, and all three are easy to get right.
Size by distance. A code people scan from arm's length — a table tent, a welcome card, a counter sign — reads fine at 2–3 cm square. A code across a cafe or a lobby wall needs 8–15 cm. The rough rule: the code's width should be about one-tenth of the scanning distance. The full math is in the QR code size guide. Print one test copy at the real size and scan it from where people will actually stand.
Placement. Put it where people already wait — the table, the counter, the lobby seating, the conference table. Eye level beats floor level. Avoid glossy lamination under direct light, which throws glare that blinds the camera. Matte finish scans more reliably.
The instruction line. Add four words beside the code: "Scan to join WiFi." A naked code gets scanned far less than one with a prompt, because most people don't assume a square means free internet. This one line is the highest-return tweak you can make. Add your network name in small text as a manual fallback for older phones.
Test on real hardware. Decoding the text is not the same as joining the network. Scan with one iPhone and one Android, tap through, and confirm both actually connect. Then check it again after printing — a code that scans on screen can fail on paper if the print is too small, too light, or too glossy. Run through the QR best-practices checklist once before a big print run, or read the WiFi QR setup guide for the deeper walkthrough.