How this QR code generator works
Everything on this page happens inside your own browser tab. When you type a link, the text is encoded into a module grid by JavaScript running on your device, drawn onto a canvas, and handed back to you as a PNG or an SVG file. Nothing is sent to a server, so there is no upload to intercept, no record of what you encoded, and nothing that can be taken away later.
That last point matters more than it sounds. The codes produced here are static: the data lives in the black-and-white pattern itself. A scanner reads the pattern and gets your link directly. There is no redirect in the middle, which means the code cannot expire, cannot be rate-limited, cannot start showing an advert, and will not break if this site ever disappears. Print it on ten thousand leaflets and it will still work in a decade.
Static and dynamic codes are not the same product
Many generators advertise a free tier and then quietly hand you a dynamic code. A dynamic code does not contain your link at all — it contains a short address on the provider's own domain, which forwards to wherever you have currently pointed it. The appeal is real: you can change the destination after printing, and you get scan analytics.
The cost is that the code stops being yours. It works only for as long as that company keeps the redirect alive and you keep paying. Free dynamic tiers routinely cap total scans, and once you hit the cap the code stops resolving — on material you have already printed and distributed. If you have ever seen a menu or a poster whose QR code leads to an upgrade prompt, that is what happened.
Use a static code, like the ones here, whenever the destination is stable: your website, your Wi-Fi password, your contact details, a phone number, a location. If you genuinely need to redirect later, the robust approach is to encode a URL you control — a page on your own domain that you can repoint whenever you like. You keep the flexibility without handing the code's survival to a third party.
Choosing the right code type
A QR code is just a container for text. What makes a Wi-Fi code join a network and a contact code open the address book is the format of that text, which phone cameras recognise by prefix. Picking the right type here writes the correct format for you.
Link is the workhorse and produces the smallest, most reliable codes. Wi-Fi writes a WIFI: string that Android and iOS 11 and later join straight from the camera — ideal for a guest network, since people never have to see or retype the password. Contact produces a vCard, which is by far the most data-hungry option; fill in only what a person actually needs, because every extra field makes the grid finer and the code harder to scan. Email, SMS, Phone and WhatsApp open the relevant app with the details already filled in, though the person still has to press send. Location drops a pin. Event writes a calendar entry.
One rule cuts across all of them: less text means fewer modules, and fewer modules means a code that scans faster, from further away, and at a smaller printed size. If a code looks alarmingly dense, the fix is almost always to shorten the data rather than to print it bigger.
Size is what actually breaks printed codes
The most common reason a QR code fails in the wild is not damage or a bad scanner — it is that somebody sized it by eye. The usual working rule is that a code can be read from roughly ten times its own width. A code 3 cm across is good for about 30 cm, which is fine on a business card and useless on a wall.
Underneath that rule is the module size, sometimes called the X dimension: the width of one individual square in the grid. Scanning is really a question of whether the camera can resolve those squares. Below about 0.4 mm per module you are relying on a good camera in good light; below 0.25 mm, ink spread on the paper starts closing the gaps between modules and no camera will help. This is why data length and physical size are the same problem. A version 10 code packs 57×57 modules into whatever space you give it, so at 3 cm wide each module is only about 0.5 mm across, while a short link at version 3 gives you 1.1 mm in the same space.
The calculator above works this out both ways: give it a scanning distance and it tells you how wide to print, or give it the space you have and it tells you how far away the code will still read — using the module count of the code you have actually built, not a generic estimate.
Colour, contrast and the inversion trap
You can colour a QR code, within limits that are stricter than most brand guidelines assume. Scanners look for a dark pattern on a light background and threshold the image between the two. Two rules follow.
First, keep real contrast. A mid-grey code on a cream background looks tasteful on screen and fails on a phone in a dim room. Aim for a genuinely dark foreground — dark navy, forest green and deep burgundy all work; pastels and mid-tones do not.
Second, never invert. A light code on a dark background is the single most common design mistake, because it looks striking and it scans on the designer's phone. Many scanners will not attempt an inverted code at all, and the ones that do are slower and less reliable. If your layout demands a dark panel, put the code inside a light rectangle within it. The generator warns you when your colour choice trips either rule.
The quiet zone — the blank margin around the code — is not decorative padding. The specification requires four modules on every side, and scanners use it to find where the symbol begins. Designers trim it constantly, and it is a frequent cause of codes that read on some devices and not others.
Putting a logo in the middle
A logo works because QR codes carry Reed–Solomon error correction: spare data that lets a scanner rebuild modules it cannot read. Level H can reconstruct roughly 30% of the code, which is why covering the centre with a mark is survivable at all. This tool raises error correction to H automatically as soon as you add a logo.
Two cautions. The recoverable percentage is a budget shared with everything else that can go wrong — print quality, a scuff, a fold, glare — so spending most of it on a logo leaves nothing for real-world wear. Keeping the logo under about a fifth of the width is a sensible ceiling. And a logo placed over one of the three big corner squares will break the code outright, because those are the finder patterns a scanner uses to locate and orient the symbol before it decodes anything. This tool only ever clears space in the middle, for exactly that reason.
PNG or SVG
Use the SVG for anything printed. It stores the code as vector shapes, so it stays perfectly sharp whether it goes on a business card or the side of a van, and print shops prefer it. Use the PNG for screens, documents and anywhere a vector file is awkward. The PNG here snaps to a whole number of pixels per module, which avoids the soft, half-grey module edges that resampling produces — a subtle but real cause of scanning problems at small sizes.