About the QR code decoder
When a code won't scan, or when you want to see where a code actually points before deciding whether to scan it, this tool helps. It also reads codes cropped out of screenshots, posters or PDFs.
What a QR code actually contains
Many people assume a QR code "contains a URL". It doesn't necessarily. A QR code is fundamentally a block of binary data plus a marker for how it's encoded. The common cases:
- URL: the most frequent. The content begins
http://orhttps://and the browser opens it after scanning. - Plain text: any string — a serial number, a password, a line of instruction.
- WiFi configuration: begins
WIFI:in the formWIFI:T:encryption;S:name;P:password;;. This is the standard used by Huawei, Xiaomi and others. - vCard: begins
BEGIN:VCARDand carries a name, phone number and email. - SMS / phone:
SMSTO:number:messageortel:number. - Payment codes: the pay codes in WeChat and Alipay are encrypted strings with a signature and an expiry. Decoding them yields gibberish, and that's expected — they're designed to be unreadable.
Once it identifies the content, the tool tries to classify it and offers the matching action button.
Why decoding sometimes fails
Failures usually fall into one of these categories:
- The image is too blurry or too low-resolution. Each module of a QR code needs at least 2–3 pixels for reliable recognition. Enlarging an image before cropping the screenshot helps a great deal.
- The quiet zone is missing. A QR code needs a clear margin, at least four modules wide by the standard. Codes with the margin cropped away read far less reliably. If the pattern touches the edge of the image, add a white border around it and try again.
- Inverted colours. The standard form is a dark pattern on a light background. Light-on-dark works in theory but many decoders don't support it. For an inverted screenshot, invert the colours first.
- Too much distortion or skew. Photographing a screen or a code on curved packaging introduces perspective distortion. A slight tilt is fine, but heavy warping makes it impossible to locate the three position markers in the corners.
- Overexposure or shadow. Local reflections blow out a patch of modules to pure white and that data is lost. Fortunately the error correction (below) can recover from minor damage.
- The code itself is incomplete. If the image was cropped, make sure the three large squares (top-left, top-right, bottom-left) survive. Those are the position markers; lose any one and decoding is all but impossible.
How error correction works
A QR code carries built-in error correction, using Reed-Solomon coding to add redundancy to the data. There are four levels:
- Level L (about 7% redundancy): recovers roughly 7% of a damaged area.
- Level M (about 15%): the usual default.
- Level Q (about 25%): for codes that may suffer light wear.
- Level H (about 30%): the most redundancy; marketing codes with a logo in the centre usually use this.
That's why a code with a logo over the middle still scans — the covered area falls within the correction capacity. But note the trade-off: more redundancy means less data capacity, so the same code at level H holds roughly half the characters of one at level L.
A safety note: look before you scan
One problem with QR codes is that you can't see the content before scanning, which is exactly why phishing campaigns like them. When you meet a code from an unknown source — especially stuck on a shared bike, a parking payment slip or a restaurant table — decode it first:
- Check the domain. A legitimate company has a consistent domain; a strange short link or a look-alike misspelling is suspicious.
- Be wary of any link asking for personal information. Payment, login, ID numbers — all deserve extra caution.
- Watch for
WIFI:codes — joining an unknown network risks your traffic being sniffed.
On privacy
Decoding happens entirely in the browser: the image is read into memory, converted to greyscale and binarised locally, positioned, then decoded — with no network requests at any point. Press F12, open the Network panel and drag an image in; no upload appears. It's safe to check screenshots containing personal codes such as a health code or a membership code.
Frequently asked questions
Can it read screen captures?
Yes. As long as the code area is captured in full — don't crop away the surrounding margin — the success rate is high. If the code occupies only a small part of the screenshot, crop to that region first for better results.
Can it read several codes at once?
One image at a time. If an image holds multiple codes, the tool attempts one, usually the largest and most central. To read them all, crop each one separately.
Does it support dynamic codes?
A "dynamic" code is still an ordinary QR code; only its URL points to a redirect service. Decoding gives you the intermediate redirect address rather than the final landing page. That's the expected result.
WeChat pay codes decode to gibberish — is it broken?
No. A payment code contains an encrypted, time-limited payment credential by design, deliberately unreadable. Every tool will produce that same string.
Are images stored on a server?
No, and they never leave your computer. The tool has no backend; all the logic runs in the browser. It still works with the network disconnected.