QR Code Reader From an Image — Free, No Signup
Read a QR code out of an image file. This is the case a phone camera cannot handle: the code is already a screenshot, a saved photo, or an attachment, and there is nothing physical to point a lens at.
How to do it
- Drop the screenshot or photo containing the QR code.
- Wait a moment while the code is decoded in the page.
- Read the decoded text or link that appears.
- Open or copy it. Check any link before visiting it.
The screenshot problem
QR codes assume you have a camera and the code is on a surface in front of you. That breaks constantly. Someone sends you a code in a chat on the same phone you would scan with. A code arrives inside a PDF or an email. A code appears in a video you paused. In every one of those cases the code is already an image on your screen, and the camera app is useless. Screenshot it, drop the file here, and the decoder reads the pixels directly — which is what a camera was going to do anyway, minus the lens.
See the destination before you follow it
A QR code is opaque by design. You cannot tell by looking whether it points to a legitimate site or a phishing page, and malicious codes stuck over real ones on parking meters and restaurant tables are now a routine scam. Decoding to text first means you read the URL before deciding, rather than after your browser has already loaded it. If the decoded address does not match the organisation the code claims to represent, you have learned that at zero cost.
What decodes reliably
Clean screenshots decode instantly, because the pixels are exact. Photos of codes on screens or paper decode well when the code is roughly square-on, in focus, and occupies a decent portion of the frame. What fails: heavy motion blur, extreme angles where the finder patterns are distorted beyond recognition, very low resolution where individual modules blur into each other, and codes with more than about a third of their area obscured. QR has error correction built in, so partial damage is survivable, but not unlimited damage.
Improving a code that will not scan
Crop tightly to the code and nothing else — surrounding content gives the detector more places to look and more chances to fail. Make sure the quiet zone, the blank margin around the code, is included, because the detector uses it to find the boundary. If the image is small, do not upscale it; a blurry enlargement decodes worse than the original. If the photo is soft rather than small, the image enhancer's sharpening pass sometimes recovers enough module definition to make the difference.
QR only, and nothing leaves your device
This decodes QR codes specifically. Barcode symbologies like EAN, UPC, and Code128 use different encoding and are not handled. Input is capped at 5 MB. The decoder runs as WebAssembly inside your browser, so a code containing a payment link, a login token, or a ticket is read locally and never transmitted anywhere — which for exactly those payloads is the point.
Frequently asked questions
Can you scan a QR code from a screenshot?
Yes. Save the screenshot and drop it here. The decoder reads the pixels directly, which is what a camera does anyway, without needing a lens.
How do I scan a QR code that is on the phone I am holding?
Screenshot it and use this. The camera cannot see its own screen, which is why in-app codes are so awkward otherwise.
Does it read barcodes as well?
No. QR codes only. EAN, UPC, and Code128 barcodes use different encoding and need a different decoder.
Why will my code not decode?
Usually blur, an extreme angle, very low resolution, or a missing quiet zone. Crop tightly to the code and include the blank margin around it.
Is it safe to decode an unknown QR code here?
Safer than scanning it with a camera app, because you see the destination as text before deciding whether to visit it. Nothing is opened automatically.
Does my image get uploaded?
No. The decoder runs as WebAssembly in your browser, so codes containing payment links or tokens are never transmitted.