
Screens fail as scanning targets for reasons that have nothing to do with the code. The usual causes, in rough order: display brightness too low, or a highlight sitting on one of the finder squares; a code that is physically smaller on glass than it looks; moire between the screen grid and the camera grid; refresh banding; matte coatings and privacy filters; and a greasy lens or a phone held closer than its minimum focus distance. A code shown on the same phone you are scanning with cannot be read at all, and needs a long press or a screenshot instead.
The code is sitting on the monitor, big and black and unmistakably a QR code, and your phone just holds the viewfinder open doing nothing. Paper works on the first try. Glass often does not.
Screens fail as scanning targets for reasons that have nothing to do with the code itself. Here they are, roughly in order of how often each one turns out to be the culprit.
Brightness, in both directions
Too dim and the camera lifts its gain to compensate, which flattens the contrast between dark and light modules until the decoder cannot tell them apart. Push the display close to full brightness, turn off auto-brightness for the moment, and switch off any warm-tint or night filter.
Too bright is a real failure too, though the mechanism is different. A lamp or window behind you throws a specular highlight across the panel, and if that bright patch lands on one of the three finder squares, the decoder never gets started. Tilt the screen, step to one side, or kill the overhead light. Glossy panels are the worst offenders here.
There is a third case that trips people up: dark-mode pages sometimes render the code as white modules on a black background. Plenty of readers handle inverted codes, but not all of them. Force the page into light mode, or open the code image on a white background. If your phone's built-in camera is the fussy one, a dedicated scanner app is usually more tolerant.
The code is physically smaller than it looks
Pixel dimensions and physical size stopped matching years ago. The same 150-pixel image renders visibly smaller on a high-density laptop panel than it did on an old 96 DPI monitor, and a code that looks perfectly adequate to your eye at 40 cm can be under an inch of actual glass.
Zoom the browser with Ctrl or Cmd plus, open the image in its own tab, or full-screen it. Two inches on the glass is a comfortable target.
Moire, or two grids arguing
The screen draws your code out of a pixel grid. The camera samples it with another grid of photosites. When those two grids land at an unhelpful ratio, they interfere: wavy bands appear, module edges soften, and adjacent modules smear into each other.
The fix is to change the geometry rather than anything on screen. Move a few centimeters closer or farther. Tilt the phone ten or fifteen degrees off perpendicular. Or enlarge the code so each module spans many screen pixels and many sensor pixels, which drowns the interference. Moire looks a lot like ordinary focus blur, so if a printed copy of the same code fails the same way, the problem is the code and blur troubleshooting is the better page.
Refresh-rate banding
Most phone sensors use a rolling shutter, reading the frame line by line while the display is busy redrawing. Get the timing wrong and dark bands drift through the preview. Any frame captured mid-band is missing a horizontal slice of the code.
Hold still for two or three seconds instead of sweeping the phone around, so the decoder gets multiple frames and at least one lands clean. Changing your distance sometimes shifts the beat frequency enough to clear it. If the code is inside a video that is still playing, pause the video first.
Matte coatings, protectors and privacy filters
An anti-glare coating or matte screen protector trades reflections for slight softness, which is fine for reading text and marginal for resolving small modules. A privacy filter is worse: it cuts brightness sharply off-axis, so a code that looks fine to the person seated in front of the monitor is dim and washed out to a phone held at an angle. Get square to the screen.
The same problem appears from the other end. A scratched or cracked protector over your phone's camera housing scatters light before it ever reaches the lens.
A greasy lens and standing too close
Fingerprints on the camera glass are the cheapest fix on this list and one of the most common causes. Grease diffuses light, and a bright screen makes it bloom into a haze that sits right over the code. Wipe the lens with a cloth and try again before doing anything else.
Then check your distance. Phone cameras have a minimum focus distance, and holding the phone three or four centimeters from the panel puts the code inside it, so nothing will ever come into focus. Some phones also switch to a lower-resolution ultra-wide lens at close range. Back off to 20 or 30 cm, hold steady, and tap the code on your screen to lock focus if the camera keeps hunting. The rest of the technique is in how to scan a QR code.
When the code is on the phone in your hand
You cannot point a camera at its own screen. This one is not a malfunction, and no amount of retrying will help.
Three ways around it. Long-press the code image: both iOS and Android detect codes inside images in the browser and photo viewer and offer the link directly. Or take a screenshot, open it in your photo app, and use the built-in detection (Live Text on iOS, Lens on Android). Or save the image and run it through a decoder that accepts an upload, which is what scanning from a picture is for. The same approach handles a code that arrived as a PDF attachment or an email graphic, since an image-based reader takes a file rather than a camera feed.
If the code also refuses to scan from paper, the cause is on the code's side, and the broader checklist for codes that won't scan covers quiet zones, contrast, damaged prints and dead destinations.
One last thing, aimed at whoever put the code on the screen in the first place. Render it at least 300 pixels square, keep it dark on white regardless of the site's theme, and leave a clear margin of at least four modules on every side. A presenter who does that never hears "it won't scan" from the back of the room.

