Search for a QR code generator and you'll find dozens of tools that all start the same way: paste a link, see a preview, then hit a wall. Sign in to download. Upgrade to remove the watermark. Verify your email to keep the code working. None of that has anything to do with making a QR code — it's a business model bolted onto a piece of maths that was standardised in 1994 and has been free to use ever since.
If you just want a square you can print on a flyer, here's what "simple" should actually mean, and how to keep the code itself simple as well as the tool.
Three things a simple generator gets right
It doesn't ask who you are
A QR code is a lossless encoding of a string of text. Your URL, your WiFi password, your phone number — that data goes into the pattern of black and white squares and stays there. There is no server-side lookup involved and no reason a tool needs your email address to produce one. If a generator wants an account before it hands over a PNG, the account is the product, not the code.
QRafty runs the encoding in your browser. The text you type never leaves your device, which also means there's no privacy conversation to have about it.
It gives you a clean file, not a branded one
Watermarks are the other tax. Some free tools stamp a logo in the corner or under the code, which is fine until you're placing it on a menu or a business card that already has a design. A clean PNG with a proper quiet zone — the white margin around the pattern — is the minimum useful output.
It doesn't route your link through someone else
Many "free" generators create a short link on their own domain and encode that instead of your URL. That's how they offer scan tracking and "editable" codes. The trade-off is real: your printed code now depends on a third party staying online and keeping that redirect alive. Plenty of people have discovered their old codes dead because a service shut down or moved the feature behind a paywall.
A direct code has no middleman. The flip side, and it's worth being clear about it: a static code can't be changed after you generate it. The destination is baked into the image. If the URL changes, you generate a new code. For most uses — a menu link, a WiFi network, a contact card — that's a fine deal.
Keep the code itself minimal
The tool is one half. The other half is the data you put in, and this is where most bad QR codes go wrong.
Shorter data means bigger modules. A QR code grows in complexity as you add characters. A 25-character URL might produce a 25×25 grid; a 200-character URL with tracking parameters can push it past 50×50. At the same printed size, that means each square is half as wide and much harder for a phone camera to resolve, especially in bad light or at an angle. Strip UTM parameters you don't need. Use the root domain if you can.
Uppercase your protocol-free URLs if you're squeezing. QR codes have an alphanumeric mode that only covers digits, uppercase letters and a few symbols, and it packs more characters per module than the byte mode lowercase forces. EXAMPLE.COM/MENU encodes more efficiently than example.com/menu. Most domains are case-insensitive, so this is free savings on tight prints.
Contrast beats colour. You can recolour a code in QRafty, and a dark brand colour on white works fine. What fails is light-on-dark inversion, low-contrast pairings like mid-grey on beige, and gradients that wash out the corner alignment squares. If you're unsure, print it and scan it with the oldest phone in the office.
Leave the quiet zone alone. Four modules of blank space on all sides. Designers hate it and crop it constantly. Scanners need it to find the code's edges.
When you don't need a URL at all
One underused simplification: a lot of QR codes point at a landing page that exists only to hold one piece of information. If the payload is a phone number, an email address, a WiFi network or contact details, encode that directly instead. No hosting, no page to maintain, no link to break.
- WiFi QR codes join a network without typing the password
- vCard QR codes drop your details straight into the phone's contacts
- plain-text QR codes show a short message — a serial number, a shelf location, an instruction
All of them work offline once printed, because the data is in the square.
The whole process, honestly
Open the generator, pick a type, type or paste your content, adjust the colour if you care, download the PNG. Then print a test at the real size and scan it from the distance people will actually stand at. That last step is the one everybody skips and the only one that catches problems.