Why a QR code fails in public
A QR code is the one graphic you cannot proof by eye. Two codes look identical as patterns of squares, and the only difference that matters — whether a phone reads it, and what it reads — is invisible until someone stands at your counter and tries.
Most generators render the picture and stop. If the contrast between your brand colours is too low, or the margin got cropped in a design tool, the failure surfaces weeks later on a printed table stand, where the reprint costs real money and the lost scans cost more.
This tool closes the loop. After every change it decodes its own output with a separate scanning library and compares the result, character by character, with what you typed. The tick you see is not decoration — it is a completed scan.
Error correction is a trade, not a setting
QR codes carry redundancy so a damaged code still reads. Level L survives about 7 percent damage, M about 15, Q about 25 and H about 30 — but each step up adds modules, and a denser code needs to be printed larger to scan at the same distance.
For a payment sticker that will live on a shop counter, collecting scratches and sun, Q or H is the sensible choice. For a code on a slide that will be photographed from the back row, a sparser M at a larger print size scans better than a dense H.
The UPI case deserves a sentence of its own. A upi:// string encodes your account and the amount; one wrong character misroutes a payment. That is exactly why the byte-for-byte check exists — reading the pattern yourself was never an option.
What the checker will and will not catch
The scan-check proves the code decodes to your exact text under clean conditions: full contrast capture, no glare, no crumpled paper. That covers the failures generators actually cause — bad colour pairs, clipped margins, text too long for the chosen size.
It cannot promise every phone in every light will read a code printed at any size. Print small codes at three centimetres or more, keep the quiet zone around the code clear, and avoid placing it across a fold.
And it checks delivery, not destination. The tool confirms the code says what you typed; whether the link itself is correct, live and pointing where you intend is still your part of the job.