Recover QR codes that won't scan from photos — enhancement, auto-retry sweep, and deblur. Shows the error correction level
🔒 Everything runs inside your browser. Your images are never uploaded to a server.
Automatically tries combinations of binarization thresholds (multiple steps including an auto-estimated one) × black/white inversion × rotation (0/90/180/270°), hunting for a state where the QR code's Reed–Solomon error correction can kick in. Effective for dirty, chipped, or partially covered codes.
A QR code in a screenshot or camera photo that just won't scan is usually the victim of misfocus, camera shake, low contrast, being too small, or dirt and damage. This free online tool combines image processing (enhancement, binarization, edge sharpening) with the QR standard's built-in Reed–Solomon error correction to attempt recovery of codes that failed to scan.
QR error correction can restore at most about 7–30% of the code, depending on the error correction level. Images missing a corner finder pattern, or mostly covered, cannot be recovered. The tool is most effective when the code itself is intact but the photo quality is poor. Decoding is powered by the jsQR library.
No. Everything — loading, enhancement, binarization, and decoding — runs entirely inside your browser using Canvas and JavaScript. Neither the image nor the decoded result is ever sent to or stored on an external server, so you can safely use photos you would rather keep private, such as business cards or tickets.
No, recovery has limits. QR error correction (Reed-Solomon codes) can restore at most about 7-30% of the code, depending on the error correction level. If the three finder patterns in the corners are lost, or the damage exceeds that limit, the code cannot be recovered. In that case, retaking the photo head-on, in good light, and in focus is usually the fastest fix.
They are a four-step indicator of how much of a QR code can be restored when it is dirty or damaged. L can recover about 7% of the codewords, M about 15%, Q about 25%, and H about 30%. When this tool decodes successfully, it also displays the error correction level that was set for the QR code.
It automatically tries combinations of binarization thresholds (including an automatically estimated one) x black/white inversion x rotation (0/90/180/270 degrees) one by one, and shows the result as soon as the code can be read. The work is split into small chunks so the page never freezes during the attempts. If no combination succeeds, it shows tips for retaking the photo.