Free tool · PNG and SVG · Runs in your browser
Free QR code generator
Short answer
Choose what the code is for (a link, Wi-Fi, a contact, a WhatsApp chat, an email, a text message or a location), pick an error correction level and download a PNG or SVG. The code is drawn in your browser, does not expire and has no tracking. In our tests the level decided how much of the center could be covered: level H read with up to 15% covered, level Q 10%, level M 5% and level L almost none.
Enter a link or some text.
Nothing is uploaded: the code is drawn in your browser. Codes do not expire and carry no tracking.
Key takeaways
- The error correction level is a trade between size and repair. For a 200 character link the code is Version 9 (53 × 53) at level L and Version 15 (77 × 77) at level H; for a 20 character link it is Version 2 (25 × 25) and Version 3 (29 × 29).
- Repair is less than the percentages quoted for it. With a white square over the center, level H read every time up to 15% of the area and 25% of the time at 20%; level L read only 42.5% of the time with 5% covered. If you add a logo, use level H and keep it under about a tenth of the code.
- Contrast decides whether it reads at all: 3.54 to 1 read every time, 1.92 to 1 never did. The tool warns when the two colors you pick are below 3 to 1.
- Leave the white margin. With none, the code read 2% of the time on a busy background. The tool adds a 4 module quiet zone.
- Digits are cheap: 100 digits fit in Version 3 (29 × 29) at level M, the example on Denso Wave's page, which gives Version 3 (29 × 29). The same length of text needs a larger code.
What the generator makes
The tool builds the code from your input and shows it before you download it, so the image on screen is the one you get. Nothing is sent anywhere. A dynamic QR code from a paid service points to a short link that can expire or be switched off; this one contains your data directly and works as long as the data does.
| Option | Choices | What it does |
|---|---|---|
| Kind | Link or text, Wi-Fi, contact card, WhatsApp chat, email, text message, phone number, location | Builds the right text for each kind |
| Error correction | L, M (default), Q, H | How much damage the code can repair, and how big it gets |
| Image size | 256, 512, 1024 or 2048 pixels | Size of the PNG; the SVG scales to any size |
| Quiet zone | 4 modules | The white margin around the code |
| Colors | Any two, with a contrast warning | Dark and light |
| Downloads | PNG and SVG | SVG is best for print |
The code stores the text itself. Anyone who scans it can read it, including a Wi-Fi password.
Measured: how big the code gets
Measured with the qrcode library the tool uses, decoded with the open-source jsQR decoder, on seeded random links of 40 to 60 characters unless stated. One decoder is not every phone, so treat the figures as a guide and test a print on the phones you care about.
Denso Wave says the versions run from 1 (21 × 21 modules) to 40 (177 × 177), each version adding 4 modules to a side, and that more data needs more modules. The table shows where links of different lengths land at each level.
| Link length | L | M | Q | H |
|---|---|---|---|---|
| 20 characters | Version 2 (25 × 25) | Version 2 (25 × 25) | Version 2 (25 × 25) | Version 3 (29 × 29) |
| 40 characters | Version 3 (29 × 29) | Version 3 (29 × 29) | Version 4 (33 × 33) | Version 5 (37 × 37) |
| 60 characters | Version 4 (33 × 33) | Version 4 (33 × 33) | Version 5 (37 × 37) | Version 7 (45 × 45) |
| 100 characters | Version 5 (37 × 37) | Version 6 (41 × 41) | Version 8 (49 × 49) | Version 10 (57 × 57) |
| 200 characters | Version 9 (53 × 53) | Version 10 (57 × 57) | Version 12 (65 × 65) | Version 15 (77 × 77) |
| 400 characters | Version 13 (69 × 69) | Version 15 (77 × 77) | Version 19 (93 × 93) | Version 21 (101 × 101) |
| 800 characters | Version 20 (97 × 97) | Version 23 (109 × 109) | Version 27 (125 × 125) | Version 32 (145 × 145) |
And size in modules) of a link of each length at each error correction level.
Raising the level makes the same link a bigger code: a 200 character link is Version 9 (53 × 53) at L and Version 15 (77 × 77) at H. A bigger code means smaller modules at the same printed size, which is harder to scan. Shorten the link before you raise the level.
Measured: how much of the center can be covered
Denso Wave describes error correction as a way to restore data if the code is dirty or damaged, and says levels Q or H suit dirty environments while L suits clean ones with a lot of data. People use the same headroom to put a logo in the middle. The tool does not add a logo, but you can edit the downloaded image. This is how far it can go.
| Covered | L | M | Q | H |
|---|---|---|---|---|
| 5% | 42.5% | 100% | 100% | 100% |
| 10% | 0% | 2.5% | 100% | 100% |
| 15% | 0% | 0% | 15% | 100% |
| 20% | 0% | 0% | 0% | 25% |
| 25% | 0% | 0% | 0% | 0% |
| 30% | 0% | 0% | 0% | 0% |
| 35% | 0% | 0% | 0% | 0% |
| 40% | 0% | 0% | 0% | 0% |
How often 40 codes still read.
Level H read every time up to 15%, level Q up to 10% and level M up to 5%. These are lower than the repair rates of the levels, because the damage is concentrated in one place. Keep a logo well inside these numbers.
Measured: colors, margin and blur
A QR code is a picture of black and white squares, and a scanner has to see them. These runs changed one thing at a time.
- Contrast: a code in dark gray (9.74 to 1) or mid gray (3.54 to 1) on white read every time; light gray (1.92 to 1) and yellow (1.43 to 1) never did.
- Quiet zone: with no white margin the code read 2% of the time on a busy background; with one module or more it read 100%. The tool leaves 4 modules.
- Blur: a code drawn at 4 pixels per module still read after a blur of 2 pixels and failed at 3, about three quarters of a module. A sharp print or screen matters more than size.
- Inverted codes (light on dark) read only when the scanner tries both polarities: 0% when it could not invert, 100% when it could.
| Colors | Contrast | Read |
|---|---|---|
| Black on white | 21 to 1 | 100% |
| Dark gray (#444444) on white | 9.74 to 1 | 100% |
| Mid gray (#888888) on white | 3.54 to 1 | 100% |
| Light gray (#bbbbbb) on white | 1.92 to 1 | 0% |
| Blue (#1a3cff) on white | 6.7 to 1 | 100% |
| Yellow (#ffd400) on white | 1.43 to 1 | 0% |
| White on black, decoder not allowed to invert | 21 to 1 | 0% |
| White on black, decoder tries both | 21 to 1 | 100% |
How often 30 codes read. Contrast is the WCAG ratio between the two colors.
On a clean digital image even one pixel per module decoded in our test, so the size of the file is not the limit. A phone camera is: print a test and scan it from the distance people will use.
Which kind of code do you need?
Each kind has its own page, with the exact text the code holds and what we measured for it.
Free tools:Wi-Fi QR codeContact (vCard) QR codeWhatsApp QR codeEmail QR codeText message QR codeLocation QR code
Questions people ask
Do QR codes from this tool expire?
No. The code holds your data directly, not a link to a service, so it works as long as the text does.
Which error correction level should I use?
M for most uses. Use Q or H if the code will get dirty or you will put a logo on it; level H read every time with up to 15% of the center covered in our test.
How do I add a logo?
Download the SVG, place the logo over the center in an editor and keep it under about a tenth of the code at level H. Then test it with a few phones.
What size should I print it?
The generator cannot tell, because it depends on the camera and the distance. Our decoder read a clean image at one pixel per module, but a print is different: scan a test print from the distance people will use.
Why will my code not scan?
The usual causes are low contrast (below 3 to 1 failed in our test), no white margin, a blurry image or a code that is too dense. Shorten the link or lower the level.
Can I make the code in my brand colors?
Yes, if the dark color is much darker than the light one. A dark gray at 9.74 to 1 read every time; 1.92 to 1 never did.
What is the longest link a code can hold?
It depends on the level. Version 40 is 177 × 177 modules, according to Denso Wave, but a code that dense is hard to scan. Keep links short.
Is my text uploaded?
No. The code is drawn in your browser.
Related
Sources and how we checked
- Denso Wave: Information capacity and versions of the QR Code (read 2026-10-09)
- Denso Wave: Error correction feature (read 2026-10-09)
- Denso Wave: Generating a QR Code (read 2026-10-09)
- ZXing wiki: Barcode Contents (read 2026-10-09)
Reviewed October 9, 2026. The measurements generated codes with the same library the tool uses and read them back with an independent decoder (jsQR). The script and the results are in data/seo/hub/evidence/2026-10-09/qr.