QR Code Generator
A QR code is a stack of separate mechanisms — an encoding, Reed-Solomon parity, an interleaving order, a placement path, a mask, and two coded headers — and any one of them can be wrong while the picture still looks exactly like a QR code. Drawing something square and black is not evidence of anything. So this reads its own finished grid back the way a scanner does, and shows you what came out.
What this generator does
Encodes your text, adds the error correction, lays it out along the placement path, tries all eight masks and keeps the tidiest, and draws the result with the quiet border scanners need.
How to use this tool
- Type or paste what the code should say — a link, some text, anything.
- Choose an error correction level: higher survives more damage but needs a bigger code.
- Draw it, and copy the image out.
- Keep the white border when you use it; scanners need that clear space.
Understanding the controls
- What should it say
- Any text. Longer text needs a bigger code; the version is chosen automatically as the smallest that fits.
- Error correction
- L through H, recovering roughly 7% to 30% of the code if it is damaged or partly covered. Higher correction leaves less room for text, so the code grows.
- Module size
- How many pixels each square is. Printing bigger is the single most reliable way to make a code scan.
Common use cases
- A code for a link on a poster, a menu or a label
- Sharing a Wi-Fi string or a phone number without typing it out
- Putting a link on printed material where nobody wants to type a URL
- Testing a scanner or a camera app with a code you control
- Seeing how the correction level changes the size of the code
How this generator works
The grid is read back from the modules alone: the format header is decoded, the mask undone, the codewords lifted off the placement path, de-interleaved, and the text parsed out again. The parity is then checked the way Reed-Solomon itself defines it — every syndrome of every block must come out zero, which is independent of the arithmetic that produced the parity. The three corner patterns and both timing lines are confirmed in the finished grid as well.
Randomness and fairness
Nothing is random. The same text and correction level always draw exactly the same code, mask and all.
For how randomness is produced across the whole site, see how Generate Random works.
Limitations and good to know
- Versions one to ten, which holds roughly 270 characters at the lowest correction level and fewer at higher ones.
- Byte mode only. The numeric and alphanumeric modes would pack digits and capitals more tightly.
- Black on white only, with no logo in the middle — a logo eats into the error correction and needs care this does not take.
- A code that is printed small, blurred or without its white border may not scan however correct the pattern is.
Privacy and your data
The code is drawn in your browser. Nothing you type is transmitted or stored.
Related generators
- EAN-13 Barcode GeneratorDraws a real EAN-13 barcode from a number, then reads the bars back the way a scanner would to prove it works.
- Damm Check Digit GeneratorAdds a check digit that catches every single mistyped digit and every swap of two neighbours, and proves it by trying them all.
- UUID GeneratorAn RFC 4122 v4 UUID for development or testing use — cryptographically random, not sequential.
- Plus Code ConverterTurns a latitude and longitude into an Open Location Code, and shows exactly which patch of ground it names.