Drag-and-drop upload
Drop a screenshot, photo, or PNG directly onto the tool. A traditional file picker is available too. The image is processed in memory and is never uploaded.
QR Code Decoder reads QR codes from an uploaded image and returns the text or URL they encode. Drag and drop a screenshot, photo, or PNG and the tool decodes it locally in your browser without uploading anything.
Drop a QR code image here, or upload one
Supported: PNG, JPG, WebP, GIF, BMP. Image stays on your device.
QR Code Decoder is a free, browser-based tool that decodes QR codes from any common image format — PNG, JPG, WebP, GIF, or BMP. Drop the file, point the file picker at it, and the tool extracts the encoded payload (usually a URL, but it can be any text the original code carried) and shows it to you alongside a preview of the image.
QR Code Decoder is designed for the moment when scanning with a phone is inconvenient: a screenshot a colleague sent you in Slack, a QR code embedded inside a PDF you cannot open on your phone, or a screen-share image where you want to know where a code points before clicking through. Because the decoding runs entirely in your browser, you never hand the image (or the embedded URL) to a third party — useful when the code is part of internal documentation or a private flow.
Typical users are security engineers checking the destination of a QR code before clicking, content reviewers verifying that a printed code on packaging encodes the intended link, support staff helping users who cannot scan a code on their own device, and developers integrating QR scanning into a desktop workflow without a phone in the loop.
Drop a screenshot, photo, or PNG directly onto the tool. A traditional file picker is available too. The image is processed in memory and is never uploaded.
Accepts PNG, JPG, WebP, GIF, and BMP images. Any format the browser can decode is also a format the tool can read.
Large photos (up to 1600 pixels on the long edge) are scaled to a reasonable working resolution before decoding. This keeps the tool fast even on high-megapixel phone screenshots.
The decoder attempts both normal and inverted scans, which means light-on-dark codes work alongside the standard dark-on-light layout.
A thumbnail of the decoded image appears alongside the result so you can confirm the tool read the right symbol — useful when a screenshot contains more than one code.
All processing happens in your browser. The image and the decoded URL never leave the device, which matters when the code points to internal infrastructure or private content.
A QR scanner has to do three things: find the code in the image, correct for perspective and rotation, and extract the binary payload. The position-detection patterns in three corners give the scanner the orientation. Alignment patterns help it sample modules correctly even on a curved surface. After perspective correction, the scanner reads each module as a bit and applies Reed–Solomon decoding to repair any minor damage.
QR Code Decoder uses the jsQR library, an open-source implementation of the QR specification that runs entirely in the browser. It reads pixels from a canvas, identifies position-detection patterns, performs the perspective correction, and emits the decoded payload as plain text. Because there is no server round trip, the entire decode happens in a few hundred milliseconds for typical phone screenshots.
The biggest factor in successful decoding is image quality. A well-lit, flat-on shot with the code occupying a reasonable fraction of the frame usually decodes on the first try. Blurry, angled, or low-light photos sometimes fail; cropping the image to just the code is a reliable fix when the surrounding area is busy.
Input
PNG image of a QR codeOutput
https://rohansurve.inDecoding is easiest when the code fills most of the frame and the surrounding area is simple. Crop screenshots to the code itself before uploading for the highest success rate.
A direct screenshot of a digital code decodes perfectly because the pixels are exact. Phone photos work but introduce lighting, focus, and angle variability that occasionally defeats the decoder.
Decoded URLs from untrusted sources can lead anywhere, including phishing pages. Hover over the result, run it through a URL scanner, or open it in a sandboxed browser profile when in doubt.
For printed codes on packaging, the marketing team usually has the canonical destination URL. Always cross-check the decoded payload against that record before signing off on a print run.
During development, decode an existing code with this tool and re-encode the result with QR Code Generator. If the round-trip preserves the content, the encoding is working correctly.
Crop tighter to the code, retake the photo flat-on with good lighting, and try again.
The decoder reads the first symbol it finds. Crop the image to isolate the desired code, then re-upload.
Usually caused by blur, an angled shot, or low contrast. Crop tighter, retake with the camera flat-on, and ensure even lighting on the symbol.
The tool shows you the text without opening it. Inspect the URL, check the domain, and avoid clicking through if the destination looks unexpected.
Decode a screenshot of the supplied artwork to confirm the file encodes the right URL. If the artwork decodes but the print does not, the issue is likely contrast, registration, or surface damage on the physical sample.
The decoder reads the first symbol it finds. Crop the image to isolate the code you want decoded if you are seeing the wrong one.
The decoder attempts both orientations automatically. If the inverted attempt also fails, the issue is probably contrast or noise — try a higher-resolution capture.
Yes. All decoding runs in your browser. The image is read into a canvas locally and never uploaded to any server. The decoded URL or text also stays in your browser unless you copy it elsewhere.
Any image format the browser can decode: PNG, JPG, WebP, GIF, and BMP. SVG-based QR codes can be decoded by exporting them to PNG first.
Common causes are blur, low contrast, an angled photo, or a code that occupies only a small fraction of the frame. Try cropping closer to the code, retaking the photo flat-on, and ensuring even lighting.
This tool decodes single still images. For live camera decoding, use your phone's built-in scanner or a dedicated webcam-based scanner — those tools sample many frames per second.
Not automatically. QR codes from untrusted sources can encode any URL, including phishing pages or malware download links. Inspect the URL before opening it, and prefer a sandboxed browser profile for unknown destinations.
Yes. The decoder attempts both normal and inverted readings automatically. Most modern phone cameras handle both as well.
Usually yes if the original code was generated with high error correction (Q or H) so the logo overlay still leaves enough symbol intact. Codes with logos but low error correction sometimes fail.
The tool resizes the long edge to 1600 pixels for decoding. Larger images are scaled down automatically, so phone screenshots and high-resolution scans work without slowdown.
QR Code Decoder reads QR codes from images privately in your browser — useful for security review, packaging verification, and any moment where scanning with a phone is inconvenient.