QR Fixer

How to photograph a QR code so it can be recovered

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:

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.

More on reading damaged codes