Somebody sends you a screenshot with a QR code in it. Your phone is in the other room, and even if it were not, pointing a camera at your own monitor to read a code that is already on the computer you are using is a strange thing to have to do.
You do not have to. A QR code in an image file is data you already hold, and reading it is a decode, not a scan. Here is how to do it, in order of how well it works.
Why the camera is no help here
Camera scanning is designed for the physical world — a poster, a menu, a parcel label. The camera's job is to find a code somewhere in a live scene, correct for angle and lighting, and read it. It is very good at that.
None of that applies when the code is already a file. There is no lighting to correct, no angle to straighten, no scene to search. Involving a camera adds problems instead of solving them: photographing an LCD panel introduces moiré interference from the screen's pixel grid, glare from whatever is behind you, and a focus system that hunts because it is inches from a flat bright surface. It is common for a code that decodes instantly from the file to be unreadable when photographed off a monitor.
The other reason to avoid the camera is what happens next. Scan an unknown code with a phone camera app and the destination is one tap away in a browser signed in to your accounts. That is precisely the wrong posture for a code whose origin you cannot verify. More on that below.
Method 1: read the image in your browser
The most direct route is to hand the file to something that decodes it. Open the QR code reader, drag the image onto the page, and the contents appear as selectable text.
Two things make this the default recommendation rather than one option among several. The first is that nothing is uploaded — the image is decoded by JavaScript in the browser tab, on your own machine, which matters because a screenshot containing a QR code is very often a screenshot of something private. A payment request, a boarding pass, a two-factor recovery code and a shared Wi-Fi password are all things people routinely send as pictures, and all things you would not choose to post to a stranger's server to find out what they say.
The second is that it does not open anything. The decoded destination is shown to you as text, and going there takes a separate, deliberate click.
The steps are unremarkable:
- Save the image. Right-click and save, or take a screenshot of the region containing the code. PNG, JPG, WebP, GIF and BMP all work.
- Drop it on the QR code reader. Drag it onto the box, or click to browse.
- Read the result. A link is shown in full with its domain called out. A Wi-Fi code is split into network name, password and security type. A contact card is broken into name, phone and email. Anything else appears as plain text.
- Copy it if you need it. The copy button puts the raw contents on the clipboard.
It also works with no network connection once the page has loaded, which is a reasonable sanity check on the no-upload claim by itself.
Method 2: photograph the screen
Worth naming because it is what most people try first, and worth being honest about: it works often enough that people keep doing it, and fails often enough to be frustrating.
If you are going to, the things that help are: enlarge the code on screen first so it fills more of the frame, turn your screen brightness down rather than up, hold the phone square to the screen rather than at an angle, and move back slightly so the camera can focus. If it still will not read, the file-based methods above and below are not a fallback — they are the better tool that you should have used first.
Method 3: what your operating system already has
Some of this is built in, though the coverage is patchy and none of it is as direct as it sounds.
Windows. There is no system-wide QR decoder for image files. The Photos app does not read them. What does work is opening the image in a browser tab and using a page like the one above, which is why that is method one.
macOS. Preview does not decode QR codes either, but the Live Text system will sometimes surface a link when a code is visible in Photos or Quick Look. It is inconsistent and it silently offers the destination as a clickable link, which returns you to the problem of opening something before reading it.
iOS and Android. Both can read a code from an image already in the photo library — iOS through Live Text in Photos, Android through Google Lens. This is genuinely useful when the code arrived on your phone in the first place. It does not help when the image is on a desktop.
The pattern is that the built-in options are strongest exactly where they are least needed, and absent where you actually have the problem.
Getting the code out of a PDF or a document
Codes inside PDFs are common — tickets, invoices, statements, event passes. The code is an image inside the document, so the task is to get it out as an image first.
Quickest route: take a screenshot of the region on screen. Zoom the PDF to a comfortable size first, because a code captured at 25% zoom will be too small to decode. Then drop the screenshot on the reader.
For a multi-page document, or a code you need at full resolution, convert the pages to images with PDF to JPG and read the page you need. That preserves the original resolution rather than capturing whatever your monitor happened to display.
If the code sits in a large page and the reader struggles, crop to the code — but leave a clear white margin around it, for reasons the next section explains.
When the code will not read
Nearly every failure is one of these, roughly in order of frequency.
The code is too small in the image. A decoder needs several pixels for each of the code's little squares. A code that is 60 pixels wide in a screenshot of an entire desktop does not have them. Retaking the screenshot zoomed in works; enlarging the small screenshot afterwards usually does not, because the detail was never captured.
The quiet zone has been cropped away. A QR code requires a blank margin around it roughly four modules wide. It is part of the specification, not decoration — it is how a decoder finds the code's boundary. Cropping neatly to the black edge is the single most common way to break an otherwise perfect code.
Contrast is too low. A grey code on a coloured background, or a photo taken in poor light, may not separate cleanly into dark and light. A good reader retries with the image inverted, which handles white-on-black codes.
Blur or extreme angle. Motion blur destroys the module edges the decoder is looking for. Severe perspective distortion defeats its grid estimate.
The code is damaged. QR codes carry Reed–Solomon error correction and survive a genuinely surprising amount of damage — up to about 30% obscured at the highest level. Past that, the data is gone, and no reader recovers it. A code with a logo pasted over the middle is a common casualty.
There is more than one code in the frame. Most readers return one. Crop to the one you want.
Check the destination before you open it
This is the part worth slowing down for, and it is a real argument for decoding on a computer rather than scanning with a phone.
A QR code is not human-readable. That is its whole problem as a security matter. Every other link you are asked to follow can be inspected first; a QR code conceals its destination until you have already gone there. Phishing built on this has a name — quishing — and it is popular because it is cheap. A sticker over the real code on a parking meter, an EV charger or a restaurant table costs nothing and is almost impossible to spot.
What tends to be on the other end: a convincing copy of a payment page, a login page for a service you genuinely use, or a prompt to install an app.
Reading the code from an image on a desktop separates the two steps that a phone camera merges. You get the URL as text, with nothing loaded. Then you can look at it. Things worth noticing in that moment:
- Is the domain the one you expected, or a lookalike with an extra word —
secure-yourbank-login.comrather than the bank's actual address? The domain is the part immediately before the first single slash, and everything after it can say anything at all. - Is it a shortener? A
bit.lyortinyurllink on a physical code hides the real destination for no legitimate reason most of the time. - Does a payment link name the right merchant, and the amount you expect?
- Is it a plain HTTP link asking for anything sensitive?
If any of that is off, close it and reach the service by typing its address yourself. Being able to make that judgement at all is the concrete benefit of decoding the image instead of scanning it — which is why the QR code reader shows the destination and waits, rather than helpfully taking you there.
Frequently asked questions
How do I scan a QR code from an image on my computer?
Save the image, then open the QR code reader and drag the file onto it. The code is decoded in your browser and the contents appear as selectable text. There is no system-wide QR decoder built into Windows, and macOS only handles it inconsistently through Live Text.
Can I scan a QR code from a screenshot?
Yes, and it is more reliable than photographing the screen. The code in a screenshot is exact pixel data with no glare, angle or focus problems. The only common failure is a code captured too small — zoom in before taking the screenshot rather than enlarging it afterwards.
Is the image uploaded when I read a QR code online?
It depends on the tool, and it is worth checking. Many QR readers upload the image to a server to decode it. The QR code reader here decodes in your browser instead, so nothing is transmitted — which matters, because screenshots containing QR codes are usually screenshots of something private.
How do I read a QR code inside a PDF?
Zoom the PDF to a comfortable size and screenshot the region containing the code, then decode that image. For a code you need at full resolution, convert the pages with PDF to JPG first and read the exported page image.
Why does my QR code image fail to scan?
Most often the code is too small in the frame, or the crop has cut into the quiet zone — the blank margin around the code that decoders use to find its edges. Low contrast, motion blur and physical damage account for nearly all the rest.
Is it safe to scan a QR code from an unknown source?
Scanning is safe; opening what it contains is the risk. Use a reader that shows the destination as text without navigating, then check the domain before you click. Codes tampered with by placing a sticker over a legitimate one — known as quishing — usually lead to a convincing copy of a payment or login page.
Can I read a Wi-Fi or contact QR code from an image?
Yes. Those codes contain structured text rather than a link, and a good reader will split a Wi-Fi code into network name, password and security type, and a contact card into name, phone, email and website.
In short
The short version: if the code is already a file, decode the file. It is faster, it works on codes a camera cannot manage, and it lets you see where a link goes before you decide to follow it.
Read a QR code from any image
Drop in a screenshot or photo. Decoded in your browser, never uploaded.
Open the QR code reader