QR code scanability score — what it is and how to use it

Most generators don't tell you whether your QR will scan in the wild until you've printed it. The scanability score concept, what it measures, and how to use it.

May 10, 2026 12 min read Linked.Codes
QR code scanability score — what it is and how to use it

A scanability score is a single number — typically 0 to 100 — that tells you how reliably your QR code will scan in real-world conditions. Most generators don't surface this. They produce a code, you download the PNG, you trust it, and you find out at print time whether the contrast is wrong, the modules are too dense, the logo is too big, or the colour combination falls apart on certain phones. By the time you discover the issue you've already paid the printer. A scanability score catches the problem before the print run.

This post covers what scanability actually measures, why most QR generators don't show it (and why the ones that do are more useful), how to read your score, what fixes raise it most efficiently, and the edge cases the score doesn't catch. Linked.Codes builds a scanability score into the QR editor so you can see whether your code will work before you commit to print, packaging, or signage. By the end of this piece you'll know what's under the hood of that number and how to use it as a pre-flight check rather than a vanity badge.

What scanability actually measures

A scanability score is a composite of four to six measurable QR properties, weighted by how much each one affects real-world scan rate:

  • Module size at the chosen print size. The number of pixels per module on the rendered output. Below ~1.5 pixels per module on a typical phone camera, scan rate falls off a cliff.
  • Foreground/background contrast ratio. The luminance gap between dark modules and light background. ISO/IEC 18004 specifies a minimum, but real-world phone cameras want more headroom than the spec demands.
  • Error correction level vs payload density. A long URL at low error correction creates a dense, hard-to-scan code. A short URL at high error correction is forgiving. The score weighs the actual ratio.
  • Logo overlay area. The percentage of the code area covered by a centre logo. Above 25% you're outside the safe zone for any phone camera.
  • Eye and module-shape modifications. Custom dot shapes (dots, squares, rounded) and eye styles each reduce scanability slightly. Scoring captures the cumulative impact.
  • Colour palette safety. Red-on-grey looks fashionable and scans terribly. The score flags low-luminance-difference combinations even when the hex codes look bold to the human eye.

The output is a single 0–100 number, broken into five bands that anyone can interpret without a printing background:

Scanability score bands and what they mean Scanability score bands SCORE BAND PRACTICAL MEANING 90–100 EXCELLENT scans on any phone, any conditions, almost guaranteed 75–89 GOOD scans on modern phones; print-ready for most contexts 60–74 USABLE scans on most phones; expect 5-15% scan failures in real conditions 40–59 RISKY unpredictable scan rates; do not commit to print without testing 0–39 BROKEN significant scan failures expected — fix before printing
Each band corresponds to a real-world expectation, not an aesthetic judgment. The goal is to land in 75+ before any printed deployment; 90+ is the comfortable target for high-volume campaigns.

The score isn't a vanity number. It maps directly to scan rates measured in controlled testing — a code at 95 scans in roughly 99% of attempts on modern phones, a code at 60 scans in roughly 85% of attempts, a code at 40 scans in roughly 60% of attempts. Those gaps multiply into real customer frustration when scaled to thousands of scans.

Why most generators don't show it

Three honest reasons:

The math is hard. A useful scanability score combines image-processing analysis (contrast, module density, perspective tolerance) with knowledge of phone-camera capabilities, the ISO QR specification, and real-world print conditions. It's a non-trivial back-end computation. Most generators skip it to keep their tooling simple.

The score reveals limitations. A free generator that proudly displays a 45 score on the user's downloaded code looks bad. Generators that don't score don't embarrass themselves on borderline outputs.

Users don't ask for it. Most QR generator users are picking colours and uploading logos, not thinking about scan reliability. The feature has to be built without user demand pulling for it.

The result is a market where you can produce a beautiful QR code that fails to scan in 30% of real-world attempts and never see a warning until someone complains. The scanability score exists to close that gap — to surface the warning at design time, not after print.

