Sometimes you cannot scan a code on the spot — it is on a slide that moves on, a screen across a room, a poster you pass. What you photograph then decides whether the link is recoverable later. These are the factors that matter, in order.
Fill the frame, and count on eight pixels a module
The single most useful thing is resolution across the code itself, not the megapixels of the photo. A recovery needs roughly eight pixels per module to work comfortably. A typical code is 30 × 30 modules or so, which means the code wants to be at least 250 pixels across in the final image, and more is better.
Cropping in afterwards does not add detail. Walking closer, or zooming with the optical lens rather than the digital one, does.
Angle matters much less than people expect
Rotation costs nothing at all. A code photographed sideways, upside down or at 45 degrees reads exactly as well as a square one — the three corner squares tell a decoder which way up it is, and that is what they are for.
Perspective is a different matter but still forgiving. Photographing from off to one side turns the square code into a trapezoid, which a decoder can undo, because the transformation a camera applies is one a computer can invert exactly. In testing, codes tilted well off-axis still recovered. Past roughly 45 degrees the corner squares themselves start to become hard to find, and that is the point where it breaks down.
So: do not fret about standing square to it. Do avoid the extreme grazing angle.
Screens are harder than paper
A photograph of a monitor, a projector or another phone is the difficult case, because bright areas bleed outwards into dark ones. A dark module surrounded by light ones can be entirely overwritten, and once that has happened no processing recovers it — its own pixels no longer hold the answer.
Three things help, in order of effect:
- Lower the screen's brightness before photographing it. This is by far the biggest win and almost nobody does it. A dimmer screen blooms less.
- Do not use flash on a screen, and avoid it on glossy print. It adds a hotspot that destroys whatever it lands on.
- Move slightly off-axis if the screen is reflecting a light source back at you. A modest angle costs almost nothing, as above, and losing the reflection is worth far more.
Focus beats steadiness
Defocus and motion blur look similar but are not equally bad. Even blur spreads every module into its neighbours symmetrically, and the two brightnesses stay separable a long way into it. Tap to focus on the code before shooting, brace against something, and take three or four frames — the differences between consecutive frames are often the difference between recoverable and not.
Take more than one
This is the cheapest insurance available. Take several photographs, from slightly different distances and angles. Recovery works on whichever is best, and you cannot tell by eye which one that is — a picture that looks worse to you may have caught the modules more cleanly.
If it still will not scan
A code that no app will read is very often still intact. Scanners take one attempt and give up because they are built for a live camera feed where there is always another frame; a photograph gets no second frame. Searching the possibilities properly is a different job, and one that regularly succeeds on images every scanner has rejected.
Try the recovery tool — it runs entirely in your browser, so the photograph never leaves your device. It also reports how much of the code it could read, which tells you whether a better photograph would help or whether the information is genuinely gone.