URL QR code generator
Encode a link directly into the code, with no redirect through anyone's servers. Scanning it produces exactly the address you typed.
No need to type https:// — we'll add it.
SVG stays sharp at any size — use it for anything printed.
Customize appearance
Higher levels survive more damage but make a denser code.
Only affects PNG and JPEG. SVG scales to any size.
The clear border around the code. Four is the specified minimum; going lower makes it harder to find.
Your image is processed on this device and never uploaded. Adding a logo switches error correction to its highest setting so there is enough redundancy to cover.
What “static” actually means here
When you scan one of these, your phone reads the link out of the black and white pattern and opens it. That is the whole mechanism. There is no lookup, no server in the middle, and no record of the scan anywhere — which is also why we cannot tell you how many times a code has been scanned. That information does not exist.
The alternative, which most generators quietly hand you, is a code pointing at something like qr-service.example/a7Bx9. That address belongs to them, and it redirects to your link. It buys you editability and scan counts, and it costs you a permanent dependency on that company continuing to exist, continuing to run the redirect, and continuing to do it for free. Our static versus dynamic comparison goes through when that trade is worth making — sometimes it genuinely is.
The expiry question, precisely
“My QR code expired” is almost never true of the code. Two different things get confused:
| What people say | What actually happened |
|---|---|
| “The QR code stopped working” | A dynamic code’s redirect was switched off, usually because a trial ended. The code still scans; the address it produces now returns an error. |
| “The QR code goes to a dead page” | A static code, working exactly as designed, pointing at a page that has since been deleted or moved. |
A static code cannot fail in the first way, because nothing is switched off. It can absolutely fail in the second, which is why what you point it at matters more than how you generate it.
Choosing a link worth printing
- Point at a domain you control. A link to your own site can be redirected by you later. A link to a third-party page cannot.
- Prefer short and stable. Fewer characters means fewer modules, which means a code that stays readable at smaller sizes and from further away.
example.com/menuencodes into a much simpler code than a URL carrying three tracking parameters. - Use HTTPS. Browsers increasingly warn on plain HTTP, and a warning screen is a poor first impression from a scan.
- Add tracking at the destination, not in the code. If you need to know how many people scanned, put the analytics on the landing page. A long campaign-parameter string bloats the code for no benefit the page couldn’t provide.
Before it goes to print
Scan the finished code with a phone that has never visited the link before, and watch what the browser actually opens. It is the only test that catches a typo in a domain you have visited a hundred times, and it takes a few seconds. Then check the printed size against the distance people will scan from.
Related tools and guides
- Static vs dynamic QR codesWhat actually differs between static and dynamic QR codes, who each one suits, and why 'your QR code expired' is almost never about the code itself.
- How big should a QR code be?Work out the right printed size for any scanning distance, plus quiet zone, contrast and print resolution rules that decide whether a code scans.
- Free QR code generatorCreate QR codes for links, Wi-Fi, contacts, email, SMS and plain text. Built in your browser, free to use, and they never expire.