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

LevelCommon descriptionTrade-off
LLowest correctionMore payload capacity
MMediumBalanced default for many cases
QQuartileMore recovery, less capacity
HHighestMost 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

  1. Open the QR tool and select Text.
  2. Enter the same 100-character ASCII payload.
  3. Generate it once at L and once at H.
  4. Keep pixel size constant and compare matrix density.
  5. 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.