QR Code Scanner
Scan a QR code with your camera or from an image, and see where it goes before you open it.
You can also drag an image here, or paste a screenshot with Ctrl+V. Nothing is uploaded — decoding happens in your browser.
Runs the same safety analysis without needing the code itself.
What this code does
What It Does
This tool reads a QR code from your camera, an image file, a dragged screenshot or a pasted one, and then does the thing that actually matters: it tells you what the code contains and what following it would do, before you follow it. A QR code is opaque by design — you cannot see the destination by looking at it — and that opacity is exactly what QR phishing relies on. Everything happens in your browser; no image and no decoded value is ever sent to a server.
When to Use It
- You have been sent a QR code image and want to know where it leads without pointing your phone at it.
- You found a code stuck over the original on a parking meter or restaurant table and want to check it before paying anything.
- You are on a laptop with the code on screen, and photographing your own monitor with a phone is absurd.
- You are verifying a code you generated yourself, to confirm it encodes what you intended before printing it.
Worked Examples
A brand name hidden in a subdomain
Reads as PayPal at a glance. The site is actually owned by example-verify.xyz — everything before that is a subdomain the attacker chose freely. The analysis names the real owner, which is the only part that cannot be faked.
A punycode look-alike domain
This renders in the address bar as a word that looks like a familiar brand, using a non-Latin character that is visually identical to a Latin one. Flagged as a homograph, because reading the rendered name cannot tell you apart from the real thing.
An executable scheme
Blocked outright and never made clickable. A QR code containing javascript: has no legitimate purpose — the decoded text is still shown in full so you can see exactly what it was.
An open Wi-Fi network
Not a link at all, so nothing is opened. The analysis identifies it as a Wi-Fi join and flags that the network is unencrypted — which is what makes a code like this worth being sceptical about in a public place.
Common Mistakes
- Trusting a code because of where it is displayed. Stickers placed over legitimate codes on parking meters, menus and charging points are a well-documented scam. The physical setting tells you nothing about the destination — the decoded link does.
- Following a shortened link from a code without thinking. A shortener hides the real destination behind a domain you cannot evaluate, which is a reasonable thing on a poster and a red flag on anything asking for money or a login.
- Ignoring the domain because the page looks right. A convincing clone of a bank or delivery page is easy to build; the domain is the part that cannot be faked. This tool shows you the actual host and flags the subdomain tricks used to disguise it.
- Assuming a QR code can only contain a link. Codes can carry Wi-Fi joins, contact cards, calendar entries, SMS drafts, phone numbers and payment requests — some of which act with a single tap. The analysis names the type so nothing acts unexpectedly.
- Scanning a blurry photo and concluding the code is broken. Small codes inside large photos often fail on the first pass; this tool automatically retries at double size, but a sharp, close crop still reads far more reliably.
Features
How to Use
1. Click 'Scan with camera' and allow camera access, or choose an image file. 2. You can also drag an image onto the panel, or paste a screenshot with Ctrl+V. 3. Hold the code steady in the frame — the camera stops automatically once a code is read. 4. Read the analysis before doing anything: check the destination host and any warnings. 5. Use 'Open the link' only if the analysis raises nothing you are not comfortable with.
Frequently Asked Questions
Everything runs in your browser. Camera frames and chosen images are decoded in the page and never uploaded, nothing is stored, and the camera is switched off as soon as a code is found. Camera access requires a secure (HTTPS) connection — on an insecure page the image-file option still works. The safety analysis uses pattern-based heuristics and cannot guarantee a destination is safe; it flags known deception techniques, and a clean result is not a guarantee. Decoding uses the browser's built-in detector where available, otherwise the bundled jsQR library (Apache-2.0).