How to Scan a QR Code on Any Device: iPhone, Android, Desktop, and Safely
Step-by-step ways to scan a QR code on iPhone, Android, and desktop, including scanning from a photo or screenshot, plus how to spot a malicious code before you tap.
Scanning a QR code is usually effortless: right up until you're on a laptop with no camera, or the code is inside a photo someone texted you, or a nagging voice asks whether this random code on a parking sign is safe to open. This guide covers every scanning situation across iPhone, Android, and desktop, including the ones the "just point your camera" advice skips, and finishes with the safety habits that keep a scan from becoming a scam.
The fastest way: your phone's built-in camera
On most modern phones, you don't need an app at all. The camera app reads QR codes natively.
iPhone (iOS 11 and later)
- Open the Camera app.
- Point it at the code. No need to take a photo, just frame it so the code is roughly centred.
- A notification banner slides in at the top. Tap it to open the link (or the action, a Wi-Fi join, a contact to save, and so on).
If nothing happens, check Settings → Camera and make sure Scan QR Codes is switched on. It's on by default, but it can get toggled off.
Android (most recent versions)
- Open the Camera app.
- Point it at the code and hold steady.
- Tap the link or prompt that appears.
Android is more fragmented than iOS, so if your camera doesn't detect the code:
- Try Google Lens: available in the Google app, the Photos app, and often as a shortcut in the camera. Point it at the code and it'll read it.
- Some phones have a dedicated QR shortcut in the Quick Settings panel (swipe down from the top).
- On older devices, the camera may not scan natively. Jump to the app section below.
When the code is already on your screen or in a photo
This is the case the camera can't help with. The code is a screenshot, a saved image, or on the very screen you'd need to point a camera at. You can't photograph your own display.
- iPhone / Android: Open the image in Photos, then use Google Lens (Android, and available in the Google app on iPhone) or, on newer iPhones, Visual Look Up / Live Text, which can detect a code inside a saved picture and offer to open it.
- Any device with the image file: Use a browser-based scanner. Drop or drag the image into the QR code scanner and it decodes the code right in your browser: handy when the code arrived as an email attachment, a PDF, or a screenshot, and nothing is uploaded to a server.
That browser route is the universal fallback: if you have the image, you can read the code, no camera required.
Scanning on a desktop or laptop
Desktops rarely have a camera pointed the right way, and even when they do, holding a printed code up to a webcam is awkward. The reliable desktop method is:
- Get the code as an image file. Save it, screenshot it, or download the PDF it's in.
- Open the QR code scanner in your browser.
- Drag the image in (or click to select it). The decoded content, usually a URL, appears, and you can read it before deciding to visit.
This is genuinely one of the safest ways to scan, because you see the destination as text first and choose whether to open it, rather than being whisked straight there.
What different codes do when scanned
Not every QR code opens a website. Depending on what's encoded, your device may offer to:
- Open a URL (the most common).
- Join a Wi-Fi network without typing the password.
- Save a contact from a vCard code.
- Start a payment, as with a UPI code, though your banking app still requires you to confirm and authenticate.
- Pre-fill a text, email, or phone number.
Your phone tells you which action it's about to take. Reading that prompt before you tap is the whole game, which brings us to safety.
Scanning safely: don't tap blind
A QR code is opaque to the human eye. You cannot tell from the pattern where it leads. That's convenient, and it's also exactly what makes malicious codes ("quishing," QR phishing) possible: a sticker slapped over a legitimate code on a parking meter or a poster can send you to a fake payment page. A few habits neutralise almost all of the risk:
- Read the URL before you open it. Both iOS and Android show the destination link in the prompt. Look at it. Does the domain match who you expect? A code claiming to be your bank that opens
secure-bank-login.xyzis a red flag. The desktop image-scan method above is ideal here because it shows the raw link as text first. - Be suspicious of stickers. A QR code that's clearly a sticker pasted over something else (on a payment terminal, a public sign, a package) deserves doubt. Tampering is a real tactic.
- Never enter passwords or payment details on a page you reached only via an unexpected code. If a scan lands you on a login or payment screen you weren't expecting, stop. Navigate to the site yourself instead.
- Watch for shorteners hiding the real destination. A shortened link in a code hides where you're actually going. Treat unexpected shortened links with extra caution.
- Keep your phone updated. Camera and browser security fixes matter. An up-to-date phone is a safer scanner.
None of this means QR codes are dangerous. The vast majority are exactly what they claim to be. It means you treat a scanned link with the same healthy scepticism you'd give a link in an email from a stranger: glance at where it goes before you commit.
Quick troubleshooting
- Code won't scan? Clean your camera lens, add light, move closer or further back, and hold steady. Low contrast or a damaged print is often the culprit: for why that happens, see best colors for scannable QR codes.
- Camera detects nothing at all? Use Google Lens (Android) or the browser QR code scanner with a photo of the code.
- Glare on a glossy code? Tilt it slightly to kill the reflection, or scan the matte edge.
What the browser scanner does with your image
Since I built the QR code scanner, a look under its hood. The page runs a JavaScript decoder called jsQR directly in your tab: a dropped or pasted image is drawn onto an invisible canvas, the pixels are handed to the decoder, and the raw text comes back without the file going anywhere. Camera mode asks the browser for the rear camera, decodes frames in a loop until one succeeds, then releases the camera immediately. One deliberate choice: the decoder attempts both polarities, so inverted light-on-dark codes that defeat some phone camera apps still read here. The honest limits: it decodes one code per image, and it needs a reasonably sharp, flat view. If it reports nothing found, re-shoot the code closer and straighter rather than retrying the same blurry frame.
Camera first, scanner when it isn't
On a modern iPhone or Android, scanning is as simple as opening the camera and tapping the prompt. When the code lives in a screenshot, an attachment, or on a laptop with no usable camera, drag the image into a browser-based QR code scanner and read the destination as text. And whatever the device, glance at where a code leads before you tap. That single habit is what turns effortless scanning into safe effortless scanning.
Sources
- QR code (Wikipedia)
- jsQR, the in-browser decoder the scanner runs on
Written by
Chandrabhan Shekhawat
Founder of Gigai Kripa Services. Builds the 250+ privacy-first browser tools on this site and writes the guides that go with them.
Never miss a guide
New tools and how-to articles land regularly. Follow along however you like. No inbox required.
Keep reading
qr-tools
How to Create a Wi-Fi QR Code: Share Your Network With a Scan
Make a Wi-Fi QR code so guests join your network by scanning. No typing passwords. How it works, the SSID/security fields, encoding gotchas, and print tips.
6 mins readqr-tools
Best QR Code Size for Print: Scan-Distance Rules That Actually Work
How big should a QR code be for print? The simple 10:1 scan-distance rule, minimum sizes, quiet-zone margins, and resolution tips so every code scans first time.
6 mins readqr-tools
Using QR Codes in Marketing Campaigns: Practical Use Cases and Honest Tracking
Where QR codes actually earn their place in a campaign, how to give people a reason to scan, and the honest truth about what static codes can and can't track.
7 mins read