[ DEV.5 — WI-FI QR ]

Wi-Fi QR
Generator.

Turn your network name and password into a QR code that joins the network when scanned. Print it, tape it by the door, and stop reading a 30-character passphrase out loud across a room.

Corrections welcome — see our editorial policy.

Generated entirely in this browser tab. The password is never sent anywhere — making a code takes no network request at all, and nothing you type is logged, stored, or transmitted.

See what else is on your network.

Look up an IP address →

What the code actually contains

A Wi-Fi QR code is not magic and it is not a link. It encodes a single short line of text in a format both Android and iOS understand:

WIFI:T:WPA;S:MyNetwork;P:sup3rsecret;;

That is the whole thing: a security type, the network name, the password, and a terminator. When a camera recognises that prefix it offers to join the network instead of opening a page. Nothing is looked up and no server is involved — the credentials are in the code itself.

Which leads directly to the most important thing to understand about it.

The code is the password

Anyone who can photograph the code has your Wi-Fi password. Not a token, not a time-limited invitation — the password itself, in plain text, recoverable by any QR scanner. A printed code on a café wall is the same as writing the passphrase on that wall in large letters.

Usually that is fine, because it is exactly what you meant: a guest network where the password is meant to be shared. It is not fine if the code is for the network your file server and printers sit on. If you are printing one for visitors, put visitors on a guest network first. Most consumer routers have supported one for a decade, and it is the difference between handing out access to the internet and handing out access to your devices.

The same logic applies to photographs. A code visible in the background of a posted photo is a shared password, and neither the person who posted it nor the people who can read it are likely to notice.

Escaping, and the failure you cannot see

Five characters have meaning in that format: the backslash, semicolon, comma, colon and double quote. If your network name or password contains any of them, they have to be escaped with a backslash, or the record ends early.

A network called Cafe;Guest that is not escaped becomes a code for a network called Cafe. A password containing a semicolon is silently truncated at that point. Both produce a QR code that scans perfectly and then fails to connect, and there is nothing to look at that would tell you why — the user is holding a picture of a square. This page escapes all five, and the escaping has its own tests, because it is the one bug in a tool like this that is genuinely invisible.

There is a related quirk with names made entirely of hex digits. An SSID like 0123456789 can be read by some clients as raw hexadecimal rather than as text, so the format allows wrapping it in quotes to force a literal reading. This page does that automatically and tells you when it has.

Choosing an error-correction level

QR codes carry redundancy, so a damaged or partly obscured code still reads. Four levels exist, recovering roughly 7%, 15%, 25% and 30% of the code respectively. Higher redundancy means more modules, which means a physically larger or denser code for the same information.

For a code that lives on a screen, the lowest level is fine. For one that gets printed, taped to a wall, and then rained on, scuffed, or partly covered by a coffee cup, the higher levels earn their extra size. The balanced level is a sensible default and is what this page starts on.

The other reason to raise it: if you plan to put a logo in the middle of the code, that logo is damage as far as the scanner is concerned, and you are spending redundancy to pay for it.

What stays in your browser, and what this page sends

Generating this code requires no network access at all. It is arithmetic over the text you typed, so there is no reason for the passphrase to leave the page, and it does not. Nothing you enter is sent, stored, or logged: not the network name, not the passphrase, not the code itself.

The page itself is not silent, though, and that is better said here than discovered in a network panel. Alongside its own files, it makes one request that carries anything about you: a usage beacon, sent as the page loads, whose entire body is {"type":"tool","value":"wifi-qr"} — this tool’s own name, so we can tell which tools people actually use. It fires before you have typed anything, sends no cookies, and cannot carry form input by construction. Like every page here, it also loads Google’s advertising and consent scripts, which are third-party requests and are how the site is paid for. Neither can see what you type, for the simple reason that what you type never leaves the form.

This matters more than the usual privacy boilerplate. Some Wi-Fi QR generators work as a web form: you submit the network name and passphrase, and a server renders the image and sends it back. That server now has your passphrase, and so does anyone who ever compromises its logs. You can check ours rather than take our word for it: open your browser’s network panel and reload. You will see this page’s own files and the usage beacon. Then type a passphrase and generate a code: generating it sends nothing, and no request carries what you typed. If Google’s scripts load a few seconds in, that is the ad code described above firing on its own timer or on any keypress on the page — not a response to your passphrase.

Printing one that actually scans

Two things break printed codes more than any other. The first is size. A code needs roughly two centimetres square at typical phone distance, more if it holds a long passphrase, because a longer password means a denser grid and smaller individual modules. If it must be read from across a room, it needs to be much larger than feels necessary.

The second is the quiet zone — the blank margin around the code. Scanners use it to find the code's edges, and a code cropped flush to its border, or printed on a busy background, often will not lock on at all. The download here includes the margin; keep it.

Print in plain black on white. Inverted codes (light on dark) are read by some scanners and not others, and coloured codes with insufficient contrast fail unpredictably. This is not the place to be decorative.

Common questions

Will this work on both iPhone and Android? Yes. Both read this format natively from the camera app — iOS since version 11, Android since 10, and via Google Lens on older versions.

My phone scans it but nothing happens. Usually the security type is wrong, or the passphrase contains a character that was not escaped by whatever generated the code. Check that the type matches what the router actually runs; a network set to WPA3 that the code declares as WEP will not join.

Can I make one that expires? Not with this format. The code is the credential, so the only way to revoke it is to change the Wi-Fi password. If you need time-limited guest access, that is a router feature, not a QR feature.

Does the code work if the network is hidden? Yes, if you tick the hidden option, which adds a flag telling the device to look for a network that does not broadcast its name. Without that flag, scanning a hidden network's code often does nothing.

Why is my code so much bigger than another generator's? Either a higher error-correction level or a longer passphrase. Both add modules. If you compare two codes for the same network, check the level before concluding one tool is worse than the other.

If you are setting up a network rather than sharing one, the MAC address lookup helps identify unfamiliar devices that appear on it, and the DNS leak test is worth running after joining any network you do not control.