QR Code Generator
Create a QR code for a link, Wi-Fi network, contact card, email or phone number. Adjust the colours, add a logo, and download it as a PNG or SVG. The code is generated in your browser, works forever, and doesn't need an account.
Generated entirely in your browser. Your content — including Wi-Fi passwords and contact details — is never uploaded or stored.
Your QR code will appear here.
Always test-scan a code with a couple of phones before sending it to print.
Appearance
Higher levels let a damaged, dirty or partly covered code still scan, at the cost of a denser pattern. Use H if you add a logo.
The blank border scanners use to find the code. The spec requires at least 4 modules, so it can't be set lower.
Read from your device with the File API and drawn straight onto the code — the image is never uploaded. It's capped at 22% of the code's width so it doesn't cover more than the error correction can recover.
Your QR code won't expire
This is worth understanding before you use any QR generator, because it catches a lot of people out.
Some free QR services don't encode your link directly. Instead they encode a short redirect address that points at their servers, which then forwards to your destination. That lets them track scans — and it means your code only works for as long as they keep that redirect alive. If the service shuts down, changes its terms, or moves the feature behind a paywall, every code you've printed stops working.
The codes here encode your content directly. There's no redirect, no tracking, and nothing on our end that your code depends on. Once you've downloaded it, it will keep working indefinitely, whatever happens to this site. The trade-off is that a direct code can't be edited after printing — if the destination changes, you generate a new code.
What you can encode
- A link or plain text — the most common use. Any URL, or any text you want someone to read after scanning.
- Wi-Fi credentials — scanning connects a phone to your network without typing the password. Useful for guest networks, cafés, and holiday lets. Note that the password is encoded in the code itself, so anyone who can photograph the code can extract it — treat a printed Wi-Fi QR code as being as sensitive as the written password.
- Contact details (vCard) — scanning offers to save a contact. Handy on business cards and conference badges.
- Email, SMS, or phone — scanning opens the relevant app pre-filled with the address, number, and any message you've specified.
What a QR code can't hold
A QR code stores text, and not very much of it — a few hundred characters in practice before the pattern becomes too dense to scan reliably. That surprises people, because plenty of services advertise QR codes for images, PDFs, videos, and audio.
Those services aren't encoding the file. They're hosting it, generating a link, and encoding the link. Scanning the code opens a browser, which then fetches the file from their servers. It works, but your code depends entirely on that company keeping the file online — the same dependency described above, with the same risk.
If you want a QR code that leads to a file, host the file somewhere you control — your own website, Google Drive, Dropbox, or any service you already trust — and generate a code for that link here. The code itself will never expire, and the file stays under your control rather than someone else's.
Error correction, and why it matters
QR codes have built-in redundancy, so they still scan when partly damaged, dirty, or obscured. You choose how much:
- L (Low) — recovers from about 7% damage. Smallest, densest code.
- M (Medium) — about 15%. A sensible default for most uses.
- Q (Quartile) — about 25%.
- H (High) — about 30%. Largest code, most resilient.
Higher correction means more data packed in, which makes the pattern denser for the same amount of content. The practical guidance: use M for a screen or a clean printed page, and H if the code will be printed small, placed somewhere it might get scuffed, or has a logo in the middle — because a logo covers real data, and only the error correction makes that recoverable.
Colours, logos, and keeping the code scannable
Customisation is where good-looking QR codes go wrong. A few rules keep yours working:
- Keep strong contrast. Dark on light is what scanners expect. Pale grey on white, or two mid-tone colours, will fail on many devices even if it looks fine to you.
- Don't invert. A light code on a dark background fails with a surprising number of scanners. If you want a dark look, put a light-coloured code panel on your dark design rather than inverting the code itself.
- Keep the quiet zone. The blank margin around the code isn't decoration — the spec requires it, and scanners use it to find the code's edges. This tool enforces a minimum.
- Keep logos small and raise error correction. A logo in the centre covers data modules. Keep it under about a quarter of the code's width and use level H, and the error correction can reconstruct what's hidden.
- Shorter content makes a simpler code. A long URL produces a dense pattern that's harder to scan at small sizes. Shortening the destination before generating makes a real difference.
- Always test-scan before printing. With more than one phone if you can — scanner quality varies a lot between devices and apps. This is the step people skip, and it's the one that saves reprinting a thousand flyers.
PNG or SVG?
PNG is a fixed-size image, right for screens, documents, and most everyday uses. Pick a size at least as large as you'll display it — enlarging a small PNG makes the edges fuzzy, which scanners dislike.
SVG is vector, so it stays perfectly sharp at any size. This is the better choice for anything going to print — posters, packaging, signage — or anywhere it might be resized later. Most design and print software handles SVG well.
Frequently asked questions
- Is my data sent to a server?
No. Codes are generated entirely in your browser. Your content — including Wi-Fi passwords, contact details, and any logo you upload — never leaves your device.
- Will my QR code stop working?
No. The code encodes your content directly rather than a redirect through this site, so it doesn't depend on us staying online.
- Can I edit a code after creating it?
No — the content is encoded in the pattern itself, so changing it means generating a new code. This is the trade-off for a code that never expires.
- Is there a limit on how much I can encode?
QR codes have a maximum capacity that shrinks as error correction rises. Long content produces a dense code that's harder to scan; if you're encoding a long URL, shortening it first gives a much cleaner result.
- Why won't my code scan?
The usual causes are low contrast between foreground and background, an inverted (light-on-dark) code, too small a printed size, a missing quiet zone, or a logo that's too large for the error correction level.
- Can I make a QR code for an image?
Not directly. QR codes hold text, and only a small amount of it — a few hundred characters before the pattern becomes too dense to scan reliably. An image is hundreds of times larger than that, so it simply won't fit.
Services that advertise QR codes for images are really offering hosting: they store your image on their servers, create a link to it, and encode that link. The code works only for as long as they keep that file online, which is the same expiry problem described above. To share an image, upload it somewhere you control — your own website, Google Drive, Dropbox, or similar — and generate a code for that link. The code will then keep working for as long as your link does.
- Can I make a QR code for a PDF?
Same answer as for images: a PDF is far too large to encode. Host the file somewhere you control and generate a QR code for its URL. That way the code stays under your control rather than depending on a third-party service staying online.
- Can I use these codes commercially?
Yes. Codes you generate are yours to use however you like, with no attribution or licence needed.
- Is it free?
Yes, completely free with no sign-up, no watermark, and no scan limits.