Skip to content
qrcodegenerator.in
WORKS ON ANY QR CODE, FROM ANY GENERATOR

QR code scanability checker

Upload a QR code and get the full 18-point report: what will fail, at what size, and the specific fix for each problem. Free, no account.

Add your code

Drop a QR code image here

PNG, JPG, SVG or PDF · up to 10MB · your file is analysed and discarded, never stored

Or try one of these

A pale grey code with a cropped quiet zone — the single most common reason a printed code fails in the wild.

Your report
Scanability scoreNot scored

The checks below are measured. The score they roll up to waits on the print-and-scan calibration study.

This code fails on contrast and quiet zone. Do not send it to print — the fixes below are all cheap and none change the encoded payload.

  • Contrast1.7:1
    fail

    Darken the foreground to at least #333333 on white. Below 4:1 the decoder cannot separate modules under real lighting.

    The luminance ratio between dark and light modules. Below about 4:1 a camera cannot reliably separate them under indoor lighting, whatever the colours look like on screen. This is the single most common cause of a code that "worked on my monitor" and fails on paper.

  • Quiet zone1 module
    fail

    Add three more modules of clear white margin on all four sides. The spec requires four; anything less and adjacent artwork bleeds into the finder patterns.

    The clear margin around the symbol. The spec requires four modules. Designers routinely crop it to nothing to fit a layout, which stops the decoder locating the finder patterns — the code becomes invisible rather than merely hard to read.

  • Logo obstructionnone
    pass

    Reduce the logo to 18% of the code area, or switch on excavate mode so modules are cleared rather than covered.

    A centred logo destroys modules, and error correction repairs them. EC-M tolerates roughly 15% damage, EC-H about 30% — but that budget is meant for wear, dirt and glare, not for your logo. We report obstruction as a percentage of code area and warn when it eats the margin reserved for the real world.

  • Polaritycorrect
    pass

    Modules must be darker than the background. An inverted code — light on dark — is read by some decoders and rejected by many, especially older Android cameras. We also flag colour pairs whose greyscale conversion collapses to near-identical values.

  • Saturation / greyscalesafe
    pass

    Modules must be darker than the background. An inverted code — light on dark — is read by some decoders and rejected by many, especially older Android cameras. We also flag colour pairs whose greyscale conversion collapses to near-identical values.

  • Gradient endpointsn/a
    pass

    Rounded and dot styles shrink each module, effectively reducing size and contrast at the edges. Gradients are checked at both endpoints, because a gradient that starts dark and ends pale fails only on one side of the code — which is exactly the kind of defect a visual review misses.

  • Background complexityflat
    pass
  • Transparent backgroundnone
    pass
  • Dot-style connectivitysquare
    pass

    Rounded and dot styles shrink each module, effectively reducing size and contrast at the edges. Gradients are checked at both endpoints, because a gradient that starts dark and ends pale fails only on one side of the code — which is exactly the kind of defect a visual review misses.

  • Aspect distortionnone
    pass
  • EC headroom6.8%
    none

    Raise error correction from L to M. At 38% obstruction even EC-H would struggle, so fix the logo first.

    A centred logo destroys modules, and error correction repairs them. EC-M tolerates roughly 15% damage, EC-H about 30% — but that budget is meant for wear, dirt and glare, not for your logo. We report obstruction as a percentage of code area and warn when it eats the margin reserved for the real world.

  • Module size at 25mm0.68mm
    none

    Print at 34mm or larger, or shorten the payload so the code drops to a lower version with bigger modules.

    Divide the printed width by the number of modules. Below about 0.4mm per module, consumer cameras fail at arm’s length. This is what turns "version 4" into a concrete minimum size in millimetres, and it is why payload length is a print decision rather than a technical detail.

  • Finder integritynot calibrated
    none

    The three corner squares, the small alignment squares and the dotted rows between them are how a decoder orients and samples the grid. Artistic styling that softens or recolours them causes total failure, not degradation — so these checks are pass/fail rather than scored.

  • Alignment integritynot calibrated
    none

    The three corner squares, the small alignment squares and the dotted rows between them are how a decoder orients and samples the grid. Artistic styling that softens or recolours them causes total failure, not degradation — so these checks are pass/fail rather than scored.

  • Timing integritynot calibrated
    none

    The three corner squares, the small alignment squares and the dotted rows between them are how a decoder orients and samples the grid. Artistic styling that softens or recolours them causes total failure, not degradation — so these checks are pass/fail rather than scored.

  • Payload efficiency39 chars
    none

    A 39-character URL forces version 4. A short link would fit version 2 and print 40% smaller.

    Divide the printed width by the number of modules. Below about 0.4mm per module, consumer cameras fail at arm’s length. This is what turns "version 4" into a concrete minimum size in millimetres, and it is why payload length is a print decision rather than a technical detail.

  • Print bleed safetynot calibrated
    none

    Ink spreads on absorbent stock, thickening dark modules and closing the gaps between them. Converting RGB to CMYK also shifts colours, often darkening them. Both are predictable, and both are checked before you commit to a run.

  • CMYK shift risknot calibrated
    none

    Ink spreads on absorbent stock, thickening dark modules and closing the gaps between them. Converting RGB to CMYK also shifts colours, often darkening them. Both are predictable, and both are checked before you commit to a run.

