Free tool

QR code reader: see what a code contains before you follow it

Drop in a photo or a screenshot and read the code without pointing a second phone at your own screen. The reading happens in your browser, so the image never leaves your machine.

The tool

Read a code

Drop an image here

or paste a screenshot with control and V, or choose a file

PNG, JPEG, WebP, GIF. Nothing is uploaded.

And why it is private

How it works

Your browser draws the picture onto a canvas and looks for the three square finder patterns that mark the corners of a QR code. All of that runs on your own device. There is no upload, no queue and no copy of your image on anyone's server.

That matters more than it sounds. The common reason to look a code up rather than simply scan it is that you do not yet trust it. Sending the picture to a stranger's server to find out is a strange way to answer that question, and most free decoders do exactly that.

A clean export reads on the first try. A photograph often does not, so it keeps going: the whole frame, then the same frame read as light on dark, then the middle of the picture for a code shot from a distance, then an enlarged copy for a code that is only a few dozen pixels across, then each quarter in turn, and finally with the contrast forced to hard black and white at five different thresholds for a picture taken in shadow. It tells you which pass worked.

The real question

Checking a code you did not make

A printed square gives you no way to tell where it goes. That is the whole trick behind codes stuck over real ones on parking meters and restaurant tables: the sticker looks like it belongs there, and a phone camera will happily open whatever it finds.

Reading the code first turns that around. This page shows the full web address, names the site it goes to, and points out the things worth a second look rather than making the judgment for you:

  • A shortened link forwards somewhere the code does not name, so the square tells you nothing about the destination.
  • A web address using non-Latin characters is normal for some languages and is also how a convincing look-alike domain gets built.
  • A username before the domain can make a link read as one site while going to another. The real destination is whatever follows the last at sign.
  • An http address carries anything you type on the page unencrypted.
  • A payment request in a cryptocurrency code cannot be reversed once sent.

None of those mean a code is bad, and this page does not pretend to tell you that. They are the facts a person needs in order to decide, printed next to each other, which is more than a bare string gives you. Nothing opens on its own, and following a link is a separate, deliberate click.

Not all links

What a code can contain

Most codes hold a web address, but a QR code is really just a container for text, and several agreed formats sit inside it. This reader recognizes each one and splits it into fields instead of printing the raw string.

  • Web address. Opens a page.
  • Wi-Fi. Network name, security type and password.
  • Contact card. A name, phone, email and company to save.
  • Email. A ready-made message with a subject and body.
  • Phone or text. A number, sometimes with a message.
  • Map location. A latitude and longitude.
  • Calendar event. A title, a time and a place.
  • Plain text. Words with nothing to open.

A Wi-Fi code is the one worth reading rather than scanning. It carries the password in plain text, so anyone who photographs the little card on the counter has your network password, whether or not they ever scan it.

And what to do

When it will not read

  1. The code is too small in the picture. A code needs a reasonable number of pixels per square. Crop in before you try again, or take the screenshot at full size rather than scaled down.
  2. Part of it is cut off. A QR code needs all three corner squares and a clear margin around the pattern. A crop that trims the edge makes it unreadable.
  3. It is at a sharp angle. Readers cope with a little perspective and not a lot. Photograph it square on.
  4. There is glare across it. A gloss finish under a ceiling light wipes out part of the pattern. Tilt away from the light rather than toward it.
  5. It is not a QR code. A Data Matrix square on a small part and a striped product barcode are different formats, and this reads neither. The difference is in Data Matrix versus QR code.
  6. The code itself is damaged. QR codes carry error correction and survive a surprising amount, but a torn or heavily overprinted one eventually passes the limit.

If you are trying to read your own code because you are not sure it works, that is the wrong test. Why a QR code will not scan covers the print-side causes, which are a different set of problems from a bad photograph.

Questions people ask

Does my image get uploaded anywhere?

No. The reading happens in your own browser using your device's processor. The picture is never sent to a server, which is the point: if you are checking a code because you are not sure about it, handing the image to a stranger is an odd way to find out.

How do I scan a QR code that is already on my screen?

Take a screenshot, then drop it here, or copy the image and paste it with control and V. You do not need a second phone pointed at your own monitor, which is what most people end up doing.

Can it read a photo of a code on a poster or a sign?

Usually. A photograph is harder than a clean export because of angle, shadow and distance, so it tries the whole frame first, then the middle, then each quarter, then with the contrast forced. It says which of those worked.

Will it open the link for me?

Not on its own. It shows you the address in full and points out anything worth knowing, like a shortener that hides the destination or a web address using non-Latin characters. Following it is your decision, made with the information in front of you.

Can it read a barcode as well?

No, only QR codes. The striped barcode on a product and the Data Matrix square used on small parts are different formats and need a different reader.

Why does it say the code holds Wi-Fi details rather than a link?

Because a QR code can hold several kinds of thing. A Wi-Fi code carries a network name, a security type and a password; a contact card carries a name and a phone number. It reads those into separate fields rather than printing the raw text.

Making one, rather than reading one

The free QR code generator makes a code in about ten seconds with no account. If the thing it points at might move later, a dynamic code can be re-pointed after it is printed, which is covered in static versus dynamic QR codes.