A QR code is not just “text drawn as squares.” The encoder chooses a mode/version, adds error-correction codewords, arranges modules under positioning/timing rules, masks the matrix, and writes format/version information. Increasing error correction improves recovery from damaged modules but leaves less room for payload at a given size.
The four controls exposed by Z Tools
| Level | Common description | Trade-off |
|---|---|---|
| L | Lowest correction | More payload capacity |
| M | Medium | Balanced default for many cases |
| Q | Quartile | More recovery, less capacity |
| H | Highest | Most recovery, least capacity |
The familiar “about 7/15/25/30%” descriptions are rough design targets, not a guarantee that you can cover exactly that percentage of a symbol and still scan. Damage location, version, mask, finder/timing obstruction, quiet zone, and scanner quality matter.
Payload presets are just structured text
Z Tools builds predictable payload strings: a URL/text payload is used directly; Wi-Fi uses the conventional WIFI: structure; email/phone use URI-style payloads; SMS uses SMSTO:number:message. The tool also shows payload characters and UTF-8 bytes so Unicode-heavy text is not mistaken for ASCII-sized data.
A reproducible manual check
- Open the QR tool and select Text.
- Enter the same 100-character ASCII payload.
- Generate it once at L and once at H.
- Keep pixel size constant and compare matrix density.
- Repeat with emoji/Chinese text and watch UTF-8 bytes grow faster than JavaScript character count.
This does not claim a universal maximum because the library can choose QR versions/modes internally; it demonstrates the real capacity/correction trade-off in the working encoder.
Why oversize errors are useful
An encoder should fail clearly when the selected payload/correction combination cannot fit rather than silently truncating data. Z Tools surfaces the library error with practical guidance to shorten the payload or reduce correction level.
Scanning from an image
The scanner loads a local image into browser canvas and uses the vendored decoder; it does not need to upload the image. Real-world scan reliability depends on focus, contrast, quiet zone, perspective, module size, and damage—not only error-correction level.
Primary reference
The normative QR specification is ISO/IEC 18004. For implementation work, use the specification/library documentation rather than assuming every QR app interprets non-URL custom payload conventions identically.