EAN Check.comEAN Check.com

QR Code Recovery Tool

Got a QR code that won't scan? Upload a damaged, blurry, or partially destroyed QR code and recover its data instantly. Free browser-based tool with automatic image enhancement and Reed-Solomon error correction.

By The eancheck teamPublished

Drop a QR code image here, paste from clipboard, or click to browse

Accepts PNG, JPG, WEBP, SVG, BMP

How QR code error correction works

Every QR code contains more data than its payload strictly requires. The extra bytes are Reed-Solomon parity codewords, and they exist for one reason: to let the decoder reconstruct missing or corrupted data without asking the encoder to retransmit. The ISO/IEC 18004 standard defines four error correction levels, each trading capacity for resilience.

The four EC levels

Reed-Solomon under the hood

The encoder treats the data payload as a polynomial over GF(256), a finite field with 256 elements that maps neatly onto single bytes. It divides the data polynomial by a generator polynomial and appends the remainder as parity codewords. When the decoder reads the symbol, it evaluates the received polynomial at specific points. If all evaluations come to zero, the data is clean. If not, the non-zero values (called “syndromes”) pinpoint both the positions and the magnitudes of the errors. For 2t parity codewords, the decoder can correct up to t corrupted codewords. At level H, a version-5 QR code carries 36 data codewords and 28 EC codewords, enough to fix 14 corrupted bytes.

Common causes of QR code damage

QR codes are designed to survive real-world conditions, but “survive” has limits. Understanding what went wrong helps you decide whether recovery is likely and which manual adjustments might help.

Physical wear

Scratches, scuffs, and abrasion from handling, transport, or weather. Warehouse labels that ride a conveyor belt for months lose surface detail gradually. The damage is usually localised, which means the error correction can often absorb it.

Printing defects

Inkjet bleed, thermal printer fade, toner smudge, or low-DPI output that merges adjacent modules. These defects tend to affect the entire code uniformly, which is harder to recover from than localised damage because every codeword takes a small hit rather than a few codewords taking a large one.

Partial obstruction

A sticker placed over part of the code, a finger in the photo, a fold in the paper, or a receipt that curled and hid one corner. If the obstruction covers less than the code’s EC capacity, recovery is straightforward. If it covers a finder pattern, the decoder may fail to locate the code at all, in which case rotation and cropping can help.

Low-resolution capture

Screenshots from video calls, photos taken from across a room, images downscaled by messaging apps. The modules blur together and the decoder can’t distinguish black from white. The tool’s sharpening and contrast enhancement filters target exactly this problem.

Compression artifacts

JPEG compression rounds off the crisp edges that QR codes depend on. Each save-and-share cycle degrades the image further. Screenshots saved as PNG are lossless and decode more reliably; if you have the option, always prefer PNG over JPEG for QR code images.

Tips for better QR code scanning

Before reaching for a recovery tool, a few simple adjustments to how you capture the code can make the difference between a clean scan and a failed one.

Lighting

Even, diffused light produces the best contrast between dark and light modules. Avoid direct flash, which can create glare spots that the decoder reads as white. If you’re scanning from a screen, turn the screen brightness up and reduce ambient light to minimise reflections.

Angle and distance

Point the camera straight at the code, as close to perpendicular as you can manage. Steep angles stretch the modules into parallelograms that confuse the decoder’s grid alignment. Get close enough that the code fills at least a third of the frame, but leave a margin of quiet zone (the white border) on all sides.

Resolution

Each module in the QR code needs to span at least 3–4 pixels in the captured image for reliable decoding. A version-5 code is 37×37 modules, so the code region should be at least 150×150 pixels. Higher is better. If you’re cropping a screenshot, make sure you’re not downscaling below that threshold.

Focus

Tap-to-focus on the QR code before capturing. Many phone cameras default to face detection or centre-weighted focus, which may not prioritise the code. A crisp image at moderate resolution will decode more reliably than a high-resolution but blurry one.

Frequently asked questions

How much damage can a QR code survive?

It depends on the error correction level baked into the code at creation time. At level L, about 7% of codewords can be destroyed and the data is still recoverable. At level H, that figure rises to 30%. Most QR codes you encounter in the wild use level M (15%) or Q (25%), which means roughly one in six to one in four modules can be missing or corrupted before the code becomes unreadable.

What do the error correction levels (L, M, Q, H) mean?

The four levels control how much redundant data the encoder adds. L (Low) devotes about 7% of capacity to error correction. M (Medium) devotes 15%. Q (Quartile) devotes 25%. H (High) devotes 30%. Higher levels make the code more resilient to damage but also increase the number of modules, so the symbol gets physically larger or denser for the same payload.

What types of damage can this tool fix?

The tool handles a wide range of real-world degradation: blurry or out-of-focus captures, scratches and scuffs across the surface, partial tears or folds, faded printing, low-contrast images, compression artifacts from repeated screenshots, and partial obstructions like stickers or fingers. It applies 13 different image enhancement strategies and then leverages the built-in Reed-Solomon redundancy to reconstruct the original data.

Is my image sent to a server?

No. Every step runs in your browser. The image never leaves your device: canvas manipulation, enhancement, and QR decoding all happen client-side using JavaScript and WASM. Open your browser's network tab while using the tool and you'll see zero upload requests. This matters if you're working with internal logistics codes, medical records, or anything else that shouldn't travel over the wire.

What QR code versions are supported?

The tool supports QR code versions 1 through 40, which covers every standard symbol size from 21×21 modules up to 177×177. Micro QR codes are not supported. In practice, most codes you encounter are version 1 through 10; larger versions appear in industrial and logistics contexts where the payload is unusually long.

What if recovery fails?

If the automatic pipeline can't decode the image, try the manual controls: adjust brightness and contrast, experiment with different binarisation thresholds, or rotate the image in small increments. If the code is physically missing more data than its error correction level allows, no software can recover it. At that point, you need a better source image or an alternative copy of the code.

Can I recover a QR code from a screenshot?

Yes, and screenshots are one of the most common inputs. The main challenge is compression artifacts: JPEG screenshots lose edge sharpness, and repeated save-and-share cycles compound the damage. The tool's enhancement pipeline specifically targets these artifacts with sharpening and contrast adjustments. Paste directly from your clipboard with Ctrl+V (or Cmd+V on Mac) for the fastest workflow.

How does Reed-Solomon error correction work?

Reed-Solomon codes treat the QR payload as a polynomial over a Galois field (GF(256) for QR codes). The encoder appends extra "parity" codewords computed from the data polynomial. When a decoder encounters errors, it uses those parity codewords to build a system of equations, locate which codewords are corrupted, and compute their correct values. The maths guarantees that 2t parity codewords can correct up to t errors, which is why higher EC levels need more space but survive more damage.

By The eancheck teamPublished

Questions or corrections? Email the eancheck team.