IMG.DIY / Extras / QR Code Reader

QR Code Reader

Read the content of a QR code from a saved screenshot or photo — decoded locally, nothing uploaded.

QR Code Reader visual example
Privacy first: nothing is uploaded.

From input to result

Choose a file, make the change, and download the result. Processing stays in your browser.

QR Code Reader: 1 · Choose input
1 · Choose input
QR Code Reader: 2 · Adjust and process
2 · Adjust and process
QR Code Reader: 3 · Download result
3 · Download result

Got a QR code in a screenshot, a PDF, or a photo but no way to scan it with a second phone? Drop the image here and this reader decodes it on the spot, showing the exact text or link it contains.

The picture is processed entirely in your browser — no upload, no camera permission, no app. If the code is a link, you will see it as a clickable result, but nothing opens or connects unless you choose to.

How to use

  1. Add the imageDrag in, paste, or select a screenshot or photo that contains a QR code.
  2. Read the resultThe decoded text appears instantly. If it is a URL, a link is offered.
  3. Copy or openCopy the text with one click, or follow the link if you trust it.

A QR code is just an image, and often the image is already sitting on the device you'd normally scan with — a screenshot in your chat, a code on a PDF ticket, a 'scan to connect' Wi-Fi panel on your own laptop. This reader takes that image and decodes the code inside it, so you don't have to grab a second phone or hold one screen up to another. Drag a file in, paste it from your clipboard, or pick it from your photos, and the text inside the code appears right away.

Everything happens in your browser. The image is drawn to a canvas and decoded on the spot with the jsQR library — nothing is uploaded, there's no account, and once the page has loaded it keeps working with the network switched off. That matters because a QR can hold more than a link: a Wi-Fi password, a private URL, a login token, a contact card. If the decoded text is a URL you get a clickable link; otherwise you get the raw text and a copy button. It reads one code per image and works from a file rather than a live webcam — a deliberate trade to keep the whole thing on your device.

What people use it for

Read the Wi-Fi QR in a hotel or router screenshot without a second phone

Open the link in a QR that's on a PDF ticket you're viewing on the same laptop

Decode a 'scan to connect' code shown on your own screen during app setup

Pull the contact details out of a vCard QR someone messaged you

Check where a QR points before you visit it, by reading the URL first

Recover the text from a QR in an old saved photo when the printed original is gone

The QR code is trapped on the same screen you're reading it on

Here's a situation everyone runs into. A friend sends you a Wi-Fi QR code as a screenshot. A PDF ticket has a QR you need to open. An app shows a "scan to pair" code on your laptop. The catch is that the code is on the device you'd normally scan with — the phone displaying the screenshot can't point its own camera at itself, and holding a second phone up to your monitor to read a code that's already sitting in a file feels absurd. You have the image. You just need the text inside it.

That's exactly the gap this tool fills. You drag, paste, or pick an image file that contains a QR code — a screenshot, an exported graphic, a photo — and it decodes the code right there, showing you the text it holds. If that text is a URL, you get a clickable link (marked rel=nofollow); otherwise you get the raw contents and a copy button. No second device, no juggling.

Why decoding from an image beats the webcam here

Most "QR scanner" pages assume a live camera and a physical code in front of you. That's the wrong model when the code is already a file. Reaching for the webcam means asking for camera permission, aiming at a screen (which introduces glare and moiré patterns that make screen-to-screen scanning flaky), and needing a separate screen to show the code in the first place. When the QR is a screenshot or a PDF page, there is no physical code to point a camera at.

This tool deliberately reads from the image you provide instead of the live camera. That's a real trade-off, stated plainly: it will not open your webcam and scan a code held in your hand. If you have a physical code on a poster or a package, your phone's built-in camera app is the faster path. But for the common case — a code that's already an image on your device — reading from the file is both simpler and completely local.

The privacy angle most sites ignore

A QR code is not always a harmless link. It can encode a Wi-Fi network name and password, a private meeting URL, a one-time login token, a payment string, a vCard with someone's phone number and address. When you decode one of those on a typical online "QR reader," you upload the image to a server you don't control — and with it, whatever secret the code carries. For a Wi-Fi password or a login link, that's genuinely the wrong place to send it.

This tool draws your image to a canvas and decodes it with the jsQR library entirely inside your browser. Nothing is uploaded. There's no account and no backend, and once the page has loaded it keeps working offline — you can literally turn off Wi-Fi and it still decodes. The text inside the code never leaves your machine, which is the only sensible default for something that might be a password.

Getting a clean decode

The tool downscales large images to about 1600px for speed and tries both normal and inverted codes automatically (inversionAttempts: 'attemptBoth'), so light-on-dark codes work too. A few practical habits help when a code is stubborn:

  • Crop close. If the QR is a small square in a big screenshot, crop down so the code fills most of the frame. Tiny codes lost in a large image are the most common failure.
  • Favour contrast. A dark code on a light background reads best. Very low-contrast or washed-out codes are harder.
  • Kill the glare. For a photo of a code, avoid reflections and even lighting beats a bright hotspot across the pattern.
  • One code per image. The tool decodes a single QR per image; if a picture holds several, crop to the one you want.

Honest limits: it's image-based, not a live camera, and it reads one code at a time. Very small, blurry, or heavily stylised codes can occasionally fail even after a good crop. Compared to online decoders that upload your picture to read it, the trade you're making is clear — this one keeps the image, and whatever it encodes, on your own device.

Why IMG.DIY

From any image

Screenshots, photos, exported graphics.

Instant

Decoded on your device, no camera needed.

Link aware

URLs become a clickable result.

Private

The image is never uploaded.

FAQ

Can it scan from my webcam?
This tool reads from an image file you provide. That keeps it fully local and permission-free — take a screenshot or photo of the code and drop it in.
Why does it say no QR code was found?
The code may be too small, blurry, or low-contrast in the image. Crop closer to the code and try a sharper picture.
Does it work with coloured or logo QR codes?
Usually yes, as long as there is clear contrast between the modules. Heavily stylised codes can occasionally fail.
Is the image uploaded to read it?
No. Decoding happens in your browser with a local library; the image stays on your device.
Can it read a PDF that has a QR code inside it?
Not the PDF directly — feed it an image. Screenshot the part of the page with the code, or export that page as an image, then drop that image in. Cropping close to the code before you load it gives the cleanest decode.
The image has several QR codes. Will it read them all?
It decodes one code per image. If a picture holds multiple codes, crop the image down to just the one you want and decode it, then repeat for the next. This keeps each read unambiguous.
Can I decode a QR code I generated myself, to check it's correct?
Yes. Save or screenshot your generated code as an image and load it here — you'll see exactly the text it encodes, which is a quick way to confirm a code points where you intended before you print or send it.
Is there a way to decode a whole batch of code images at once?
No, it's one image at a time by design — the tool decodes locally in your browser with no queue or server. For a handful of codes that's quick; for large batches you'd want a dedicated script, but then your images would typically leave your device.

Related tools

Guides & tips