What you are seeing
The code does scan, but only after a long hover, repeated refocusing, or several attempts. Slow scanning frustrates people: many will give up and walk away before the banner appears, so a slow code behaves almost like a broken one in the real world. The delay usually comes from the camera struggling to resolve the modules, which points at density, size, contrast, or lighting rather than at the destination. Diagnose the slowest part of the process first, because a code that locks on quickly but loads slowly has a different fix.
Likely causes
1.
Dense modules from a long payload — A long URL packs many small modules into the symbol, and the camera needs a steadier hold and a better focus to resolve them. Test: compare your code with a short-payload version of the same design; if the short version locks on faster, density is the cause.
2.
Code too small for the distance — Small modules force the camera to work harder, especially in dim light or on older phones. Test: step closer; if the code locks on quickly at close range but hesitates at the real distance, size is the cause.
3.
Weak contrast or glare — Low contrast and reflections both slow down the camera's ability to separate dark and light modules. Test: shade the code with your hand or tilt it away from the light; if it locks on faster, contrast or glare is the cause.
4.
Camera focus fighting a busy background — A patterned background, nearby text, or a curved surface gives the autofocus competing targets. Test: hold a plain sheet behind the code or flatten the surface; if focus settles faster, the background is the cause.
5.
Destination page is heavy — Sometimes the scan itself is fast but the page that opens feels slow, and people blame the code. Test: watch for the preview banner; if the banner appears quickly but the page crawls, the page is the cause.
Step-by-step fix
1. Shorten the payload: use a short domain path, drop tracking parameters you do not need, and regenerate.
2. Enlarge the code or move it closer to where people will stand when they scan it.
3. Raise the contrast with darker modules on a plain light background, and move the code out of direct glare.
4. Give the code a plain background and a flat surface so the camera focuses on the symbol, not the surroundings.
5. Simplify the destination page for mobile, and retest the full journey from scan to loaded page.
6. Retest on two phones, including an older one, and keep the version that locks on fastest.
Putting this into practice
In practice, the biggest speed win is usually a shorter payload plus a slightly larger code. Those two changes cost nothing and they make every phone's job easier. Test with the oldest phone your audience might use, because a code that is merely slow on a new phone can be unusable on an older one. Keep a short note of what you tested, what failed, and what you changed, so the next person starts from evidence rather than guesswork. A fix that is written down survives staff changes and reprints; a fix that lives only in memory gets repeated.
Common mistakes to avoid
- Judging speed on a brand-new phone under bright office light, then discovering the code crawls for real visitors in dimmer conditions.
- Reprinting the full run before a single proof passes, which turns one failure into many.
- Testing on one phone in ideal conditions instead of two phones in the real conditions where a code that scans slowly will be used.
- Changing the artwork and the placement at the same time, so you cannot tell which change fixed a code that scans slowly.- Skipping the proof test because the change looked small, when small changes cause most repeat failures.
Quick checklist
- The payload is as short as the destination allows
- The code locks on quickly at the real distance on two phones
- The destination page loads promptly on a mobile connection
- The corrected proof passes on two phones in the real conditions
- The fix is recorded in the job file so the next reprint starts from a proven setup
- Every printed copy is checked against the approved proof
- The proof is retested after any later change to the link, design, or placement
Related tools and guides
- [QR payload inspector](/qr-payload-inspector)
- [QR offline verifier](/qr-offline-verifier)
- [QR scanner](/qr-scanner)
- [QR size calculator](/qr-size-calculator)
- [QR safety checker](/qr-safety-checker)
- [blog](/blog)