/01 More than a black and white square
A QR code is a two-dimensional barcode that carries a URL, text, contact details, or a WiFi password, readable by any phone camera. The basic pattern is fixed by the standard, but there is more room to style one than most people expect: the colours, the shape of the corner markers, the shape of the dots, and a logo in the middle.
This generator takes a URL or any text and produces a QR code you can restyle live. Set the foreground and background colours. Choose whether the three corner squares and their inner dots are square or rounded. Drop a logo into the centre. Watch the code regenerate with every change, then download it as a PNG for print or an SVG for the web.
Because the code is generated entirely in your browser, the destination URL is never sent anywhere. That matters more than it sounds: online QR services have a history of logging destinations, expiring codes, and redirecting them through their own servers. A code generated locally encodes your URL directly, with nothing behind it to expire or be sold.
/02 Error correction: the reason logos work
QR codes carry built-in error correction, which means a damaged or partly covered code can still scan. The standard offers four levels. L corrects about 7 percent of the code, M about 15, Q about 25, and H about 30. Higher levels tolerate more damage but make the pattern denser, because the redundancy has to live somewhere.
Error correction is exactly what lets a logo sit in the middle of a styled code. The logo covers part of the pattern, and the correction level repairs the loss at scan time. The practical rule: keep any logo under roughly 30 percent of the code's width, and prefer the higher correction levels when a logo is present.
The same maths is why a QR code on a torn poster or a scuffed package still works. The designer covering the centre with a graphic and the delivery driver tearing a corner are, to the scanner, the same problem, and the code is built expecting some of both.
/03 Keeping a styled code scannable
Styling a code is easy. Styling it so a five-year-old phone in dim light still reads it takes a little care, and the rules are simple.
Contrast matters more than colour. Scanners expect dark on light, and the further you drift from that, the more readers you lose. A navy pattern on cream is fine. A pale grey on white is already marginal. Inverted codes, light pattern on dark ground, break many readers outright, so avoid them for anything public.
Keep the quiet zone: the empty margin around the pattern is part of the standard, and codes placed flush against other graphics or trimmed edges start failing. Print big enough that the smallest squares survive the process — a code needs to be at least two centimetres square in print, larger the further away the scanner will be. And always test with a real phone before printing a thousand of them. The camera that matters is the one in the pocket of whoever scans it, not the one on your desk.
/04 What QR codes can carry
A QR code is not just a link. The pattern can carry plain text, a phone number, a pre-written SMS, a WiFi network name and password so guests can join without typing, a contact card, a calendar event, or a location on a map. The phone recognises the format and offers the right action.
The limit is size: more data means a denser pattern, which needs a bigger print and a steadier scan. URLs are short, which is why most codes you see are links. A full contact card or a paragraph of text makes a noticeably denser code, and at that point the print size rules matter more.
One thing a QR code cannot do is change after printing. The data is in the pattern itself, not behind a service, so a printed code works forever and points at the same destination forever. That is the trade: permanence and no dependency, in exchange for no editing. Point the code at a URL you control, and you can change what the destination serves while the printed pattern stays valid.
/05 A free QR code generator with no strings attached
Search for a free QR code generator and many of the results are free only until the code is printed. They create dynamic codes: the pattern points at the service's own short link, which then redirects to your address. It works until the trial ends or the plan lapses, and then every printed menu, flyer and business card leads to a sign-up page instead of your site.
This QR code generator makes static codes. Your URL or text is written straight into the pattern, so there is no redirect, no account, no scan limit and nothing that can be switched off later. The trade-off is that the destination cannot be edited after printing, which is why the sensible move is to encode a page you control and update that page instead.
Static codes are also the private option. A dynamic code logs every scan on someone else's server: when it happened, roughly where, and on what phone. A static code has no middleman to record anything.