QR codes look random. They're not. Every black-and-white square is encoded data, position marker, error correction, or version metadata. Here's a quick tour of what's in there.
The three big finder patterns
The three large squares in the corners (top-left, top-right, bottom-left) are finder patterns. They tell scanners "this is a QR code, here's how it's rotated."
Why three and not four? Because the missing fourth corner tells scanners which way is up. If all four corners had the pattern, scanners couldn't distinguish orientation.
Alignment patterns
In larger QR codes (version 2+), you'll see smaller "mini-eye" patterns scattered through the data area. These are alignment patterns — they help scanners correct for warping when the QR is printed on a curved surface or photographed at an angle.
Timing patterns
Look closely between the finder patterns. There's a line of alternating black/white squares connecting them. This is the timing pattern. It helps scanners calibrate how big each module (square) is — because a QR can be printed at any size from a postage stamp to a billboard.
Version
QR codes come in 40 versions, from version 1 (21×21 modules) to version 40 (177×177 modules). The version determines how much data the QR can hold. Encoding "https://onedollarqrcodes.com" needs version 2 or 3. Encoding "the complete works of Shakespeare" would need version 40+ (and even then probably wouldn't fit).
Error correction levels
QR codes have four built-in error correction levels:
- L (Low) — recovers from ~7% damage
- M (Medium) — ~15%
- Q (Quartile) — ~25%
- H (High) — ~30%
This is what lets you put a logo in the middle of a QR — the missing data is reconstructed via Reed-Solomon error correction. The catch: higher error correction means lower data capacity, so it's a tradeoff.
Encoding modes
QR codes support four encoding modes:
- Numeric: digits only. Densest. ~7,000 digits possible at version 40 L.
- Alphanumeric: capital letters, digits, $, %, *, +, -, ., /, :, space. ~4,000 chars.
- Byte mode: any 8-bit data. About half as dense.
- Kanji: Japanese characters, denser than byte mode for Japanese text.
Most URL QRs use byte mode. The "wasted" capacity of byte mode is part of why long URLs make QR codes denser-looking.
Why our QRs all look similar density
OneDollarQRcodes uses short links like onedollarqrcodes.com/r/abc123. That's ~30 characters — fits in version 2 or 3, encoded as byte. So every QR we generate is about the same density and the same physical size requirement at the same print size. Predictable.