A QR code arrives as a screenshot, a forwarded photo, or a file in your downloads. The usual advice is to point your camera at it, and that fails when the code is on the same device as the camera. So you need a QR code scanner from image: something that reads the picture itself instead of a live camera.
There are four ways that work. The first three are about getting the picture read. The fourth is for the case where the picture is the problem, and for that one we ran a test.
The short answer
Pick by your situation
| Way | Works best when | What you need |
|---|---|---|
| 1. Browser scanner | You want to read the contents before anything opens | Any browser |
| 2. Phone photo tools | The picture is already saved on your phone | A recent phone |
| 3. Another camera | The picture is on a computer screen | A second device with a camera |
| 4. Fix the picture | The first three say nothing was found | An image editor, or just a crop |
If you only read one thing
Read the address before you open it. A code from a message or an email deserves more suspicion than one on a menu, and a scanner that shows you the text first is the safest way to find out where it goes.
Way 1: Drop it into a browser scanner
How to do it
Open our QR code scanner. You can choose an image file, drag one onto the box, or paste a copied image with Ctrl+V or Cmd+V. It reads the code and shows you what is inside. That is all a QR code scanner from image needs to do, and it works the same on an iPhone, an Android phone or a computer.
Why this is the safest way
The scanner shows the text of the code and only then offers a button to open a link, so you see the full address first. It also decodes the image in your browser, and our scanner page states that nothing is uploaded. That matters if the code holds something private, such as a WiFi password.
We tested it on two codes, one holding an ordinary address and one holding a short redirect style address. For each, it displayed the exact address inside the code.
If it says nothing was found
That almost always means the picture is the problem, not the code. Skip to Way 4.
Way 2: Use your phone's own photo tools
What to look for
Many recent phones can recognise a QR code inside a saved picture, either when you open it in the photo viewer or through a search by image feature. Where the option sits, and what it is called, depends on the phone and its software version.
What we could not check
We did not test specific phones for this article, so we will not name buttons we have not pressed. Our guide to scanning a QR code from a screenshot covers the iPhone and Android routes in more detail. If your phone does not offer anything, Way 1 works on any phone with a browser.
Way 3: Point another camera at the screen
When to use it
If the picture is on a computer screen, a second device solves the problem the first one cannot: it can point its camera at the screen.
Steps
- Open the picture and make it as large as the screen allows.
- Turn the screen brightness up.
- Point the second device's camera at the code and hold it steady.
Tips
Avoid glare from windows or lamps, which wash out the code. Do not zoom the picture past the point where its edges go soft, because a blurred code is harder to read, as we measured in why won't this QR code scan.
Way 4: Fix the picture, then try again
What we tested
We took one QR code and spoiled it eight ways: three sizes of small picture, no blank margin, a tiny code inside a screenshot, low contrast, inverted colours, and a blurred noisy photo. Then we applied a quick fix and tried again. Every picture held the same code, and we read each one with two software decoders, OpenCV and jsQR. These are software tests, not phones, and they do not always agree with each other.
| Problem | Fix | Before (OpenCV / jsQR) | After (OpenCV / jsQR) |
|---|---|---|---|
| Small picture, 90 px wide | Enlarge it and sharpen | Reads / Reads | Reads / Reads |
| Small picture, 70 px wide | Enlarge it and sharpen | Fails / Reads | Fails / Reads |
| Small picture, 55 px wide | Enlarge it and sharpen | Fails / Reads | Reads / Reads |
| No blank border | Add a white border | Fails / Reads | Reads / Reads |
| Code tiny inside a screenshot | Crop to the code | Reads / Reads | Reads / Reads |
| Low contrast grey | Boost the contrast | Reads / Fails | Reads / Reads |
| Light code on dark | Invert the colours | Fails / Fails | Reads / Reads |
| Blurred and noisy photo | Boost the contrast | Fails / Fails | Fails / Fails |
What helped
- Inverting a light on dark code. Both decoders failed it, and both read it once the colours were flipped. It was the clearest result of the test.
- Adding a white border. The code with no blank margin failed in OpenCV and read after we added one. A QR code needs a quiet margin around it, and cropped screenshots often lose it.
- Boosting contrast on a grey code. jsQR failed it and read it after the stretch.
- Enlarging a very small picture. At 55 pixels wide OpenCV failed and then read after we enlarged and sharpened it.
What did not help
- The blurred, noisy photo. Both decoders failed it and both still failed after a contrast boost. Once the squares have smeared together, editing cannot bring them back. Ask for the original instead of a copy.
- Enlarging the 70 pixel picture. OpenCV failed it before and after. Enlarging helps only when there is still enough detail to enlarge.
- Cropping the code out of a large screenshot. Both decoders read it either way, because this code was a reasonable size inside the screenshot. Cropping matters when the code is tiny, and it never hurts.
The two decoders disagreed, so try a second scanner
jsQR read all three small pictures, including the 55 pixel one, and OpenCV did not read two of them. In our earlier size test a similar code stopped reading at 55 pixels, so the line depends on the decoder and the exact image. If one scanner says nothing was found, try another before you give up.
No picture yet? Scan with your webcam
If the code is printed and you are at a laptop, you do not need a picture first. The same scanner can read it live from your webcam.
How to do it
- Open the scanner and press Use camera.
- Your browser asks for permission to use the camera. Allow it.
- Hold the printed code in front of the webcam and keep it still.
The scanner page says the video never leaves your device. The permission prompt is the browser's, so you can refuse it, and the scanner then suggests uploading a photo instead.
What we tested
We cannot hold a code up to every webcam, so we did the next best thing. We started Chrome with a video file standing in for the camera, opened our live scanner page, pressed Use camera, and watched whether it read the code. We repeated it with the code filling less and less of the frame. This is a software test, not a real webcam.
Size in the frame
With a clean picture the scanner read the code at every size from 70% of the frame height down to 12%, and failed at 8%. At 12% on a 640 by 480 frame the code was only about 57 pixels wide. So in good conditions you do not need to hold the code close.
| Code size in frame | 70% | 50% | 35% | 25% | 18% | 12% | 8% |
|---|---|---|---|---|---|---|---|
| Scanner result | Reads | Reads | Reads | Reads | Reads | Reads | Fails |
Grain is what to watch
A real webcam in a dim room produces grain. To mimic that we added random noise to every pixel of every frame, 30 tries at each level.
| Code size | 0 | 1 | 2 | 3 | 4 | 6 | 8 | 12 |
|---|---|---|---|---|---|---|---|---|
| 70% of frame height | 30/30 | 30/30 | 30/30 | 30/30 | 30/30 | 0/30 | 0/30 | 0/30 |
| 35% of frame height | 30/30 | 30/30 | 30/30 | 30/30 | 30/30 | 0/30 | 0/30 | 1/30 |
| 18% of frame height | 30/30 | 30/30 | 30/30 | 30/30 | 30/30 | 14/30 | 10/30 | 11/30 |
It read every try up to a noise level of 4, then dropped sharply at 6. The larger codes failed outright, and the smaller one only wavered. Our scanner uses the jsQR decoder, and in a separate test OpenCV, a different decoder, read most of the same noisy frames at the larger sizes. So this is a property of one decoder, not of QR codes.
What to do with that. Do not trust our synthetic noise scale to match your webcam, because real cameras differ. The practical lesson is simpler: light matters, and if the live scan hesitates, take a photo or a screenshot and use Way 1, which does not depend on a live feed.
Tips for a better live scan
- Face a window or a lamp so the code is evenly lit, and avoid glare on glossy paper.
- Keep the code flat and steady, with its blank margin visible.
- If it will not read, move to a photo instead of holding the code in place for a long time.
Which way to pick
A simple order to try them in
| Situation | Try |
|---|---|
| The code came in a message and you want to check it first | Way 1 |
| The picture is in your phone's photos | Way 2, then Way 1 |
| The picture is on a computer screen | Way 3, or Way 1 on the computer |
| Nothing was found | Way 4, then a second scanner |
Why pictures fail to scan in the first place
The usual causes are size, blur, a missing margin and low contrast, and we measured each of them in why won't this QR code scan. Messaging apps also shrink pictures, so ask for the original file if you can.
Frequently asked questions
What is a QR code scanner from image?
It is a scanner that reads a QR code from a saved picture, such as a photo, a screenshot or a downloaded file, instead of from your camera. You give it the image and it shows you the text or link inside the code. Our QR code scanner works this way in any browser.
Can I scan a QR code from an image without another phone?
Yes. A browser scanner such as ours reads a picture saved on the same device, so you do not need a second one.
Is it safe to scan a QR code from an image?
Scanning is safe if you read the address before you open it. The risk is in tapping a link without looking. Our guide on whether QR codes are safe explains what to check.
Why does my scanner say no QR code was found?
Usually the picture is too small, too blurry, has lost its blank margin, is low contrast, or is light on dark. Each of those is in the test above.
Do I need to install an app?
Not for our scanner. It runs in a web browser, and you do not need an account.
Is my image uploaded when I scan it?
Our scanner page states that images are decoded in your browser and nothing is uploaded. You can check this yourself: load the page, switch off your internet connection, and scan a saved image. It still works.
Can I scan a QR code from a screenshot?
Yes, a screenshot is just a picture. If the code is small inside a large screenshot, crop to it first. Our screenshot guide goes through it.
Does it work on a phone?
Yes. The same page works in a phone's browser, with the choose image option for saved pictures and the camera option for printed codes.
Why will my webcam not read the code?
The usual causes are dim light, glare, a code held at an angle, or a missing blank margin. In our fake webcam test grain was the main thing that broke reading, so improve the light first.