What's actually encoded in the grid
A QR (Quick Response) code is a 2D barcode: a square grid of black and white modules encoding data using the Reed-Solomon error-correction scheme, standardized as ISO/IEC 18004. Unlike a 1D barcode (which only encodes data along one axis), a QR code uses both dimensions, letting it pack far more data — a QR code can hold up to about 4,296 alphanumeric characters or 7,089 numeric digits, versus a few dozen characters for a typical linear barcode. The three large squares in three corners are finder patterns, letting a scanner detect the code's position and orientation instantly, from almost any angle or rotation.
Error correction: the feature that makes logos possible
QR codes bake in redundancy via Reed-Solomon error correction, offered at four levels:
| Level | Recoverable damage | Typical use |
|---|---|---|
| L (Low) | ~7% | Maximum data capacity, clean environments |
| M (Medium) | ~15% | Default for most generators |
| Q (Quartile) | ~25% | Printed materials, some wear expected |
| H (High) | ~30% | Codes with a logo overlay, industrial/outdoor use |
This is why a logo placed in the center of a QR code doesn't break the scan: at error-correction level H, up to 30% of the code's modules can be damaged, obscured, or replaced (including by a logo) and the underlying data still reconstructs correctly. The tradeoff is data capacity — higher error correction means less of the grid is available for actual payload data, so a heavily logo-covered, high-error-correction code needs a larger grid (more modules) to hold the same amount of data as a plain one.
Version and size
QR codes come in "versions" from 1 (21×21 modules) to 40 (177×177 modules) — larger versions hold more data at the cost of a denser, harder-to-scan-from-a-distance grid. Most generators pick the smallest version that fits the requested data at the chosen error-correction level automatically; manually forcing a small version with too much data will fail to encode at all.
What's inside the data, and what "just works" on phones
Modern phone cameras don't just decode raw QR data — they interpret common structured formats automatically:
- URL (
https://...) — opens directly in the browser. WIFI:S:<ssid>;T:<type>;P:<password>;;— offers to join the network directly.mailto:/tel:/sms:— opens the relevant app pre-filled.BEGIN:VCARD...END:VCARD— offers to save a contact.
Anything outside these recognized formats is just displayed as plain text — the QR code itself has no concept of "this is a Wi-Fi network," it's the scanning app that recognizes the string pattern and offers a shortcut action.
Common mistakes
- Choosing low error correction for a code that will be printed small or on uneven surfaces. Any smudging, folding, or low-contrast printing eats into the recoverable margin; Q or H levels are worth the capacity tradeoff for anything physical.
- Overloading a code with a huge URL when a shortener would do. Longer data forces a higher version (denser grid), which scans less reliably from a distance or with a low-quality camera.
- Testing only on one phone. Contrast, lighting, and camera quality vary significantly across devices — a code that scans instantly on a flagship phone under good lighting may struggle on a budget device or a dim environment.
- Assuming static QR content can be updated later. A standard QR code encodes fixed data permanently; "dynamic" QR codes that can be updated after printing actually redirect through a URL you control — the QR grid itself never changes.
FAQ
Why doesn't putting a logo in the middle break the scan?
Because QR codes use Reed-Solomon error correction — at the "High" level, up to ~30% of the grid can be damaged or obscured and the data still decodes correctly, as long as the logo doesn't cover more than that margin or block the finder patterns in the corners.
What's the maximum amount of data a QR code can hold?
Up to roughly 4,296 alphanumeric characters or 7,089 numeric digits at the largest version (40) and lowest error correction — real-world codes almost always encode far less, usually a URL.
Can a damaged or partially torn QR code still scan?
Yes, up to the error-correction level's recoverable threshold — beyond that (e.g., losing an entire finder pattern corner), the code becomes unreadable.
Do all QR codes open automatically on a phone camera?
Only for formats the scanning app recognizes (URLs, Wi-Fi credentials, contact cards, etc.) — anything else just displays as plain decoded text.
Generate a QR code with a custom logo and error-correction level using the QR Code Generator — everything is created locally in your browser.