Scan a QR code from an image or screenshot

Drop a screenshot or photo with a QR code

or click to choose — or press Ctrl+V to paste a screenshot. Every code in the picture is read.

Drop a screenshot or a photo, paste one with Ctrl+V, or point your webcam at the code. Every QR code in the picture is read, not just the first one, and nothing is opened for you: a link shows the site it actually goes to, with a warning when the address uses a shortener, a look-alike letter or an @ trick. Wi-Fi codes show the network and password, and payment codes show who would be paid. The picture is read on your device and never uploaded.

How to scan a QR code from a picture

  1. Drop a screenshot or photo into the box above, choose one, or press Ctrl+V (Cmd+V on a Mac) to paste a screenshot straight from the clipboard.
  2. Or press Use camera and hold the code up to your webcam. The camera stops by itself as soon as a code is read.
  3. Each code found is numbered on the picture and listed underneath with what it contains: the site a link goes to, the network and password of a Wi-Fi code, the payee of a payment code.
  4. Copy the text, or press Open link once you are happy with where it goes. Several codes can be copied together or saved as a CSV list.

On a laptop, the screenshot route is usually the quickest: Win+Shift+S on Windows or Cmd+Shift+4 on a Mac, drag over the code, then paste it here. No file is saved anywhere.

A picture with more than one code

Concert tickets, boarding passes for a family, a sheet of product labels, a slide with a code for each link: plenty of pictures hold several QR codes, and most scanners return one of them or nothing at all. We tested why with jsQR, the open-source decoder this page is built on. A QR code is found by its three big corner squares, and with two or more codes in view the decoder pairs up squares that belong to different codes, then gives up.

Test pictureCodes in itjsQR on the whole pictureThis page
One code, 400 × 400111
Two codes side by side202
Two codes with the same link (two identical tickets)202
Three codes in a row303
Six codes in a 1920 × 1080 screenshot606 (about 2 seconds)
Light code on a dark background11, only when inverted reading is switched on1
Code turned 25°111

Covering the first code and reading again does not help, because the first read already returns nothing. So this page looks for the patterned areas first: every QR code is surrounded by an empty margin, so the picture is split into separate busy regions at a few different scales, and each region is handed to the decoder on its own. Two codes with the same content in different places are counted twice, because two tickets are two tickets. The test pictures and the script are generated from the same QR library our QR Code Generator uses, so anyone can repeat them.

A QR code hides its address until your phone opens it, which is why fake parking-meter stickers, “your parcel is waiting” letters and emails asking you to scan a code to keep your account are such a common trick. Here nothing opens by itself. Each link shows the site it goes to, with the part that decides who owns it in bold — in login.example.com.secure-check.net that is secure-check.net, not example.com. The page also says when:

  • The site name uses letters from another alphabet. A Cyrillic “а” looks identical to a Latin “a”, so a fake site can be spelled to look exactly like a real one. The page shows the name as it really is.
  • A company name sits in front of an @. In https://www.paypal.com@login-check.example/ everything before the @ is ignored; the link goes to login-check.example.
  • The link uses a shortener or a QR redirect service. The real destination is decided when the link is opened, so neither you nor this page can see it in advance.
  • The address is a bare number instead of a site name, uses plain http, carries a second address inside it, or points straight at an app or a file to download.

These checks read the address, not the site behind it. A clean result means the address is what it looks like, not that the site is honest — you still need to recognise the name in bold.

What else a QR code can hold

Code typeWhat the page shows
Wi-FiNetwork name, password and security type, with a button to copy the password
Contact card (vCard, MeCard)Name, phone, email and company, and a .vcf file to add to your contacts
Calendar eventTitle, start, end and place, and an .ics file for your calendar
UPI payment (India)The UPI ID and name that would be paid, and the amount if it is fixed
SEPA transfer (EPC, Europe)Payee, IBAN, amount and reference
Two-factor login key (otpauth)Account and issuer; the secret itself is masked on screen
Email, phone, text message, map locationThe address or number, with a button that opens the right app
Plain text or binary dataThe text, or the bytes in hex when it is not text

