QR Code Scanner

Upload a QR code image and decode its contents instantly.

Click to upload a QR code image

PNG, JPG, or WebP, decoded entirely in your browser

Uploaded QR code preview No image uploaded yet
Decoded Content

How to Use

Click the upload area (or drag a file directly onto it) and choose an image containing a QR code, a screenshot, a photo, or a saved image all work. The code is decoded instantly and its contents appear below in the decoded content box, ready to copy with one click. If the QR code encodes a URL, phone number, email address, or plain text, the raw underlying text is shown exactly as it was originally encoded, this tool doesn't try to guess or reformat what type of data it is, it just shows you the decoded string.

How QR Decoding Actually Works

Underneath the upload box, this tool draws your image onto an off-screen canvas element, reads out its raw pixel data, and hands that data to jsQR, an open-source QR decoding library, entirely in your browser. The algorithm first searches the pixel grid for the three distinctive large square "finder patterns" that sit in three corners of every QR code, these are what let a scanner locate and orient the code even before reading any actual data. Once the finder patterns are located, the algorithm calculates the grid of individual black-and-white modules between them, samples each module as a 1 or a 0, and reconstructs the encoded binary data, which is then decoded back into readable text according to the QR code specification.

Why Some Images Fail to Scan

A handful of image qualities matter more than most people expect. Contrast is critical, the finder-pattern search depends on a clear light-dark boundary, so a low-contrast photo (a code printed in light gray on white, or photographed in dim lighting) can defeat detection even though the code is perfectly readable to a human eye. Resolution matters too, if the QR code occupies only a tiny cluster of pixels in a much larger image, there may not be enough detail left to distinguish individual modules once the image is processed. The "quiet zone," the blank margin required around every QR code by the specification, also matters, cropping an image right up against the code's edge can prevent the finder-pattern search from recognizing where the code begins. Heavy JPEG compression artifacts near sharp black-white edges are another less obvious cause of failed scans, since compression can blur exactly the crisp boundaries the decoder relies on.

Why QR Codes Still Scan When Damaged

QR codes are built with Reed-Solomon error correction, a mathematical technique that adds redundant data to the code so it can still be read correctly even if part of it is missing, smudged, or covered (which is how QR codes with a logo placed in the middle still work). The QR specification defines four error correction levels: Low recovers from about 7% data loss, Medium about 15%, Quartile about 25%, and High about 30%, a tradeoff the code's creator chooses when generating it, higher error correction makes a code more damage-resistant but also denser and more visually complex for the same amount of encoded data. This is worth knowing when a scan fails on a photo where the code itself looks intact, since error correction handles physical damage well but does very little to compensate for the digital image-quality problems described above, blur and low contrast confuse the initial pattern-finding step long before error correction ever gets a chance to help.

Common Use Cases

This tool is handy whenever you have a QR code saved as a file rather than a physical object to point a camera at, verifying a code before sending it off to a printer to confirm it decodes correctly, checking what a QR code embedded in a PDF, email, or presentation slide actually points to before trusting it, or extracting a URL from a code shared as a plain image file without needing to display it on a second screen for your phone to scan. It also doubles as a quick way to test any QR code this site's own generator tools produce, generate one, download the image, and run it back through the scanner to confirm the round trip decodes to exactly what you encoded.

Common Mistakes

Uploading a screenshot that includes a lot of surrounding page content instead of a tightly cropped image of just the code can sometimes slow detection down or, in busy images, confuse the finder-pattern search if there's other high-contrast geometric content nearby. Assuming any blurry or low-resolution photo will scan just because a phone's live camera scanner handled a similar shot is another common expectation gap, live scanners benefit from continuously sampling many video frames and picking the clearest one, while this tool only gets a single static image to work with, so a photo worth uploading should be reasonably sharp and well-lit on its own. Finally, forgetting that decoding only reveals the raw encoded text, not whether a link is safe to visit, is worth remembering, this tool doesn't check URLs against any safety database, treat a decoded link with the same caution you would any other unfamiliar URL.

Frequently Asked Questions

Is my uploaded image sent anywhere?

No, the image is decoded entirely in your browser using JavaScript, it's never uploaded to a server. You can even disconnect from the internet after the page loads and this scanner still works.

Why isn't my QR code being detected?

Detection can fail if the image is blurry, too small, heavily cropped, or has very low contrast between the code and its background. Try a clearer, higher-resolution photo or screenshot with the full code visible, including its quiet-zone margin.

What image formats does this scanner accept?

Any image format your browser can display, PNG, JPG/JPEG, WebP, GIF, and BMP all work, since the tool draws the uploaded image onto a canvas and reads raw pixel data from there rather than depending on any specific file format's internals. A screenshot, a downloaded image, or a photo taken with a phone camera and transferred to your computer are all valid inputs as long as the QR code is clearly visible within them.

Can it decode a QR code photographed at an angle?

Often yes, within reason. The underlying detection algorithm locates the three large square finder patterns in a QR code's corners and can handle a moderate amount of rotation and perspective skew when calculating where each data module sits. Extreme angles, heavy perspective distortion, or a code that's only partially visible in the frame reduce the odds of a successful decode, a photo taken closer to straight-on, even if slightly tilted, scans far more reliably than one taken at a steep angle.

How is this different from a live camera QR scanner?

A live camera scanner (the kind built into most phone camera apps) continuously captures and analyzes video frames in real time, letting you point at a physical code and get an instant result. This tool instead works from a single already-captured image you upload, useful when you have a QR code saved as a file, embedded in a document, or received as an email attachment, situations where there's no physical code in front of a camera to scan live.

Does this tool still work if I lose my internet connection?

Yes, once the page and its scanning library have fully loaded, decoding runs entirely offline in your browser. You could disconnect from the internet immediately after the page finishes loading and continue uploading and scanning QR code images without any interruption, since no part of the decoding process depends on a network connection.