How to make a QR code
Pick a content type first: Text or URL, WiFi network, Contact card, or Event. Fill in the fields for whichever one you chose and the code redraws as you type.
Then set the size, the error correction level and your two colours. Download a PNG if it is going on a screen or a small print job. Take the SVG for a poster or anything large, because an SVG stays sharp at any size while a PNG goes soft when you scale it up.
The dynamic QR trap
Plenty of free QR generators hand you a code that quietly points at their own domain, then redirects to your link. They call it dynamic, and they will tell you it is better because you can edit the destination later and see scan counts.
Read what that actually means. Your printed code no longer contains your link. It contains theirs. If that company folds, changes its URL structure, or moves the feature behind a paywall, every code you printed stops working at once. There are a lot of dead menus and business cards out there that used to point somewhere.
Codes from this tool are static. Your data sits inside the pattern itself, so nothing routes through any third party and there is nothing to keep paying for. The trade-off is real and worth stating plainly: you cannot change where a static code points after you print it, and you get no scan tracking. If you need either of those things, use a dynamic service and go in knowing you are renting the code, not owning it.
What the error correction levels actually do
Every QR code carries spare data so it still scans when part of it is dirty, torn, or covered. You choose how much spare data to include, and it costs you capacity.
| Level | Recoverable | Use it for |
|---|---|---|
| L | 7% | Screens, clean digital use |
| M | 15% | Everyday printing |
| Q | 25% | Outdoor and industrial signage |
| H | 30% | Any code with a logo on top |
That last row is the one people get wrong. Dropping a logo into the middle of a code physically covers modules the scanner needs, and level H is what buys back enough redundancy to survive it. Put a logo on a level L code and you have made a decorative square that does not scan.
How big to print it
Divide your scanning distance by ten. That is the minimum width of the code.
Someone scanning from 20 cm away needs a code at least 2 cm wide. A poster read from two metres needs one at least 20 cm across. This 10 to 1 rule is a rough guide rather than physics, but it holds up well because it quietly accounts for bad lighting, older phone cameras, and people who do not hold still.
Below about 2 cm square, reliability drops off fast. Tiny codes do scan in perfect conditions on a good camera. Conditions are rarely perfect.
Worth remembering that the number of modules grows with how much data you pack in, so a long URL at high error correction needs more physical width than a short one to stay readable at the same distance. Shorten the link before you shrink the code.
The margin people crop off
A QR code needs empty space around it. The ISO/IEC 18004 spec calls for a clear border of at least four modules on every side, where a module is one of the small squares in the pattern.
Designers crop it. It looks like wasted space in a tight layout, so the code gets trimmed right to the edge of the pattern, and then it fails to scan against a busy background. Insufficient quiet zone is one of the most common reasons a printed code does not work, and it is invisible until the codes are already printed. Leave the margin.
WiFi, contact card, and event codes
Switch the content type and the code changes what it does when scanned.
A WiFi code joins the phone to your network without anyone typing the password, which is why cafes and guest rooms use them. A contact card offers to save a name, phone number, email, organisation and website straight into the scanner's contacts. An event code drops a title, a location and the start and end times into a calendar app.
All three still take your size, colour, error correction and centre logo settings.
Making a batch at once
Switch to Bulk from a list when you need more than a handful. Paste one value per line, or uselabel,value pairs so each label becomes its file name, then hit Generate all and take everything as one ZIP.
If a line fails, usually because the value is too long for the size you picked, it gets flagged in the results and the rest of the batch carries on. You are not restarting a run of 400 codes because of one bad row.
Frequently asked questions
Do these QR codes expire?
No. They are static, so your data is encoded into the pattern itself. There is no server in the middle that can go away, and no subscription that lapses.
Can I edit where a code points after printing it?
No, and that is the honest trade-off for a static code. Changing the destination means changing the data, which means a different pattern. If you need an editable destination, you need a dynamic code from a service that hosts the redirect.
Why does my code stop scanning when I add a logo?
The logo covers modules the scanner needs to read. Raise the error correction to H, which builds in enough redundancy to recover about 30% of the code, and keep the logo small and central.
What size should I print a QR code?
Take the distance people will scan from and divide by ten. That is your minimum width. Do not go under 2 cm square for anything scanned at arm's length.
Should I download PNG or SVG?
SVG for print, especially anything large, because it stays sharp at any size. PNG for screens, emails, and documents where a fixed-size image is easier to place.
Is there a limit on how many I can make?
No limit, no watermark, no account. Bulk mode exists specifically for large runs.
Related: generate a barcode · build a tracked campaign link · make a favicon.