Scan a QR Code From an Image: 4 Ways That Work

The code is in a picture, and you cannot point a camera at your own screen. Here are four ways to read it, and what to do when the picture will not scan.

Open the free QR code scanner

By QRotto · Published · 8 min read

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

WayWorks best whenWhat you need
1. Browser scannerYou want to read the contents before anything opensAny browser
2. Phone photo toolsThe picture is already saved on your phoneA recent phone
3. Another cameraThe picture is on a computer screenA second device with a camera
4. Fix the pictureThe first three say nothing was foundAn 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

  1. Open the picture and make it as large as the screen allows.
  2. Turn the screen brightness up.
  3. 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.

Eight problem pictures of the same QR code, each with its fix and the result from two decoders. Small pictures, a missing border, low contrast and light on dark codes were rescued by enlarging, adding a border, boosting contrast or inverting. A blurred and noisy photo failed before and after.
The same code, eight problems. Four fixes changed the result. One picture failed in both decoders, before and after.
ProblemFixBefore (OpenCV / jsQR)After (OpenCV / jsQR)
Small picture, 90 px wideEnlarge it and sharpenReads / ReadsReads / Reads
Small picture, 70 px wideEnlarge it and sharpenFails / ReadsFails / Reads
Small picture, 55 px wideEnlarge it and sharpenFails / ReadsReads / Reads
No blank borderAdd a white borderFails / ReadsReads / Reads
Code tiny inside a screenshotCrop to the codeReads / ReadsReads / Reads
Low contrast greyBoost the contrastReads / FailsReads / Reads
Light code on darkInvert the coloursFails / FailsReads / Reads
Blurred and noisy photoBoost the contrastFails / FailsFails / Fails

What helped

What did not help

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

  1. Open the scanner and press Use camera.
  2. Your browser asks for permission to use the camera. Allow it.
  3. 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.

Results of feeding our online scanner a fake webcam. A clean video was read with the code at 70, 50, 35, 25, 18 and 12 percent of the frame height, and not at 8 percent. A second test added random grain: the scanner read 30 of 30 tries up to a noise level of 4, then failed at 6 and above for larger codes.
Top: how small the code can be in a clean frame. Bottom: how much grain it takes before reading breaks down.

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 frame70%50%35%25%18%12%8%
Scanner resultReadsReadsReadsReadsReadsReadsFails

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 size012346812
70% of frame height30/3030/3030/3030/3030/300/300/300/30
35% of frame height30/3030/3030/3030/3030/300/300/301/30
18% of frame height30/3030/3030/3030/3030/3014/3010/3011/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

Which way to pick

A simple order to try them in

SituationTry
The code came in a message and you want to check it firstWay 1
The picture is in your phone's photosWay 2, then Way 1
The picture is on a computer screenWay 3, or Way 1 on the computer
Nothing was foundWay 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.

QRotto

QRotto builds free browser based QR code generators and writes the guides that go with them. Every generator is verified by decoding the codes it produces and confirming the output matches the input exactly. See our editorial standards.