QR Code Generator
Turn a link or any text into a QR code, as PNG or SVG.
Text or URL
Result
Your converted file will appear here.
About the QR Code Generator converter
A QR code stores its data directly in the pattern of squares. Point a camera at it and the reader gets exactly what was encoded — no lookup, no server, no middleman.
That matters more than it sounds. Many free generators encode a link to their own domain that redirects to yours, so they can count the scans. If that service disappears or starts charging, every code you printed stops working. This one encodes your data itself, so the code keeps working forever.
PNG or SVG
PNG is a fixed grid of pixels and is what most tools and websites expect. Choose a size comfortably larger than the final print — the module size is rounded to whole pixels so nothing blurs.
SVG is vector and scales to any size without losing a thing, which makes it the right choice for print: a poster, a business card, a sign. The file is also usually far smaller, and you can paste the markup straight into a page.
Error correction, and why it matters
QR codes carry redundant data so they still read when partly obscured. Level L recovers about 7% of the code, M about 15%, Q 25% and H 30%.
Higher levels mean more modules, so the pattern becomes denser and each square smaller at the same physical size. M is the right default. Go to Q or H only if the code will be printed on something that gets handled, curved or dirty, or if you plan to place a logo over the centre.
Printing at a size that actually scans
The usual rule is that the code should be at least a tenth of the distance it will be scanned from — roughly 3 cm across for a phone held at 30 cm, and much larger for a poster read from across a room.
Keep the module size at or above about 0.4 mm when printing. Below that, ink spread starts merging adjacent squares and the code becomes unreliable no matter how good the source file was.
Colour and contrast
Scanners read brightness, not hue. Keep the foreground much darker than the background and almost any colour pair works; use two mid-tones and it will fail regardless of how different they look to you.
Never invert a code — light modules on a dark background breaks many readers, which assume dark-on-light. If you want a dark aesthetic, put a normal code inside a light panel.
How much fits
Up to roughly 2,900 bytes at level L, less at stronger levels. In practice a URL is a few dozen characters, so you will not come close — and shorter data means a less dense code that scans from further away.
Digits are stored more compactly than letters, and plain uppercase text more compactly than mixed case, so the encoder picks the tightest mode your content allows automatically.
Frequently asked questions
Will the code stop working later?
No. The data is encoded directly into the pattern, so there is no short link and nothing to expire. Codes from services that route through their own domain stop working when that service does.
Can I put a logo in the middle?
Yes, if you use error-correction level H and keep the logo under about 20% of the area, centred. Test the result with more than one phone before printing a run — this genuinely does break codes.
Why is there a blank border I cannot remove?
That is the quiet zone, and the specification requires four modules of it. Scanners use it to find where the code stops. You can reduce it here, but codes with a thin border fail noticeably more often in the wild.
Can I track how many people scan it?
Not with a code like this, because there is no intermediary to count. If you need scan counts, encode a URL you control and measure it at your own end.
Is my data sent anywhere?
No. The code is generated in your browser — there is no API call, so the URL, password or contact details you encode never leave your device. Many QR generators log exactly this, and some redirect through their own domain.