QR Code Reader

🔒 Runs in your browser — files are never uploaded

Read a QR code from a screenshot or photo and see exactly what's inside it — the full link, or who a payment would go to — before you act on it.

How it works
  • Select an image containing a QR code — a screenshot, a photo of a poster, a saved picture.
  • It decodes on your device and highlights where the code was found.
  • Read the contents. Links show their destination and payment codes show the payee before you do anything.

The point is seeing it first

A QR code is unreadable to a human. That is the whole problem with it: you point a camera at a square of noise and your phone immediately opens whatever it says. There is no step where you get to look first.

This puts that step back. Feed it a screenshot or photo and it tells you the destination, without opening anything. If it is a payment request, it shows you the payee and the amount before any money is involved.

Why this matters more than it used to

QR codes have become a standard attack route, because the format hides the destination by design:

  • QR tampering. A sticker placed over a shop's real payment code, so money goes to the wrong account. Common enough in India to have its own name.
  • Quishing. Phishing by QR — on a parking meter, a fake delivery notice, or an email attachment — precisely because you cannot see where the link goes.
  • Codes in emails and PDFs, which slip past filters that would have caught a suspicious text link.

Checking a code before scanning it costs ten seconds and defeats all three.

If you're paying by QR: check the name your app shows against who you are actually paying, every time. And be suspicious of any code that looks stuck on over another one — a genuine shop code is usually printed or laminated as part of a sign, not a loose sticker.

Getting a code to decode

If it does not read the first time, it is almost always the image rather than the code:

  • Include the whole code plus a margin. The blank border is part of the format and decoders need it.
  • Straight on, in focus. A steep angle distorts the grid; blur destroys it.
  • Big enough. A code occupying 50 pixels in a wide photo has nothing to work with. Crop closer and try again.
  • Avoid glare. A flash reflection on a laminated sign wipes out part of the pattern. Move slightly and re-shoot.

The tool tries several scales and both polarities automatically, so white-on-dark codes and awkward photos usually still work.

Nothing leaves your device

This matters here more than for most tools. People check QR codes precisely when something feels off — a suspicious email, an unexpected payment request, a code from a stranger. Sending that image to a server to be analysed rather defeats the purpose. The decoding runs in your browser; the image is never transmitted, and neither is what it contains.

Frequently asked questions

How do I read a QR code from a screenshot?
Select the image here. It decodes on your device and shows the contents as text — no camera needed, which is the point when the code is already on your screen.
Can I check where a QR code goes before opening it?
Yes, that is what this is for. The destination is shown as text and nothing is opened automatically. For links the hostname is highlighted so you can judge it before clicking.
Is it safe to scan QR codes?
Scanning is safe; acting on them blindly is not. QR tampering and QR phishing both work because the destination is hidden until you have already opened it. Reading the code first removes that.
It says no QR code found. Why?
Usually the image. Make sure the whole code plus its blank margin is visible, the photo is straight and in focus, and the code is not tiny within a large picture. Crop closer and retry.
Can it read a payment QR?
Yes, and it shows the payee name, UPI ID and amount before any payment app is involved. Always check that name against who you intend to pay.
Does it work with white-on-dark codes?
Yes. It tries both polarities and several scales automatically.
Is anything uploaded?
No. Every one of these runs in JavaScript in your browser — nothing is sent to a server. Load the page, disconnect from the internet, and it still works.