512384256192128blurrot20skew15dark30light40jpeg40noise8worst
Minimum print size
34 × 34 mm, after fixes
Decoded payload
https://example.com/summer-sale-2026-lp
Symbol
v4 · 33×33 · EC-L · mask 2
Engine version
scan-engine 2026.08.1
HOW THE THRESHOLDS WERE SET

How the thresholds will be set

The method is fixed and the results are not in. Nothing on this page is fitted to measured failure rates yet, which is why no score appears above.

codes generated across the EC × version × colour × logo × style matrix
not yet measured
independent decoders — ZXing, ZBar, OpenCV WeChat and a commercial SDK
not yet measured
stratified samples physically printed and scanned
not yet measured
accuracy of predicted vs measured minimum print size
not yet measured

Printed at 15, 20, 25 and 40mm on matte and glossy stock, scanned with two iPhone generations, a Pixel, a Samsung, a low-end Android and a desktop webcam, under three lighting conditions. Predicted minimum print size lands within ±15% of the measured failure threshold.

THE 18 CHECKS

What each check actually measures

Contrast

The luminance ratio between dark and light modules. Below about 4:1 a camera cannot reliably separate them under indoor lighting, whatever the colours look like on screen. This is the single most common cause of a code that "worked on my monitor" and fails on paper.

Quiet zone

The clear margin around the symbol. The spec requires four modules. Designers routinely crop it to nothing to fit a layout, which stops the decoder locating the finder patterns — the code becomes invisible rather than merely hard to read.

Logo obstruction and EC headroom

A centred logo destroys modules, and error correction repairs them. EC-M tolerates roughly 15% damage, EC-H about 30% — but that budget is meant for wear, dirt and glare, not for your logo. We report obstruction as a percentage of code area and warn when it eats the margin reserved for the real world.

Module size versus print size

Divide the printed width by the number of modules. Below about 0.4mm per module, consumer cameras fail at arm’s length. This is what turns "version 4" into a concrete minimum size in millimetres, and it is why payload length is a print decision rather than a technical detail.

Finder, alignment and timing integrity

The three corner squares, the small alignment squares and the dotted rows between them are how a decoder orients and samples the grid. Artistic styling that softens or recolours them causes total failure, not degradation — so these checks are pass/fail rather than scored.

Polarity and saturation

Modules must be darker than the background. An inverted code — light on dark — is read by some decoders and rejected by many, especially older Android cameras. We also flag colour pairs whose greyscale conversion collapses to near-identical values.

Dot-style connectivity and gradient endpoints

Rounded and dot styles shrink each module, effectively reducing size and contrast at the edges. Gradients are checked at both endpoints, because a gradient that starts dark and ends pale fails only on one side of the code — which is exactly the kind of defect a visual review misses.

Print bleed and CMYK shift

Ink spreads on absorbent stock, thickening dark modules and closing the gaps between them. Converting RGB to CMYK also shifts colours, often darkening them. Both are predictable, and both are checked before you commit to a run.

Make a code that passesEvery code made here is checked as you design it.Make a code that passes Work out the print size

Measured clean but still not working for people? Work out which half failed — or, if a scan lands on an expiry notice, find out who is refusing to resolve it.