Your input stays in this browser.
A decoder reads a grid, not a black-and-white picture
A QR symbol stores bits in square modules. The reader first looks for the three large corner finder patterns, estimates the square's orientation, and samples the module centres rather than treating every dark pixel as data. Format information tells it which mask was used; only then can the sampled bits be unmasked and checked with error correction.
The useful size relationship is S = 17 + 4v, where S is the number of modules on a side and v is the QR version. For example, a 29 by 29 module symbol gives v = (29 - 17) / 4 = 3. That calculation describes the encoded grid, not the number of pixels in a screenshot: a 348-pixel crop might give roughly 12 pixels per module, while a resized or blurred copy can give the same outer dimensions and much less usable detail.
This reader accepts a PNG, JPEG, or WebP chosen from disk, dropped onto the page, or pasted from the clipboard, up to 10 MB and 16 megapixels. The pixels are decoded in this browser; the image is not uploaded, retained, or added to a file history.
Why a clean screenshot succeeds when a phone photo does not
A saved export usually preserves straight module edges and even contrast. A photographed poster adds perspective, lens blur, glare, paper texture, motion, and automatic sharpening. Those effects can move a sampled centre across a module boundary even when the code still looks recognisable to a person. JPEG blocks are not automatically fatal; losing the contrast between adjacent small modules is the more important failure.
The working assumption here is a flat, complete symbol in a file that already exists. SVG is excluded because it must be rasterised before these pixel-level checks apply. Live camera capture and arbitrary angled photographs are outside the tool's claim: they need a separate, measured set of focus, distance, lighting, and perspective tests rather than a promise based on a convenient image.
If a code is unreadable, start with the original exported PNG or take a full-resolution screenshot instead of enlarging a thumbnail. Cropping away surrounding artwork can help, but leave the pale quiet zone intact. Scaling a 120-pixel image to 1200 pixels only repeats its blurred samples; it does not restore module information.
One result is a decision about the image, not a confidence score
Decoded means that one complete candidate produced a checked payload. Unreadable means that no complete grid could be recovered from the supplied pixels. Unsupported means that the file type, byte size, or image dimensions fall outside the stated limits. Ambiguous means that more than one plausible code was found, so the reader deliberately returns no payload instead of selecting the most prominent square.
That last boundary matters in a flyer, slide, or product sheet with several codes. A crop containing both a payment link and a support link is not a request to guess which one you intended. Crop to a single complete code and run it again. Likewise, a successful result proves what those pixels contain; it does not prove that a different print run, later crop, or re-encoded image contains the same bytes.
The payload grammar explains what a phone will try to do
After the grid is recovered, the reader keeps the original payload visible and also parses familiar formats. A WiFi payload separates the network name, authentication setting, and password; a vCard exposes contact fields; an event reveals its dates and location; mail and message payloads show their recipient and body. The split fields make escaped punctuation and misplaced values easier to spot than in one long line.
For a web address, the destination is shown without opening it. A check can point out a non-web scheme, an embedded username or password, a punycode label, mixed writing systems, or a shortening service that conceals the final host. Consider the concrete string `https://[email protected]/login`: the apparent account name sits before `@`, while the host a browser contacts is `bad.example`. Reading the host is more useful than trusting the first familiar word.
These are syntax checks, not reputation research. A normal-looking HTTPS address can still lead to a fraudulent page, and an unfamiliar domain can be legitimate. Do not enter credentials merely because the reader decoded a link cleanly; confirm an unexpected destination through an address or app you already know.
A pre-print check catches content mistakes that appearance cannot
Use the exported production image as the test object. Suppose a café intends to encode the network name `HarborGuest`, security `WPA`, and password `Tea-47!`. A symbol can look perfectly regular while carrying `HarborGuset`, an open-network marker, or a password copied into the name field. Decoding the finished file reveals those exact values before the sign is printed; a visual inspection of the modules cannot.
Keep the plain control and the final branded artwork separate. If the plain PNG decodes but the logo version does not, the payload is not the cause: reduce the logo, improve contrast, or restore the quiet border. If neither decodes, compare the recovered text with the source values and create a new export. Error correction can repair some damaged codewords, but it cannot turn a wrong address into the intended one.
For an unfamiliar code in a document, this is also a way to inspect the stored content without pointing a personal camera at it. It is not a malware scanner, a destination preview, or an approval of the sender. It answers the narrower question that can be tested locally: what does this particular image encode?
Frequently asked questions
Is my image uploaded to a server?
No. The file is decoded in your browser and never leaves your device. That is also why there is no file-history feature — there is nothing stored to list.
Why is my QR code unreadable?
The usual cause is that module boundaries have been lost to a small crop, blur, glare, a steep angle, or a missing quiet border. Try the original export or a full-size screenshot. Enlarging a thumbnail does not restore the grid it discarded.
Can it scan with my camera?
Not yet. Live capture needs quality we can prove, not promise, so the tool currently takes image files and screenshots only. Your phone's built-in camera remains the right tool for scanning paper.
What happens if the image has two QR codes?
The result is Ambiguous and no payload is returned. Crop to one complete symbol and decode again. Selecting a code on your behalf would make the result depend on a guess, not on the file you meant to inspect.