Most free QR codes are on a leash
Search for a QR generator and nearly everything on the first page hands you a dynamic code. The image does not contain your web address at all. It contains theirs, and their server redirects to you.
That is sold as a feature, and two parts of it are real: you can change the destination later, and you get scan statistics. What tends not to be said out loud is the dependency you have just taken on. Your code works for exactly as long as somebody else keeps redirecting it. When the trial ends, the plan lapses or the company closes, every code you printed dies at the same moment: the one on the van, the one in the shop window, the one on the menu, and the five thousand on the flyers. You cannot fix it, because the thing that broke is not in your possession.
A static code contains the destination itself. Nothing sits in between. There is no account to lapse and nobody who can switch it off, including us: close this tab and the code you downloaded carries on working, because it was never pointing at us in the first place.
The honest trade
Static is not free of downsides and it would be dishonest to pretend otherwise. You cannot change where the code points once it is printed, and you get no scan statistics.
If you need either, there is a version that is safe: put a redirect on a domain you own, point a static code at that, and change the redirect whenever you like. You keep the editability, you can log the hits yourself, and nothing depends on a third party staying in business. It is the only version of dynamic that cannot be taken away from you.
Error correction is a trade, not a quality slider
The four levels recover roughly 7%, 15%, 25% and 30% of a damaged code. It reads like a safety setting where higher is better, and it is not, because the recovery data has to go somewhere and where it goes is inside the same square.
Raise the level with the same content and the code moves to a higher version: more modules across, so at the same printed width every module is physically smaller. A denser code on a small label is harder to scan, not easier. Choosing H "to be safe" on a business card can be the thing that breaks it.
- M for a clean, flat, printed surface. The sensible default.
- Q or H when the code will be scuffed, curved, on fabric, outdoors, or partly covered by a logo.
The size arithmetic nobody does
Two different limits apply, and which one governs depends on how big you are printing.
The distance rule of thumb is that a code scans from about ten times its own width, so a 20cm code reads from roughly two metres. It is a rule of thumb rather than a standard, and it governs posters and vehicles.
The module floor is the harder limit and it matters on small prints. Below roughly 0.4mm per module most phone cameras stop resolving the squares in ordinary light. A code with 57 modules across, plus the quiet zone, therefore cannot print below about 26mm no matter what the distance rule suggests.
Which is why a shorter link is not just tidiness. Less content means a lower version, fewer modules and physically larger squares at the same width. It is the difference between a code that fits on a business card and one that does not.
And the quiet zone, four modules of blank on every side, is not optional. More codes fail from being printed hard against an edge or a border than from anything else on this page. The downloads include it, so do not crop them.
Why WiFi codes join the wrong network
The WiFi format is a single string delimited by colons and semicolons, roughly WIFI:T:WPA;S:name;P:password;;. So if the network name or the password contains a colon, semicolon, comma, backslash or quote mark, the string breaks in a way nothing warns you about.
A network called Joe's Cafe; Guest gets read as Joe's Cafe and everything after the semicolon is thrown away. A password containing a colon reports as wrong. Those characters have to be backslash-escaped, and the backslash has to be escaped first or the escapes double up.
This tool does that, and tells you when it has done it, because the difference is completely invisible in the finished square and you would only find out after printing.
Common questions
Will this QR code stop working?
No. This code is static: the web address is encoded in the image itself. Nothing sits between the phone and your website, so there is no account to lapse, no subscription to expire and nobody who can switch it off. Most free generators hand you a dynamic code instead, which contains their address rather than yours and relies on their server redirecting to you for as long as they feel like it.
What is the difference between a static and a dynamic QR code?
A static code contains your destination. A dynamic code contains the generator's destination and redirects. Dynamic is sold on being editable and on scan statistics, and both of those are real. What is not usually mentioned is the dependency: when the trial ends or the company closes, every code you printed dies at once, on the van, the menu and the five thousand flyers, and you cannot fix it because the broken part is not yours. If you genuinely need to change the destination later, put a redirect on a domain you own and point a static code at that. It is the only version of dynamic nobody can take away from you.
Which error correction level should I choose?
M for a clean flat print, H only when the code will be damaged, curved, printed on fabric or partly covered by a logo. Higher is not simply safer. The recovery data goes inside the same square, so raising the level with the same content pushes the code to a higher version with more modules, and at the same printed width each module gets physically smaller. On a small label that makes it harder to scan, not easier.
How small can I print a QR code?
The limit that bites is the module, not the code. Below roughly 0.4mm per module, ordinary phone cameras stop resolving it in normal light. A code with 57 modules across, plus the four-module quiet zone each side, therefore cannot go below about 26mm however small you want it. The tool works this out for the code you have built, because it depends on how much content you put in.
How big should a QR code be for a poster or a van?
The widely used rule of thumb is that scanning distance is about ten times the width of the code, so a code read from two metres wants to be roughly 20cm across. It is a rule of thumb rather than a standard, so treat it as a starting point. Check it against the module floor too: on a large print the distance rule is what governs, on a small one the module size is.
What is the quiet zone and do I need it?
It is four modules of blank space on every side of the code, and yes. Codes fail far more often because something was printed hard up against the edge than for any other reason. The downloads here include it automatically, so do not crop them.
Why does my WiFi QR code join the wrong network?
Almost always because the network name or password contains a colon, semicolon, comma, backslash or quote mark, and the generator did not escape it. The WiFi format is delimited by exactly those characters, so a network called "Joe's Cafe; Guest" gets read as "Joe's Cafe" and everything after the semicolon is discarded. This tool escapes them, and tells you when it has, because the difference is invisible in the finished code.
Can I put a logo in the middle?
You can, and if you do, use error correction level H. The recovery data is what lets a scanner reconstruct the part your logo is covering. Keep the logo small, well under a third of the width, and always test the printed article rather than the screen: paper, ink spread and lighting all cost you margin that a monitor does not show.