QR Code Generator
Private: the code is drawn on your device, never sent anywhere
Make a QR code for a link, a WiFi network, an email, a phone number or an SMS. It is drawn as you type and downloads as a sharp SVG for print or a PNG at any size. No watermark, no account, and no expiry: the code carries your data directly, so it keeps working forever.
About this QR code generator
A QR code is not a link to a service, it is the data itself, written as squares. That matters more than it sounds: a code made here contains your URL or your WiFi password directly, so it cannot expire, cannot start redirecting somewhere else, and cannot be switched off when somebody's free tier ends. Many "free" generators quietly route your code through their own domain so they can track the scans and charge you later. This one cannot, because there is no server involved at all.
The encoder is written from scratch for this page, so nothing is loaded from anyone else. It supports sizes up to version 10, which is 271 bytes at the lightest error correction: comfortably more than a URL, a WiFi password or a phone number needs. Text longer than that is refused with a message rather than quietly truncated.
Every QR code carries spare data so it still reads when part of it is missing, and the four levels trade that robustness against how much you can fit. The lengths below are what this page will accept at each level, in plain ASCII at version 10, the largest size it makes.
| Level | Damage tolerated | Longest text here | Best for |
|---|---|---|---|
| L | 7% | 271 characters | A screen, or a long URL |
| M | 15% | 213 characters | Almost anything printed |
| Q | 25% | 151 characters | Labels that get handled |
| H | 30% | 119 characters | Rough or dirty surfaces |
The cost is paid in squares rather than in paper. A 79 character link comes out as a 37 by 37 symbol at L and at M, 45 by 45 at Q and 49 by 49 at H, and printing all four the same width makes each square in the H version about three quarters the size of the M one. That is why M is the sensible default: it survives a scuff, and it keeps the squares large enough for a phone held at arm's length. For a product label that has to scan at a till, a QR code is the wrong symbol altogether: that is what the barcode generator is for.
Correctness here is not a matter of opinion, so it is tested rather than assumed. Every symbol this page produces is compared module for module against libqrencode, the reference implementation, and then rendered and read back by zbar, a real scanner, across four error correction levels and every size from version 1 to version 10. The error correction maths is checked separately: a valid Reed-Solomon codeword must divide exactly by its generator polynomial, and the test evaluates it at each root to prove it does.
How to make a QR code
- Pick what the code should hold. Link or text covers most uses.
- Fill in the fields. The code redraws on every keystroke.
- Leave Error correction on M unless the code will be printed small or somewhere it will get scuffed, in which case use Q or H.
- Point your camera at the screen now and check it does what you expect, before you print a thousand of them.
- Download the SVG for anything printed, because it stays sharp at any size, or a PNG for a screen or a document.
Common questions about QR codes
Will this code expire or stop working?
Is my WiFi password sent anywhere?
Which error correction level should I choose?
Why does it refuse very long text?
SVG or PNG?
How much quiet space does it need around it?
Next