QR Code Reader — Scan a QR Code From an Image
Short answer: To scan a QR code from an image, add the image and copy the decoded result. QuickMerge reads the QR code locally in your browser without uploading the image.
Drop in a screenshot or a photo and read what the QR code actually says — including where a link goes, before you decide whether to open it. The image is decoded in this tab and is never uploaded.
Read a QR code from an image
Drag an image here
or click to browse — PNG, JPG, WebP, GIF or BMP
Decoded contents
Why read a code from an image instead of pointing a camera at it
Phone camera apps read QR codes well, and when the code is printed on a poster in front of you, that is the right tool. The cases this page exists for are the ones where there is nothing to point a camera at.
A code arrives as a screenshot — someone sends you a payment request or a meeting link as a picture rather than as text. A code is inside a PDF, an invoice or a ticket you have open on a laptop. A code is on the screen you are already using, and photographing your own monitor with your phone produces a moiré mess that often will not scan. A code is on an archived flyer or a scanned document, where the original is long gone and the image is all that is left.
There is also the case where you specifically do not want to scan it with a phone. Reading an unknown code with your phone's camera app usually means the destination opens, or is one tap from opening, in a browser signed in to your accounts. Reading the same code as a file on a desktop shows you the URL as text with nothing loaded, which is a materially safer way to find out what a code you do not trust is pointing at.
How to scan a QR code from an image
- Get the code into an image file. A screenshot is fine. So is a photo, an export from a PDF, or a saved image from an email. If the code is one small part of a large page, crop to it first with the crop tool — but leave a clear white margin around the code.
- Drop the file on the box above, or click it and browse. Nothing is uploaded; the file is read locally.
- Read the decoded contents. They appear as selectable text. If the code is a link, the full destination is shown and opening it takes a deliberate click.
- Copy it if you need it elsewhere. The copy button puts the raw contents on your clipboard.
How it works in your browser
Your image is read with the browser's own file API, drawn onto a canvas element, and handed to a QR decoder — jsQR — as raw pixel data. The decoder locates the three large square finder patterns in the corners, works out the grid alignment from them, reads the modules, and applies Reed–Solomon error correction to recover the payload. All of that is JavaScript executing in this tab.
The consequence worth caring about is what does not happen. There is no upload endpoint, so there is no copy of your screenshot on someone's server, no retention window to read about in a privacy policy, and no log tying that image to your IP address. The decoder itself is fetched once from a public CDN and then cached by your browser, which is why the page keeps working with the network disconnected.
If you would rather verify that than believe it, open your browser's network panel, read a code here, and watch what requests are made. The proof of privacy page walks through exactly that.
Malicious QR codes, and why this page shows you the link first
A QR code is not readable by a human. That is the entire problem. Every other link you are asked to click, you can look at first; a QR code hides its destination until you have already committed to going there. Phishing that exploits this has a name — quishing — and it is common precisely because it is cheap: a sticker over the legitimate code on a parking meter, a charging point or a restaurant table costs nothing and is very hard to spot.
What the destination usually is: a convincing copy of a payment page, a login page for a service you actually use, or an app install prompt. What makes it work is that scanning and opening are normally the same gesture.
This page separates them. The decoded URL is displayed in full, as text, and nothing is loaded until you click. Things worth checking in that moment: is the domain the one you expected, or a lookalike with an extra word in it; is it a URL shortener hiding the real destination; does a payment link name the right merchant. If any of that is off, the correct action is to close the page and reach the service by typing its address yourself.
When a code will not read
- The code is too small in the frame. A decoder needs several pixels per module. A code that is 60 pixels wide in a screenshot of a full desktop rarely survives. Retake the screenshot zoomed in, rather than enlarging the small one afterwards.
- The quiet zone has been cropped. QR codes require a blank margin roughly four modules wide on all sides. Cropping tight to the black edge is one of the most common reasons a perfectly good code stops working.
- Contrast is too low. A pale grey code on a coloured background, or a photo taken in dim light, may not separate cleanly into dark and light modules. This page already retries with the image inverted, which handles light-on-dark codes.
- The photo is blurry or taken at a steep angle. Motion blur destroys module edges. Extreme perspective distortion defeats the grid estimate. Retaking the picture squarely, in better light, fixes more cases than any software setting.
- The code is physically damaged or overprinted. QR codes carry error correction and tolerate a surprising amount of damage — up to about 30% at the highest level — but past that the data is gone and no reader will recover it.
- There is more than one code in the image. Only one is returned. Crop to the one you want.
Next steps
- Make a QR code — the other half of this: encode a link, some text, a Wi-Fi network or a contact card.
- Resize an image — enlarge a small code before reading it, or produce a code image at an exact size for print.
- Remove image metadata — a photo of a code carries the GPS coordinates of where you took it. Strip that before sharing the picture.
Next steps
Related tools
- make a code instead — the other half of the same task.
What to do with the result
- enlarge a small code first — a code only 60 pixels wide rarely decodes.
- strip the photo location — a picture of a code carries the GPS coordinates of where you took it.
Guides
- how to scan a QR code from an image — four methods, and how to check a link before opening it.
Browse all text and data tools, or see every QuickMerge tool.
Frequently asked questions
Decode the image before using its payload
The reader displays decoded text. It does not establish who created the code or whether a destination is trustworthy.
Keep the full code and border
Use a sharp image containing one complete QR code. Preserve the blank quiet zone and avoid glare, blur and clipped corners. Rotation or damage can prevent decoding; test the actual source.
Inspect the full result
A payload can be text, a URL, contact information or connection details. Review the value before opening or sharing it. Opening a URL is a separate network action and its destination may redirect or track visits.
For codes inside a PDF
Capture or export the relevant page as an image, then select it here. Decoding happens in the tab; this tool does not need to visit the decoded destination to display it.