Guide
How to Create a Wi-Fi QR Code for an Office, Café or Salon
A Wi-Fi QR code stores the network name, security type and password so a phone camera can offer a direct connection. Treat the code with the same care as the password itself.
What a Wi-Fi QR code actually is
A Wi-Fi QR code is not a link. It encodes the network credentials themselves — the network name, the security type and the password — in a format phones recognise as a connection offer rather than a web address.
That has two consequences worth being clear about before you print one. It works entirely offline, with no service in the loop, which is exactly what you want for connecting people to a network. And the password is inside the pattern, so anyone who photographs the card has it — the code is the credential, not a pointer to it.
Get the network details exactly right
Nearly every Wi-Fi code that fails does so because a detail was retyped rather than copied. There is no forgiving layer here; the phone attempts precisely what the code says.
- The network name, copied exactly. It is case-sensitive, and trailing spaces are real and invisible.
- The security type — WPA2 or WPA3 for a modern network, and these are not interchangeable. Picking the wrong one produces a code that scans and then fails to join, which is the hardest failure to diagnose.
- The password, case-sensitive, copied rather than transcribed. Confusing l/I/1 and O/0 by eye is the most common single error.
- Whether the network is genuinely hidden. Mark it hidden only if the SSID really is not broadcast — setting it wrongly breaks joining on some devices.
Never point it at your internal network
A Wi-Fi code on a wall is a published password. Treat the decision as you would treat writing the password on the window in marker, because functionally that is what it is.
Put guests on a separate guest network, not the one your point-of-sale, office machines and cameras are on. Enable client isolation so devices on the guest network cannot see each other — a café network without it lets any guest browse any other guest’s device. Give the guest network its own password, and change it on a schedule you can live with.
This is ordinary practice rather than paranoia: the convenience of the code is precisely that it removes the friction that was previously limiting who joined.
It is static, and that has consequences
Because the credentials live in the pattern, a Wi-Fi QR code cannot be edited. Change the password and every printed card is instantly wrong — there is no dashboard setting to update.
There is also no analytics. Nothing you control is contacted when someone joins, so scan counts do not exist for this type of code. That is a direct consequence of it working offline, not a missing feature.
If you rotate the guest password often, plan for it: print the cards cheaply and in small batches, or point a dynamic code at a small page that displays the current password instead. The second approach gives you editability and scan data at the cost of requiring the guest to already have a connection — which is fine on mobile data and useless in a basement.
Test on both platforms before printing a hundred
iOS and Android handle Wi-Fi codes slightly differently, and a code that works on one is not proof of the other.
Test with a device that has never joined the network — your own phone remembers it and will appear to succeed regardless of whether the code is correct. Forget the network first, or borrow a phone. Then check that the prompt names the network you expect, that joining actually completes, and that the connection then reaches the internet rather than just associating.
Design the card, not just the code
The code alone leaves people guessing. A card that works says what it is for, and gives a fallback.
Name the network in readable text next to the code, and print the password too. Some guests will use an older device that does not offer Wi-Fi codes at all, and a card that leaves them stuck has failed at its only job. Add a short instruction — “point your camera at the code to join” — because a surprising number of people do not know their camera does this.
Place it where someone sits rather than where it decorates: on the table, at the counter, by the seating. And keep it out of direct glare, since a laminated card under a spotlight is the classic unscannable object.
FAQ
Frequently asked questions
Is a Wi-Fi QR code safe?
It is exactly as safe as publishing the password, because the password is inside the pattern — anyone who photographs the card has it. That is fine for a guest network and wrong for your internal one. Use a separate guest SSID with client isolation enabled, and never encode the network your business systems run on.
What happens to the code when I change the Wi-Fi password?
It stops working, and cannot be updated. The credentials are encoded in the pattern itself, so a new password means generating and reprinting the code. If you rotate the password often, print cheaply in small batches, or instead use a dynamic code pointing at a page that shows the current password — though that requires the guest to already have a connection.
Do Wi-Fi QR codes work on both iPhone and Android?
Yes, on any reasonably current device, though the two platforms handle the prompt slightly differently. Test on both before printing, using a phone that has never joined the network — a device that already remembers it will appear to succeed even if the code is wrong.
Can I see how many people used my Wi-Fi QR code?
No. The code works entirely offline: nothing you control is contacted when someone joins, so there is nothing to count. That is the direct trade for it working with no service in the loop. Scan analytics require a dynamic code, which means pointing at a page rather than encoding the credentials.
Why does my Wi-Fi code scan but fail to connect?
Almost always a mismatch in the details rather than the code. The most common cause is the wrong security type — WPA2 selected where the network is WPA3 or vice versa — followed by a transcribed password with a confused character, a trailing space in the network name, or the hidden-network flag set incorrectly. Copy the values rather than retyping them.
NEXT STEP