QR Code Scanner

Read what a QR code contains before you open it. From an image, a screenshot, or your camera.

Drop an image here, or paste one with Ctrl+V

works with screenshots and photos

By QRotto · Updated · 6 min read

Reading a code instead of making one

Every other tool on this site turns information into a QR code. This one goes the other way: give it an image and it tells you exactly what the code contains, in plain text, before anything opens.

That matters for two quite different reasons. The everyday one is that you cannot point a camera at your own screen, so a code sent in a message needs a different route. The more important one is safety: seeing the contents first is the single habit that defeats almost every QR scam.

Four ways to scan

What it tells you

The scanner does not just dump the raw string. It identifies what kind of code it is, because the contents mean different things depending on type:

TypeWhat you will see
Website linkThe full URL, plus a button to open it once you have read it
WiFi networkThe network name, the password in plain text, and the security type
Contact cardThe full vCard, name, phone, email and company
Calendar eventThe event title, start, end and location
Phone or SMSThe number, and any prefilled message
Plain textThe message exactly as encoded

The WiFi row is worth pausing on. A WiFi QR code carries the password as readable text, which surprises people. Scanning one here shows you exactly how exposed that password is to anyone who photographs the code.

Read before you tap. A link is only shown as a clickable button after you have seen the full address. If the domain is not what you expected, close the page. That one check defeats nearly every QR based scam, and it is the reason this tool never opens anything automatically.

Advertisement

Checking a code you did not create

Codes arriving by message, email or post deserve more suspicion than one printed on a menu, because you did not choose the source. Things worth looking at once the contents appear:

Our guide on spotting a malicious QR code goes through how these scams actually work, with a test we ran on two visually identical codes pointing at very different places.

When a scan fails

If nothing is detected, it is almost always the image rather than the code:

Interestingly, compression is rarely the problem. In the same tests, a code survived being saved as JPEG at quality 5. Size is what breaks scanning, not file size.

Privacy

Images are decoded in your browser. Nothing is uploaded, no file reaches a server, and camera video is processed frame by frame on your own device and discarded. Close the tab and there is nothing left anywhere.

That is the point of doing it this way. A WiFi password or a contact card read through an online scanner that uploads the image has been handed to a stranger. Here it has not left the machine you are sitting at.

Common questions

Does it work on a phone?

Yes, and the camera option is the natural one there. On a phone your own camera app may already read printed codes, so this is most useful for codes already saved in your photos.

Can it read a damaged or partly covered code?

Sometimes. QR codes carry error correction that recovers a limited amount of missing data, and the scanner will use it. But damage to a corner marker is usually fatal regardless of how much of the rest survives.

Can it read barcodes too?

No, QR codes only. Traditional barcodes use a different format entirely.

Why not open the link straight away?

Because that would defeat the purpose. The value here is seeing the destination before committing to it.

Need to make a code rather than read one? Start with URL, WiFi, vCard or text, or generate a whole list at once with the bulk generator. If you are scanning something from a screenshot, our guide on scanning from screenshots covers the platform specific shortcuts too.

QRotto

QRotto builds free browser based QR code generators and writes the guides that go with them. Every generator is verified by decoding the codes it produces and confirming the output matches the input exactly. See our editorial standards.