// Pre-Print QA

Will your QR code actually scan?

Paste a link (or upload a code), and get a Print-ready / Needs attention / High risk verdict — a simulated check against blur, low light, glare, low contrast, small sizing, compression, corner damage, and 7 other real-world conditions. Then download a one-page PDF report for your print shop.

14Conditions
PDFReport
100%In Your Browser
0Account Needed
Drop a QR code image, or click to browse
PNG, JPG, WebP or SVG ·

The image is read in your browser and never uploaded.

0 codes

Up to 100 codes per run. All rendering and checking happens in your browser.

Starting…
// How It Works

Enter → Check → Hand off the report

01

Enter the content or upload the code

A link, some text, or an image of an existing QR code. Pick the error-correction level you plan to print at.

02

Run the simulated check

The code is decoded, then put through 14 degradations — blur, glare, low light, low contrast, downscaling, JPEG compression, corner damage and more.

03

Read the verdict, download the PDF

A clear verdict with specific fixes, plus a one-page PDF report you can attach to a print order.

QuickQRC
Technical Brief · No. 0005

What the QR code validator checks before you print

The QR code validator is a pre-print QA step: it renders your code, decodes it, then re-decodes it after each of 14 simulated real-world conditions and returns a Print-ready, Needs attention, or High risk verdict with a one-page PDF report. Run it on the final link or artwork before a job goes to press.

Nothing leaves your browser. Rendering, decoding, the stress simulation, and the PDF are all done on your device; no link, image, or result is uploaded.

The 14 conditions

Each condition is applied at two to four rising severities, and the code is decoded again after every one. They fall into three groups, plus a combined test.

GroupConditions
Camera & OpticsOut-of-focus blur, motion blur (camera shake), low light, glare, screen moiré (photographing a code off another screen)
Print & ReproductionLow contrast, downscaling to 500 / 250 / 150 / 100 px, JPEG compression, print noise and uneven inking, surface curvature (a bottle or cup)
Placement & DesignRotation and perspective tilt, a central logo or sticker, corner (finder-pattern) damage to one or two corners
Combined ScenariosA "real-world combo" that stacks mild blur, reduced contrast, a slight tilt, and compression, in good / typical / poor versions

The combined test is the one to watch, because real scans often go wrong through several small problems at once: a code printed slightly too small, a slightly dirty lens, and light that is a little too dim.

How the verdict is decided

Every condition earns a badge: Pass (decoded at all severities), Weak (decoded at the mild levels, failed a harder one), or Fail (failed at the mildest level). The validator also grades the quiet zone, the blank margin, as Adequate (4 or more modules), Tight (2 to 4), or Missing (under 2). The overall verdict follows fixed rules:

VerdictSet when
High riskThe code can't be decoded at all, or the quiet zone is Missing, or the combined test fails twice, or four or more conditions Fail, or the simulation score is under 45%
Needs attentionThe quiet zone is Tight, or at least one condition Fails, or four or more are Weak, or the simulation score is under 68%
Print-readyNone of the above: the code decoded cleanly and held up across the suite

One practical consequence: a couple of Weak badges on an otherwise-clean, comfortably-sized code still reads as Print-ready. The verdict reacts to patterns of weakness, not a single soft spot.

What the simulation score means

The percentage under the verdict is the share of individual decode attempts that succeeded: the baseline decode, 42 stressed decodes, and the quiet-zone check, 44 in total. It's a quick summary, not a prediction of how any one phone or printer will behave. The per-condition badges and the fixes list are the real output.

Example: when raising error correction makes a code worse

A common instinct is to set error correction to H "to be safe". Consider this hypothetical walkthrough; its values illustrate how to read a report, not a measured benchmark. You paste a long campaign URL, roughly 180 characters once every tracking tag is on it, into the Check by content tab and choose H, 30% recovery (best for logos / rough surfaces), then press Validate.

https://riverside-cafe.example/autumn-menu-launch?utm_source=table-tent&utm_medium=qr&utm_campaign=fall-menu-2026&utm_content=window-seats&utm_term=oat-milk-latte

Inspect Code details and record the actual module count, then read the per-condition results. Level H adds error-correction codewords; the approximate 30% restoration figure does not mean that 30% of the image can be covered arbitrarily.

For comparison, try a shorter URL you control and run the same settings again. Record whether the version and stressed decode results change. A shorter payload may improve module size at a fixed print width, but it introduces a maintained redirect if you use one. Do not assume every condition will pass.

Test the error-correction level and logo that will actually be printed. Export the report as evidence of the software checks, then test a physical proof on the intended surface and scanners. The report is not print certification.

Reading the code details panel