Factors that combine into the scanability score What goes into the score (and the rough weighting) Foreground/background contrast ~30% Module size at print size ~25% Error correction vs payload ~18% Logo overlay area ~14% Module/eye shape modification ~13%
Approximate weighting of the factors that combine into a single score. Contrast and module size dominate because they fail catastrophically — the others reduce reliability gradually.

How to read your score

The bands above translate directly to print decisions:

90+: ship. Your code will scan reliably on any phone in any reasonable lighting condition. Push to print.

75–89: ship for most contexts. Print confidently for indoor, consumer-facing applications. For outdoor, industrial, or premium contexts where scan reliability matters disproportionately, consider raising it to 90+ before committing. For high-volume retail surfaces where one bad shelf-tag QR multiplies across hundreds of stores, the same 90+ threshold applies — we cover the at-scale case in QR codes in retail.

60–74: test before print. Print a small proof at the actual size you'll use. Photograph it under indoor light on three different phones (iPhone, recent Android, budget Android if relevant). Scan on each. If all three succeed first try, you're probably fine. If any fail, raise the score before the full print run.

40–59: don't print yet. The score is telling you something is meaningfully wrong. Re-check contrast, error correction, logo size, and module size. Most issues at this level are fixable with one or two changes that bump you into the 70+ range.

Below 40: rework the design. A code at 30 has fundamental issues — usually a colour choice that's effectively invisible to phone cameras, a logo that's eaten the data area, or a payload too long for the chosen size. Iterate the design until you cross 60.

A live scanability checker

Plug in your QR's parameters. The widget produces an estimated score using the same composite formula the Linked.Codes editor uses internally.

95
EXCELLENT

The widget runs the same composite formula in your browser. Tweak inputs and watch the score move — drop the print size below 12mm and watch it crash; bump error correction from L to H and watch it climb. The point is to feel which factors move the score most before you commit to a final design.

A scanability score isn't a grade you're trying to pass. It's a signal telling you whether the design you're holding will scan in the wild — and which knob to turn if it won't.

Common reasons for a low score

The four issues that drop scanability scores most often, in order of frequency:

1. Insufficient contrast. The single biggest cause of low scores. Brand colours like teal-on-grey, gold-on-cream, navy-on-charcoal look striking to the human eye but are nearly invisible to a phone camera processing through the QR decoder. The fix is usually pushing the dark colour darker or the light colour lighter — sometimes a 10% luminance shift moves a score 30 points. We walk through the diagnostic and the fix in detail in the six fixes for a QR code not scanning.

2. Tiny print sizes. Designers reflexively shrink QR codes to fit a layout. Below the minimum-readable size (varies by payload but ~18mm is the typical floor), scan rate collapses. The fix: respect the minimum size or shrink the payload (use a shorter URL).

3. Long URLs at low error correction. Encoding a 200-character URL at error correction L produces a dense version-13+ code with tiny modules at any reasonable print size. The fix: shorten the URL (a dynamic short link cuts payload to 30 characters) or raise error correction at the cost of some additional density.

4. Oversized logos. A logo covering 25%+ of the code's area pushes you past the safe zone for any error correction level. The fix: shrink the logo, raise error correction, or both.

The score's blind spots

What scanability scores can't catch:

  • Print quality issues. A 95-score code printed on bad stock with smeared ink will fail. The score assumes clean print.
  • Lighting in the scan environment. Glare, shadow, glossy paper reflecting overhead lights — none of these are knowable at design time.
  • Camera quality on the user's phone. A 75-score code that scans easily on an iPhone 15 Pro might struggle on a 2018 budget Android. The score uses an industry-average phone as its baseline.
  • Adversarial damage. A code obscured by a coffee stain or a sticker overlay isn't something the score can predict.

So the score is a necessary check, not a sufficient one. Pair a high score with print proofing, multi-phone testing, and reasonable expectations about your scan environment.

85+
Recommended scanability score for any printed campaign that goes into customer hands. Below 85 you start seeing scan failures in real conditions; above 95 the marginal returns flatten.

How Linked.Codes uses the score

