Barcode Tools
QR Code Generator
Generate QR codes for URLs, text, Wi-Fi, and vCards, with four error correction levels and SVG or PNG download.
Understand the format
How QR Code Generator works
A QR code is a matrix of modules with Reed-Solomon error correction built in, which is why one still scans when part of it is dirty, torn, or covered by a logo.
What the fixed patterns are for
The three large squares in the corners are finder patterns; a decoder locates them first to establish position and rotation, which is why a QR code scans at any angle. The dotted lines between them are timing patterns that fix the module grid, and larger versions add smaller alignment patterns so the grid can be resolved when the surface is curved or the photo is taken off-axis.
Around all of that sits a four-module quiet zone. It is part of the specification, not decoration, and cropping it is the most common reason a QR code that looked fine in artwork fails once printed.
Error correction is a real trade-off
Reed-Solomon coding over GF(256) lets a decoder rebuild missing codewords: level L recovers roughly 7% of the symbol, M about 15%, Q about 25%, and H about 30%. That redundancy is what allows a logo to sit over the middle of a code, and what keeps a scuffed label readable.
The cost is space. Raising the level for the same data means a larger version, so more modules in the same printed area, so each module is smaller and harder to resolve. M is the usual default. Reach for Q or H only when the code will be small, printed on something that gets handled, or partially covered.
Versions, modes, and capacity
A QR code has 40 versions, from 21x21 modules up to 177x177, and this page picks the smallest that fits your data at the chosen error correction level. It also picks the encoding mode: numeric packs three digits into ten bits, alphanumeric packs two characters into eleven, and byte mode encodes UTF-8 at eight bits per byte. Using only digits or only uppercase letters, digits, and a few symbols therefore yields a noticeably smaller symbol.
That is worth knowing when encoding URLs. An uppercase host in a shortened link can stay in alphanumeric mode, while mixed-case query strings force byte mode. Shorter data means a lower version, larger modules, and a more reliable scan.
Masking, and why two codes for the same text differ
After the data and error correction bits are placed, the encoder applies one of eight mask patterns, scores each result against four penalty rules from the specification, and keeps the lowest. The rules punish large blocks of one colour, long runs, and anything resembling a finder pattern, all of which confuse decoders.
The chosen mask is recorded in the format information beside the finder patterns, so a decoder can reverse it. It also explains why two generators can produce visibly different codes for the same text: both are valid, they simply scored the masks differently.
Step by step
How to use QR Code Generator
- Type or paste the text, URL, or structured payload you want to encode.
- Pick the error correction level: M for general use, Q or H if the code will be small or partly obscured.
- Check the reported version and mode; shortening the data lowers the version and makes each module larger.
- Set the module size for the output you need, then download SVG for print or PNG for screens.
- Scan the result with a real phone camera before publishing it.
The QR code is encoded and drawn in your browser, with no request to any service. That matters here more than for most tools: Wi-Fi passwords and internal links are common QR payloads, and they stay on your device.
Troubleshooting
Common mistakes and how to fix them
- A logo placed over the centre stops the code scanning.
- Use level H and keep the covered area under about a quarter of the symbol. Never cover a finder pattern in a corner.
- Inverting the colours so light modules sit on a dark background.
- Many decoders expect dark on light. If the design demands inversion, test it on several devices before printing.
- Encoding a long URL with tracking parameters.
- Every character raises the version and shrinks the modules. Shorten the link, then encode it.
- Trusting a QR code found in the wild.
- A code is just a link. Read the decoded URL before opening it, since a sticker over a legitimate code is a common attack.