How to read a QR code from a screenshot or saved image
When the QR code is on a screen and you cannot point your camera at it, the upload-image flow works. Here is how, with the privacy implications spelled out.
Reading a QR code with your phone's camera is solved. Point, decode, done. Every modern iPhone and Android phone has this built into the camera app. The case where it gets awkward is when the QR code is already on a screen and you can't point your camera at it — a screenshot someone sent you, a QR embedded in a PDF, an image you saved from a website. You can't easily turn your phone around to take a photo of your own screen.
The common cases
- A screenshot a friend sent you. The QR for the Wi-Fi password at their café, or the QR for the event ticket, captured on their phone and texted to you.
- A QR code in a PDF. Many event tickets, boarding passes, and vouchers arrive as PDFs. The QR is rendered as an image in the document; you can't point your camera at the screen comfortably and getting the angle right is annoying.
- A QR code embedded in an email or web page. Marketing emails, conference confirmations, hotel bookings — all increasingly include a QR. Saving the image and scanning it is faster than the phone-aimed-at-screen dance.
- A QR code shown to you on someone else's device. Their phone screen, their laptop. Taking a screenshot, transferring it to your machine, and decoding is sometimes the path of least friction.
The browser-based decode workflow
Open our QR Code Reader. The tool has two modes: live camera (for in-person scanning) and image upload (for the cases above). Use the image upload mode.
- Take a screenshot of the QR code, or save the image from wherever it is.
- Drop the image into the "Upload image" tab.
- The tool decodes the QR using jsQR (a JavaScript QR decoder, ~50 KB) running entirely in your browser.
- The decoded payload appears below. For URLs, an "Open in new tab" shortcut is offered.
What kinds of payloads QR codes hold
QR is just a container — anything that fits in a few thousand bytes can be a QR payload. Common payloads:
- URL —
https://example.com/path. The most common QR content. Tool detects and offers a one-click open link. - Wi-Fi credentials —
WIFI:T:WPA;S:network;P:password;;. Phones recognize this format and offer "Join network". - vCard contact —
BEGIN:VCARD...END:VCARD. Some phones recognize and offer "Add to contacts". - Calendar event —
BEGIN:VEVENT.... iCalendar format, some phones offer "Add to calendar". - Geographic coordinates —
geo:lat,lon. Opens in maps. - Email composition —
mailto:address?subject=...&body=.... - Telephone dialing —
tel:+1234567890. - SMS composition —
sms:number?body=text. - Bitcoin / crypto payments —
bitcoin:address?amount=0.01. - Plain text — anything else.
Our tool displays the raw payload verbatim. Standard URL schemes get the "Open in new tab" link; non-URL payloads stay as raw text you can copy and use however the platform expects.
Image quality that works
QR codes are designed to tolerate damage and bad imaging. The error-correction levels (L, M, Q, H) bake redundancy into the QR so the decoder can recover even when parts are obscured. In practice:
- Screen screenshots: almost always work. Pixel-perfect rendering, high contrast.
- Photos of QR codes: usually work if the QR is reasonably centered and not too small in frame. Slight angle/perspective is fine.
- Heavily-cropped or zoomed images: usually work if you can still see all the QR corners.
- Very low-resolution images: may fail if individual QR modules are less than a few pixels wide.
- Photos where the QR is partially obscured: depends on the QR's error-correction level. Higher correction (Q or H) survives more damage.
Common pitfalls
No QR code detected. If the tool reports it can't find a QR, the image is too low-resolution, too angled, or the QR is partially missing. Try a higher-resolution version, or crop the image to just the QR area.
Wrong decoded value. Rare — if jsQR returns a value at all, it's usually correct (QR has error correction). If you get unexpected output, the QR payload may use a non-standard scheme; the tool decodes whatever's there, even if no consumer app recognizes it.
Multiple QR codes in one image. jsQR finds the first one it detects. Crop to one QR at a time if your image has multiple.
Live camera mode
For in-person scanning (when you actually do have a physical QR in front of you and
want to use a laptop camera instead of a phone), switch to "Live camera" mode. The
tool requests getUserMedia permission, opens your camera, and scans
every frame. The decoder stops the moment a QR is detected and the camera light
turns off — no continuous recording, no background process.
Live camera mode is convenient for laptop-based scanning but rarely beats the phone camera for handheld QR scanning. The phone is usually closer at hand, more portable, and has a better camera lens.
Alternative approaches and when to use them
- iOS Photos app: Live Text + Visual Look Up. On iOS 16+, open any image with a QR in the Photos app — long-press the QR to "Open URL" or copy the payload. Free, fast, runs on-device.
- Google Lens. Long-press in Chrome on a QR image and pick "Search with Google Lens" → it recognizes the QR. Free, but Google sees the image.
- zbar at the command line.
zbarimg image.png. Free, open-source, fast. Best for batch decoding. - Other browser-based decoders. Most are upload-based (your image goes to their server). Same caveat as every other "upload to a free online tool" flow.
Privacy considerations
QR codes sometimes contain sensitive payloads — Wi-Fi passwords, account recovery URLs, payment links, signed tokens. Uploading a QR image to a decoder service means handing those payloads to the service operator. For boring QRs (a marketing URL, a public event ticket), it doesn't matter. For Wi-Fi credentials or signed access tokens, it very much does.
The in-browser decoder runs jsQR in your tab. The image and the decoded value never leave your browser. Verify in DevTools — drop a QR image, see zero network requests after the static asset loads.
Related tools and guides
- QR Code Reader — the tool this guide covers.
- QR Code Generator — generate QR codes.
- EXIF Viewer / Stripper — strip metadata from photos.
Try it now: QR Code Reader
Scan a QR code with your camera or decode from an image — no app install
Open QR Code Reader