Two of these deserve a pause. A screenshot of a two-factor setup code is as good as the key itself, so delete it once the account is in your authenticator app. And a UPI code always pays out: nobody needs you to scan a code, or type your PIN, for you to receive money.

When a code will not read

A QR code is a grid of small squares, and the reader needs about two pixels for each one. A code that is tiny inside a large screenshot, or photographed from across a room, may simply not have that many. Zoom in before taking the screenshot, or take the photo closer and straight on, with no glare across the code. A PNG saved with a transparent background is put on white before reading, because see-through pixels are read as black and the code becomes a black square. If you made the code yourself and it fails here, test it before printing with our QR Code Generator, which reads back every code it makes.

Frequently asked questions

Can it read several QR codes in one picture?

Yes, and that is the main reason this page exists. jsQR, the open-source decoder this page is built on, reads nothing at all when a picture holds two or more codes: in our test, pictures with 2, 3 and 6 codes all returned zero results, because it mixes up the corner squares of different codes. This page first finds each separate patterned area and reads them one at a time, so a page of tickets or a screenshot with several codes gives you every one of them, numbered on the picture.

Is it safe to scan a QR code from an email or a message?

Reading the code is safe; opening the link is the part to be careful with. QR codes in emails, parking meters and letters are a common way to send people to fake login and payment pages, because you cannot see the address before your phone opens it. Here nothing opens until you press the button, and the page shows the site the link really goes to, with the part that decides the owner in bold. It also warns about link shorteners, look-alike letters from other alphabets, addresses that put a real company name before an @, bare IP addresses and links that download an app or a file. None of that proves a site is honest; it shows you what the code is pointing at.

Why does my QR code PNG not scan anywhere?

If it was saved with a transparent background, a reader that ignores transparency sees black where the picture is see-through, so the code turns into a black square. We checked with jsQR: a transparent-background code read as nothing, and the same file put on white read at once. This page puts every picture on white before reading it, so transparent PNGs from generators and design apps read normally. If you made the code yourself, export it with a white background and a clear margin around it; printers and some phones have the same problem.

How do I scan a QR code on my laptop or PC?

Take a screenshot of it (Windows: Win+Shift+S, Mac: Cmd+Shift+4), come to this page and press Ctrl+V or Cmd+V. You can also drop a saved picture or press Use camera to hold a phone screen or a printed code up to your webcam. Chrome can also read a code from an image through Google Lens, but that sends the picture to Google; here it stays on your computer.

What does a Wi-Fi QR code contain?

The network name, the password and the type of security, in plain text. That is why anyone who photographs the card on a cafe wall has the password. The page shows all three and has a button to copy the password, which is handy on a laptop that cannot scan the code itself.

What is a UPI QR code and why the warning?

UPI codes are payment requests used across India: scanning one opens your payment app with the payee and sometimes an amount filled in. Scanning a UPI code always sends money from your account. A common scam is a buyer or a fake refund agent who sends a code and says you need to scan it to receive money - you never do. The page shows the UPI ID and the name the code will pay so you can check them first.

Why can it not read my code?

Most failures are a picture that is too small or too blurry: a QR code needs roughly two pixels for every small square, so a code shrunk inside a large screenshot or photographed from across a room may not have enough detail. Try a sharper photo taken straight on, without glare over the code, or zoom in before taking the screenshot. Codes on curved bottles, very damaged prints and codes with a large logo covering a corner square can also fail. Barcodes (the striped kind) are a different format and are not read here.

Is the picture uploaded?

No. The image is decoded by your own browser with JavaScript, in a background worker on this page. Nothing is sent to us or anyone else, which you can check by turning off your Wi-Fi after the page has loaded and scanning again. The camera picture also stays on your device.