Practical guide

When a QR code will not scan

First separate an unreadable image from a readable code that leads to the wrong or unavailable result.

Find out whether the image decodes

Open the original downloaded image in the QR Code Reader. If it shows the expected text, the source image contains readable data. If a phone still cannot read the printed copy, compare the print with the source before changing the payload.

If the reader finds no code, try a clean export instead of a screenshot or compressed copy. Make sure the whole pattern and its quiet zone are present. Very large files may need to be reduced or cropped around the QR while keeping that clear border.

Fix the visible pattern

Restore at least four clear module widths around all sides. Use dark foreground modules on a light background. Remove nearby text or borders that touch the quiet zone, and avoid stretched images or textured backgrounds.

If the modules look crowded or soft, make the physical image larger, use square modules, or shorten the encoded data. Move the camera until it can focus, clean the lens, and change the angle to reduce reflections. Test the original screen image and a paper copy separately.

A successful read can still lead to a failed action

For a URL, check that the decoded address is exact and that the destination loads in a browser. A 404 page or expired domain is a destination problem, even though the QR was read correctly.

For Wi-Fi, compare the SSID, password, security setting, and hidden flag with the router. For vCard, try a scanner with contact import support. For Email, confirm there is a configured mail app. For WhatsApp, verify the international number and its active account.

Replace outdated data

The bits in a static QR do not update when your password, email address, or telephone number changes. If the decoded contents are old, generate a replacement and remove the outdated signs or images.

After fixing the cause, verify the generated image, test the destination or device action, and scan a proof in its real setting. Each step checks something the others cannot.