Read a QR code from a screenshot, a photo or your camera, and see exactly what it does before you act on it: where a link really goes, the WiFi password, the contact card, the event. Nothing opens until you press a button.
A screenshot, a photo or a saved QR image. You can also paste one with Ctrl+V (Cmd+V on a Mac).
Runs entirely in your browser. Images and camera frames are read on your device and never uploaded.
What a QR scanner actually reads
A QR code is a grid of dark and light squares called modules. The three large squares in the corners are finder patterns: a scanner looks for their 1:1:3:1:1 ratio of dark and light, uses them to work out where the code is and how it is rotated, then samples every module in the grid. The result is a string of bits holding the content plus Reed-Solomon error correction, the same family of maths used on CDs. Depending on the level chosen when it was made, a code survives roughly 7%, 15%, 25% or 30% of its area being damaged or covered, which is why a logo in the middle does not stop it working.
None of that needs a camera. The decoder only needs pixels, so a screenshot, a photo or a saved image works as well as a live view, and often better, because it is sharp and still. This page finds the code, corrects any errors, and hands back the exact text stored inside.
What a QR code can hold
Every QR code is just text. What your phone does with it depends on how that text starts, which is why the same scan can open a website, join a network or start a payment.
| Text starts with | What it is | What a phone offers to do |
|---|---|---|
| https:// or http:// | A web link | Open the page |
| WIFI: | A network name and password | Join the network |
| BEGIN:VCARD or MECARD: | A contact card | Save the contact |
| mailto:, tel:, SMSTO: | An email, a phone number or a text message | Open a pre-filled email, call or text |
| geo: | Map coordinates | Show the place on a map |
| BEGIN:VEVENT | A calendar event | Add it to your calendar |
| otpauth:// | A two-factor login secret | Nothing, unless scanned by an authenticator app |
| bitcoin:, ethereum: | A payment request | Open a crypto wallet with the amount filled in |
Anything else is plain text. This tool reads all of these, lays out the fields in plain language, and offers the matching action, a .vcf contact file or an .ics calendar file, without carrying any of it out for you.
Checking a link before you open it
A QR code hides its destination until it is scanned, and that is exactly what makes it useful to scammers. Fake stickers placed over real codes on parking meters, car chargers and restaurant tables send people to lookalike payment pages. Phishing emails carry a QR code instead of a link, because a link inside an image slips past the filters that check links in text. The address is the one piece of evidence you have, so this tool shows it in full and highlights the registered domain: the part someone actually bought, just before the first single slash. In paypal.com.account-check.net/login that is account-check.net, not PayPal.
- Text before an @ sign. In
https://yourbank.com@other.siteeverything before the @ is treated as a login name, and the browser goes toother.site. - Lookalike letters. A Cyrillic “а” looks identical to a Latin “a”. The tool decodes these internationalised names (they start
xn--underneath) and flags any that mix alphabets. - Short links and QR redirect services. Many legitimate menus and posters use them, but the real destination is invisible until you open it and can be changed later by whoever controls it.
- Plain http, or a bare number instead of a name. The first sends whatever you type unencrypted; the second leaves you nothing to check.
HTTPS means the connection is private, not that the site is honest. A clean result here is a reason to look more closely at the name, not a guarantee.
Why a code will not scan
Most failures come down to too few pixels per module. A code photographed from across a room may be only a few dozen pixels wide, which blurs neighbouring modules together; cropping closer or moving nearer fixes it. Glare, a curved surface such as a bottle, or a steep angle distorts the grid. A code printed without its quiet zone, the blank margin about four modules wide around it, can merge into its background. Pale colours, or a code whose logo covers more than its error correction can repair, may be unreadable to every scanner. Light-on-dark codes are fine here: each image is also tried with its colours inverted. If you are making codes, the QR code generator test-scans every code before you download it.
What happens to your image
The image you choose or paste is drawn onto a canvas inside this page and read there. It is not uploaded and nothing is kept once you leave. The camera works the same way: frames are read in the page, never recorded, and the camera switches off as soon as a code is found, when you press Stop, or when you switch tabs. Opening a link or a map is an ordinary visit to that site, which is why it always waits for you to press a button. To pick apart a long link's parameters, use the URL encoder and decoder, and for the stripes on a product, the barcode generator explains each format.

