Skip to content
Security Tool

QR Offline Verifier

Verify a QR payload without any network request: format checks, length, encoding, a real QR symbol build that reports the version and module count, and a scannability self-test checklist. Everything runs in your browser.

1. Enter the payload

Example: https://example.com/welcome

L tolerates the least damage; H tolerates the most but makes a denser code.

2. Scannability self-test checklist

0 of 8 checks done.

Verification result

0 of 1 automated checks pass.

Payload is present

Enter a payload to verify it.

These checks run entirely offline. They verify the payload, not the printed code — finish the self-test checklist for the physical half of the job.

What offline verification can and cannot prove

Offline verification answers a narrow but important question: is this payload well-formed and encodable? A payload with a typo, a stray control character, or a length that exceeds the symbol's capacity will fail here before it fails in front of a customer. The symbol build on this page is a real one — it constructs the QR matrix and reports the version and module count — so a payload that cannot be encoded at your chosen error-correction level is caught honestly, in your browser, with no network involved.

Density is the finding most people overlook. A short URL encodes as a low-version symbol with large, forgiving modules. A long URL with tracking parameters encodes as a dense grid of small modules that demand a larger print size and a better camera. When the verifier reports a high version number, treat it as a design instruction: either shorten the payload — a short redirect you control is the usual fix — or print the code larger and test it on the weakest phone your audience uses. Density is not a defect, but it raises the price of every other mistake.

Encoding pitfalls are subtler. Plain ASCII text is the safest payload: every scanner handles it. Non-ASCII characters — accented letters, emoji, non-Latin scripts — encode as UTF-8 bytes and lengthen the payload, and some older scanners handle them poorly. Test non-ASCII payloads on real devices before printing. Leading and trailing whitespace is another quiet failure: some scanners trim it, some preserve it, and a URL with a trailing space can break in ways that are invisible on the printed page. Trim payloads, and compare the decoded text against the intended text character by character.

Error-correction level is a trade-off, not a quality score. Level L produces the least dense symbol for a given payload, which scans most easily on a clean print. Level H tolerates the most damage — scuffs, lamination, a logo in the centre — but makes the symbol denser. Match the level to the environment: clean indoor print gets M, rough handling and textured stock get Q or H, and anything with a logo overlay needs H plus a larger print size and a physical test.

None of this proves the printed code scans, which is why the self-test checklist exists. Print at the real size, with the real margin, on the real stock, and scan it at the real distance in the real light with the worst phone you can find. Check it after lamination, after mounting behind glass, and from a slight angle. A payload can be perfect and a printed code can still fail — verification is two halves, and the physical half is the one most teams skip.

Frequently Asked Questions About QR Offline Verification

Does passing these offline checks guarantee the code will scan?

No. Offline checks catch encoding mistakes — empty payloads, illegal characters, excessive length, and damaged structure. Real scannability also depends on print size, contrast, lighting, and camera quality, which is why the self-test checklist on this page matters as much as the automated checks.

Which error-correction level should I use?

Level M suits most clean print work. Level Q or H suits codes that will be handled roughly, printed on textured stock, or covered with a logo, because they tolerate more damage. Higher levels make the code denser, so a very long payload at level H may need a larger print size.

Why does a long URL make a QR code harder to scan?

More characters mean more modules — the small squares in the grid. More modules at the same print size means smaller squares, which are harder for cameras to resolve. Shortening the URL, or linking through a short redirect you control, reduces density and improves scanning.

What is the white margin around a QR code for?

It is the quiet zone, and scanners use it to find the edges of the code. The quiet zone must be at least four modules wide on every side. Cropping it, or letting text or graphics touch the finder squares, is one of the most common causes of scan failure.