How QR Codes Work
QR codes went from novelty to everywhere — menus, posters, payments, WiFi sharing, packaging. The odd thing is how few people know what those black-and-white squares actually contain. The good news: the idea is simple, and understanding it helps you make codes that scan reliably every time.
What a QR code stores
A QR (“Quick Response”) code is just a way of drawing data as a 2D grid. Where a normal barcode stores a line of digits, a QR code encodes text in two dimensions, which lets it hold far more — a URL, a phone number, WiFi credentials, a paragraph of text, or a payment string.
Scanning does not “look up” anything by default. The data is baked directly into the pattern. When your camera reads https://example.com, that exact text was drawn into the squares — there is no server in the middle unless the link itself points to one.
The parts of the pattern
- Finder patterns — the three big squares in the corners. They let a scanner locate and orient the code from any angle.
- Timing & alignment — thin lines and smaller squares that keep the grid aligned, even if the code is slightly warped or photographed at a tilt.
- Quiet zone — the empty margin around the code. Remove it and many scanners fail, so never crop a QR code tight to its edge.
- Data & error-correction area — everything else, where your content and its recovery information live.
Error correction: why a code still scans with a logo on it
QR codes use Reed–Solomon error correction, the same family of math that protects CDs and satellite transmissions. It adds redundant data so the code can be read even when part of it is missing or damaged. There are four levels:
- L — recovers ~7% of data
- M — ~15% (a good default)
- Q — ~25%
- H — ~30%
This is the secret behind logos in the middle of a QR code: at level H, up to ~30% of the pattern can be covered and the code still resolves. The trade-off is density — higher correction packs more modules into the same space, so tiny printed codes can become harder to scan. Use M for screens and general use, and H when printing small or adding a logo.
Static vs dynamic QR codes
This distinction matters more than any other, and marketers often blur it.
A static QR code contains the final data itself. Encode a link and the link is in the pattern forever. It never expires, needs no account, and works offline — but you cannot change where it points after printing.
A dynamic QR code contains a short redirect URL owned by a service. Scanning hits their server, which forwards you to the real destination — which they can change later, and whose scans they can track. The catch: if that service shuts down or you stop paying, every printed code breaks. For a poster, business card, or WiFi code, static is usually the safer choice. Our QR Code Generator makes static codes, so they keep working with no strings attached.
The WiFi QR code trick
One of the most useful codes encodes a special text format that phones recognize as network credentials:
WIFI:T:WPA;S:NetworkName;P:password;;
Scan it and the phone offers to join the network — no reading a 20-character password off a router label. It is perfect for cafés, offices and guest rooms. Because the password is stored in plain text inside the code, only share it where you would share the password anyway.
Why a QR code sometimes won't scan
- Not enough contrast. Dark-on-light scans best. Light code on a dark background, or two similar colors, confuses scanners. Keep the foreground darker than the background.
- No quiet zone. The code needs empty margin around it. Text or images touching the edge break it.
- Too small or low resolution. A blurry or tiny print loses fine detail. Print larger, or download an SVG, which stays sharp at any size.
- Inverted colors. A few scanners struggle with light-on-dark codes even at high contrast. When in doubt, go classic dark-on-white.
- Over-styling. Heavy gradients, rounded modules and big logos can push a code past what error correction can recover. Test before you print a thousand of them.
Best practices for codes that always work
- Keep strong dark-on-light contrast.
- Leave the quiet-zone margin intact.
- Use error-correction level H if you add a logo or print small.
- Download SVG for print, PNG for screens.
- Always test with two or three different phones before publishing.
Make a QR code now
Try the free QR Code Generator to create codes for a URL, plain text, WiFi, email or phone — with custom colors, adjustable error correction, and PNG or SVG download. Everything runs in your browser, so nothing you encode is ever uploaded. If your code points to a link, it is worth tidying that URL first with the URL Encoder.