QR Code Scanner
Decode a QR code from an image — upload a screenshot, photo or saved code and read what's inside before you open it. Runs entirely in your browser.
Read the code before the code reads you
Every QR code is opaque until something decodes it — which is exactly why sticker scams and parking-meter phishing work. This scanner turns that around: drop in a screenshot, a photo of a poster, or a code you saved, and it shows the literal payload — the URL, the Wi-Fi string, the contact card — before anything opens. If the content is a link, it renders as a link you can read end-to-end, not a button that fires you into it.
What makes a scan fail
Decoders need three things from the image: the full square including the blank quiet-zone margin (cropping eats it), enough resolution for the module grid (a 40-module code crammed into 100 pixels is mush), and contrast — dark modules on light ground. Glare, extreme angles and motion blur are the photo-mode killers; screenshots almost always decode cleanly.
Verify your own codes too
The same decoder powers the generator’s Test scan button — so if you made a code with a logo or in custom colours, this page is the second opinion: export it, drop the file in, confirm the bytes that come back are the ones you meant. Everything runs on-device; the image never leaves this tab. How the decoder works and where it comes from is documented in sources.
Frequently asked questions
How do I scan a QR code from a screenshot or file?
Drop the image onto the box above (or browse for it). The decoder — jsQR, an open-source QR reader — analyses the pixels in your browser and shows the exact text inside. If it's a URL, you get a clickable link so you can inspect the address before deciding to visit.
Why would I scan a code instead of just opening it?
Because QR phishing ('quishing') is a real pattern: a code on a parking meter, a shipping email or a sticker can lead anywhere. Reading the payload first lets you check the domain before your browser ever touches it. This scanner shows the raw text — no auto-open, no redirects.
My image won't decode — what's wrong?
The usual causes: the code is cropped (the quiet-zone border is missing), it's too blurry or small in the frame, heavy shadow/glare, or it's inverted (white on dark) — a case many decoders reject. Crop tighter to include the full square plus margin, or re-photograph square-on in better light.
Does the image get uploaded?
No. The picture is decoded by JavaScript on your device — jsQR is downloaded once, when you first use the scanner, then runs locally. Nothing about the image or its contents is transmitted. Cut the network after loading the page and scanning still works.
What kinds of QR content will I see?
Whatever the author encoded: usually a URL, but also plain text, Wi-Fi credentials (WIFI:…), contact cards (BEGIN:VCARD), mailto:, sms:, tel: or geo: payloads. The scanner shows the literal string, so Wi-Fi passwords and contact fields appear exactly as stored.