The Linked.Codes QR editor surfaces the scanability score live as you adjust colours, modules, eye shapes, and logo overlay. The score updates in real time so you can see the impact of every choice immediately — a colour change drops the score by 12 points, you see it before you commit. The editor also flags individual factors (contrast warning, logo overflow, payload-too-dense) so you don't have to guess which knob to turn.

Below the editor, every saved design carries its score as metadata. You can sort and filter your QR library by score, surfacing borderline codes that should be reworked before they ship into the next print run. The score travels with the design rather than being a one-time check at design time.

How a low score gets fixed — typical journey A typical fix journey from low to high score Score: 38 low contrast, long URL, big logo Score: 64 contrast fixed, logo trimmed Score: 79 EC raised to Q, URL shortened Score: 92 size + spacing SHIP IT Three or four small adjustments turn a 38 into a 90+. Most issues are mechanical, not aesthetic.
The typical fix path. Each step targets the dominant weakness in the score. The journey from 38 to 92 takes about ten minutes of editing on a tool that surfaces the score live.

Sample QR designs scored above 90

Below is a small live gallery of QR designs that score 90+ on the scanability formula above. They demonstrate that high-scoring codes don't have to be plain black-and-white — visual variety is compatible with reliable scanning when the underlying choices respect contrast, density, and overlay limits.

Each design in the gallery balances aesthetic distinction (rounded modules, custom eyes, accent colours) with the scanability constraints. They scan in under 200ms on every phone tested, including older Android budget devices.

Pre-flight checklist for any printed QR

Before any print run, run through this five-item checklist:

  1. Score is 85 or higher in the editor with the actual print size selected.
  2. Print a proof at the actual final size and photograph it under indoor light. Scan it from arm's length on at least two phones.
  3. Test the redirect destination — make sure the URL works, the page loads on mobile, and any redirect chain is intact.
  4. Verify contrast on the print stock by holding the proof in different lighting (window, indoor lamp, dim ambient). Glossy stock kills scans under reflective light.
  5. Confirm the print size is at least 18mm (or whatever your scanability score's minimum requires for your specific payload).

Five minutes of pre-flight catches the issues that turn a five-figure print run into a return-to-press story. The scanability score does most of the heavy lifting; the manual checklist catches the things software can't see.

Design QR codes that scan reliably — with the scanability score live as you edit.

Try the editor
What's a good scanability score for a printed QR?

85 or higher for any printed deployment. 90+ is the comfortable target for high-volume campaigns. Below 75, expect scan failures in real conditions; below 60, fix the design before printing anything.

Does scanability score correlate to actual scan rate?

Yes, in controlled testing. A 95-score code scans in roughly 99% of attempts on modern phones; a 60-score code scans in roughly 85%. The exact mapping varies with print conditions and phone hardware, but the directional relationship is reliable.

Can I get a high score without a plain black-and-white QR?

Yes. Rounded modules, custom eye shapes, brand colours, and small logos all coexist comfortably with scanability scores in the 85-95 range. The trick is respecting contrast and overlay limits — the design freedom is real, but it has guardrails.

What lowers a scanability score the most?

Insufficient contrast between foreground and background, in our testing. A perfectly-designed QR with a 1.5:1 luminance ratio (instead of the recommended 3:1+) drops 30+ points. Logo overlays past 25% are the second-biggest factor.

Why do some generators not show a scanability score?

Computing it requires non-trivial back-end logic: image-processing analysis, knowledge of the QR specification, and modelling of phone-camera capabilities. Many generators skip the feature to keep their tooling simple, or because revealing low scores would embarrass the output.

Does the scanability score matter for digital-only QR codes?

Less, but still meaningfully. On-screen QR codes have advantages — controlled lighting, perfect pixel rendering, no print degradation — but the same contrast and density rules apply. A score of 75+ is sufficient for screen-only contexts; print needs higher.

Will my score change after I save the design?

Yes if you change parameters that affect scanability — colours, error correction, payload, logo size, eye shape. The score recomputes automatically when you re-save. Designs in your library carry their last-saved score as metadata so you can audit your set.

Sourcesshow citations

Try it on your own domain

Branded short links and dynamic QR codes, on your subdomain or your own domain. One-time purchase, no per-click fees.