QR Code Generator
Generate a QR code in your browser and download it as SVG or PNG. Correct UTF-8, so Turkish characters, WiFi passwords and vCards survive intact.
15% recovery. The right default for most uses.
Type something on the left and the code appears here immediately.
The code is generated in your browser. Nothing you type is sent to a server.
Key Takeaways
- A QR symbol carries at most 2953 bytes, and only at the lowest error-correction level. Turkish characters cost two bytes each, so the character limit is lower than the byte limit suggests.
- Error correction is not a quality setting. L recovers about 7% of the symbol, H about 30%, and a higher level makes the code physically denser at the same printed size.
- Download SVG for anything that will be printed or resized. A PNG exported at screen size turns into an unscannable grey mush on a poster.
- The four-module light border is part of the specification. Cropping it off is the single most common reason a correctly generated code will not scan.
The code that worked on screen and failed on the poster
A restaurant printed its menu QR code on a table card. It scanned perfectly on every phone in the office. On the tables, under warm lighting, about a third of customers could not get it to read. Nothing about the code was wrong in the sense of being malformed. It was generated at 200 pixels, exported as PNG, then scaled up by the print shop, and the module edges had blurred into grey.
A scanner does not read a picture. It samples a grid and decides, per cell, whether that cell is dark or light. A blurred boundary makes that decision ambiguous, and enough ambiguous cells exhaust the error correction. This is why the format you export matters as much as the data you encode.
Choosing an error-correction level
Every QR symbol carries redundant data, and you choose how much. The trade is direct: more redundancy means more codewords, which means a larger symbol for the same payload, which means smaller modules at a fixed physical size.
| Level | Recovers | Use it for |
|---|---|---|
| L | about 7% | Screens, digital documents, anywhere the code is pristine |
| M | about 15% | The default. Print in good conditions, business cards |
| Q | about 25% | Labels, packaging, anything handled or exposed to wear |
| H | about 30% | Industrial settings, or when a logo covers part of the code |
The logo case is worth spelling out, because it is where H genuinely earns its place. Placing a logo over the centre of a code destroys those modules outright. Error correction is what lets the rest of the symbol reconstruct them, so a code intended to carry a logo should use H and keep the covered area under roughly 30% of the total.
Warning
Why Turkish characters change the capacity
This generator encodes in byte mode using UTF-8, which is what every real-world scanner assumes when no explicit character-set marker is present. UTF-8 is variable width: ASCII takes one byte per character, while the Turkish letters take two.
"Sisli" -> 5 characters, 5 bytes"Şişli" -> 5 characters, 8 bytes (Ş, i, ş each cost two)"Kahve ☕" -> 7 characters, 9 bytes (the emoji alone is three)The tool reports the byte count rather than the character count for exactly this reason. When a payload is close to the limit, characters are the wrong unit to be counting in.
SVG or PNG
SVG describes the symbol as geometry, so it stays sharp at any size. It is the correct choice for print, for anything that might be resized later, and for embedding in a document. PNG is a fixed grid of pixels and is convenient for a slide or a chat message where the size is already known.
The rule that follows: if you do not yet know how large the code will be displayed, export SVG. Scaling a PNG up is the failure described at the top of this page, and it happens after the code has left your hands.
Common payload formats
A QR code holds text. Phones give that text special treatment when it matches a convention they recognise, and those conventions are just strings you can type into the field above.
WIFI:T:WPA;S:NetworkName;P:password;;tel:+905551112233mailto:someone@example.com?subject=HelloBEGIN:VCARDVERSION:3.0N:Surname;NameTEL:+905551112233END:VCARDNothing is uploaded
The encoder runs entirely in your browser. There is no request carrying your text, and no dependency doing the encoding on your behalf, which matters here more than on most tools: QR payloads are routinely WiFi passwords, personal phone numbers and contact details. Once this page has loaded you can disconnect and it keeps working.
Frequently Asked Questions
- Why does my code not scan?
- In order of likelihood: the quiet zone was cropped, the code was printed too small for its version, contrast is insufficient (a light-on-dark inversion breaks many scanners), or a PNG was scaled up and blurred. Try a lower error-correction level, which produces a larger module size at the same physical dimensions.
- How small can I print a QR code?
- A practical floor is about 2 centimetres square for a short URL at level M, assuming a normal phone camera at arm’s length. The real constraint is module size rather than overall size: aim for each module to be at least 0.4 millimetres. A longer payload needs a higher version, which means more modules, which means a larger print.
- Can I put a logo in the middle?
- Yes, if you encode at level H and keep the covered area under roughly 30% of the symbol. Always test the result with more than one scanner app before printing, since coverage that works on one decoder can fail on another.
- Does the code expire or need a subscription?
- No. The code produced here encodes your text directly, so it works forever and involves no third party. Services that offer editable or trackable codes encode a link to their own domain instead, which means the code stops working if that service disappears or the account lapses.
- Why is the border necessary?
- The specification requires four modules of light space on every side. A scanner uses that border to locate the symbol edge; without it the finder patterns are ambiguous against surrounding artwork. Both the SVG and PNG exports include it, so the practical advice is not to crop them.
Tool and article by Mustafa Kürşad Başer, Senior Software Engineer. Published: August 2026.