← Hashito System Home 日本語 Tools Blog Posters

🔒 Everything runs inside your browser. Your images are never uploaded to a server.

Click to select an image / drag & drop it here / paste with Ctrl+V
Parameters
How to use: load an image and the before/after previews appear on the right. Moving a slider automatically retries decoding. For blurry photos try upscale + unsharp; for faint prints try contrast + binarization.

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.

Note: attempts are split into small chunks, so the page stays responsive while the sweep runs. On success, the winning parameters and the error correction level (L/M/Q/H) are displayed.
Tip: camera shake and misfocus are treated with an unsharp mask (simple edge enhancement that adds back the difference from a blurred copy). Match the radius to the width of the blur; too much strength also amplifies noise, so increase it gradually.
Preview & Result
Before
After
⚠️ This result contains a URL. Review it first, and open it yourself only if you trust it.
Tips for retaking the photo when it won't decode:
・Shoot under bright, even light, avoiding glare and reflections
・Move in head-on so the QR code fills most of the frame, then hold still for a moment to let the camera focus
・Keep the three large corner squares (finder patterns) fully inside the frame
・Flatten folds and creases in the paper as much as possible
・If it still fails, the damage may exceed the error correction limit (about 30% at most)
📖 Curious why unreadable QR codes can be recovered at all (error correction, enhancement, and binarization)? Read the companion article "How to Restore an Unreadable QR Code from a Photo".

About the QR Code Photo Restore tool

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.

Three recovery approaches

What it can and cannot do

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.

Frequently Asked Questions (FAQ)

Is my image uploaded to a server?

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.

Can every QR code be recovered?

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.

What are the error correction levels (L/M/Q/H)?

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.

What does the auto-retry (parameter sweep) do?

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.

📖 Free educational posters for students →