FieldWhat it tells you
Encoded contentThe text the code actually decoded to. Check it matches what you intended, character for character.
Error correctionThe level you chose on the content tab. Uploaded images show a placeholder dash because the level can't be read back from a finished code.
Matrix / VersionThe grid size. More encoded data means a higher version and a denser grid, so each module is smaller at the same print size; the root cause of most blur and downscaling failures.
Quiet zoneAdequate, Tight, or Missing. Only meaningful for uploaded images; codes rendered from a pasted link are given a wide margin automatically.

If the verdict isn't Print-ready, the fastest levers are almost always the same two: make the code physically bigger or encode less, and raise contrast and the error-correction level to match the surface. A shorter destination through a redirect does both at once; it shrinks the matrix and frees up room. How QR error-correction levels work covers the L/M/Q/H trade-off in detail.

Who uses this

  • Designers handing off artwork: validate the final link before sending files to a client or printer, and attach the PDF so nobody has to re-argue whether the code "looks fine".
  • Restaurants and cafés: menu and Wi-Fi codes get printed small on table tents and window decals; exactly the size where a long URL stops scanning.
  • Product and packaging teams: paste a whole catalog of product-page links into the Batch tab (up to 100 at once) and get one table showing which items are safe to print.
  • Events: check a sheet of ticket or badge codes in a single batch run before the print deadline.
  • Anyone reprinting an existing code: use the Check an image tab to test a code you no longer have the source file for.

Validator vs. scannability tester

Both run on the same simulation engine, for different jobs.

 QR Code ValidatorQR Scannability & Stress Tester
Built forA fast go / no-go verdict and a shareable PDFExploring one code in depth
Batch modeYes, up to 100 linksNo
Adjust each condition's severityNo: fixed levelsYes
See the stressed imageNoYes, side by side
OutputVerdict, PDF report, CSV (batch)Interactive per-condition results

Use the validator to decide whether to print. Switch to the Scannability Tester when a code is borderline and you want to see exactly where it breaks. To check foreground and background colors on their own, use the Contrast Checker.

Tips, limits, and common mistakes

  • It's a simulation, not a guarantee. The stress conditions approximate blur, glare, compression and the rest; a useful early warning, not a substitute for scanning a physical proof.
  • Test at the size and level you'll actually print. A code that's Print-ready at error correction M might still need H once a logo goes in the middle. Set the dropdown to match your real plan.
  • Upload the production file, not the design mockup. On the Check an image tab, test the exact PNG or SVG that goes to print. A screenshot or a re-exported JPEG has already lost detail the check can't recover.
  • The quiet-zone reading only applies to uploads. Codes generated from a pasted link get a wide margin automatically, so that row will nearly always say Adequate; it is describing the test image, not your artwork.
  • Batch mode runs a lighter check. To keep 100 codes fast, each one is tested against five representative conditions rather than the full 14. Anything the batch flags, or anything borderline, deserves a full single-code run.
  • One stray failure isn't a crisis. The decoder isn't perfect. A single Weak among otherwise-clean results, on a code that is a comfortable size, is usually noise; a pattern of failures is not.

Still print one proof

A Print-ready verdict is a green light to proceed, not a reason to skip the physical proof. Print one copy at final size on the real stock and scan it with two different phones before committing to the full run.

// FAQ

Frequently Asked Questions

No. The check renders your code, decodes it, and simulates 14 common real-world conditions with a client-side decoder, all in your browser. It is a strong early-warning QA step, not a certification, and it cannot predict every phone, printer, or lighting situation.

No. Rendering the code, decoding it, running the simulation, and building the PDF report all happen locally in your browser. No link, image, or result is ever sent to a server.

This validator is built for a fast yes/no answer and a shareable PDF report, and it can check a batch of up to 100 links at once. The Scannability Tester is an interactive playground for a single code, where you tune each condition's severity and see the stressed image side by side.

Test at the level you will actually print at. M (15%) is the common default. Choose Q or H if the code will carry a center logo, be printed small, or land on a rough or curved surface, because the extra redundancy is what lets a scanner rebuild damaged modules.

Both are really the same problem: not enough pixels per module. Shorten the encoded link with a redirect, raise the printed size, or lower the amount of data, then re-check. The PDF report lists the specific fix for every condition that failed.

Yes, that is what the one-page PDF is for. It shows the verdict, the per-condition results, the tested content and error-correction level, and the recommended fixes, so a printer can see exactly what was checked.

Screens are backlit, high-contrast, and pixel-perfect; print is not. Ink spread, low paper contrast, small sizing, and glare each cost you modules that were fine on a monitor. The validator's Print and Reproduction tests simulate these effects so you catch them before the run.

There is no single rule, but a common guideline is at least 2 x 2 cm (0.8 in) for codes scanned up close, and about a tenth of the scanning distance for signage, for example around 30 cm wide for a viewing distance of 3 m. The validator's Downscaling test is a faster proxy: a code that still decodes at 150 px has room to shrink.