QR code scanner and reader

Read QR codes from pictures or the camera. Links are shown, never opened.

Result

Choose, drop or paste a picture, or use the camera. The decoded text appears here.

What this tool does

It reads a QR code and shows you what is inside. Give it a picture that contains a code, from a file, a screenshot, the clipboard or a drag and drop, or point your device's camera at one. The decoded text appears at once. If the text is a known kind of thing, such as a Wi-Fi network, a contact card or a web address, the tool also lays it out as a small table so you can read it without squinting at raw characters.

Everything happens in your browser. The picture is decoded on your device and is never uploaded, and the camera picture is not recorded or sent anywhere. The camera is switched off as soon as a code is found, when you press Stop, and when you leave the page.

How to use it

  1. Choose a picture, drop one on the page, or paste a copied image (a screenshot works well). The result appears in a moment.
  2. Or press Scan with camera, allow the camera when your browser asks, and hold the code steady inside the frame. The first code it recognises is shown and the camera stops.
  3. Copy the text, or use the button that fits the kind of code: Open link, Open map, Write e-mail, Call number or Save as .vcf.

The camera needs a secure page (https) and your permission. If it is blocked or missing, the tool says so and you can still choose a picture instead. A picture with several codes in it lists them all when your browser can find more than one.

What it understands

In the codeWhat you see
A web addressThe domain, port, path and each query parameter, plus warnings
WIFI:T:WPA;S:name;P:password;;Network name, password, security type and whether it is hidden
A vCard or MECARDName, company, phones, e-mails, address, note, and a .vcf download
mailto:, tel:, sms:, geo:The address, number, message or coordinates
otpauth://The account, issuer, algorithm, digits and period of an authenticator setup
Anything elseThe text exactly as it was stored

The Wi-Fi format escapes the characters \, ;, ,, : and " with a backslash, and the tool undoes that, so a password such as a;b\c is shown as you would type it.

A QR code can hold any address, and you cannot tell by looking at it which one. Printed codes are sometimes covered with a sticker that points somewhere else, and a link may imitate a familiar site. So this tool never opens anything by itself. A web address is shown in parts (the real domain is the part just before the first single slash), with warnings when it is not encrypted (http), uses an international look-alike domain (it starts with xn--), carries a user name or password before the domain, or is just an IP number. Text that starts with javascript:, data: or file: is shown as plain text and gets no open button at all.

Check the domain, then press Open link yourself. It opens in a new tab with no information passed to the page you came from. If the code is a QR for a payment, a login or an app install, be as careful as you would be with a link in an unexpected message.

If a code will not scan

  • Too blurry or too far away. Each dark or light square in the code needs to be at least a couple of pixels wide. Take the picture closer, or crop it to the code with the image crop tool.
  • No empty border. The standard asks for a quiet zone of four squares around the code. A code cropped right up to its edge can fail.
  • Glare, a curved surface or a steep angle. Photograph the code straight on, and tilt the page away from lights.
  • Light code on a dark background. The tool tries both polarities, so this is usually fine, but very low contrast is not.
  • A barcode, not a QR code. This tool reads QR codes only. For making linear barcodes see the barcode generator.

A QR code carries error correction, so a code that is partly scratched, folded or covered can still be read: the four levels can repair roughly 7, 15, 25 or 30 percent of the code. To make your own, use the QR code generator.

How it reads the picture

If your browser has a built-in barcode detector, the tool uses it first because it is fast and works on camera frames. Many browsers do not have one, so a small open-source decoder (jsQR, about 57 KB compressed) is loaded the first time it is needed. A large photo is tried at its own size and then smaller, because a code that fills a twelve-megapixel photo is easier to find in a reduced copy. The decoder runs on your device, so the same picture gives the same answer here as anywhere else.

Frequently asked questions

Is the picture or the camera feed uploaded?

No. The picture is decoded in your browser and the camera frames are read in memory and thrown away. Nothing is recorded or sent. The only things fetched are this site's own code files, including the decoder when your browser needs it.

Why does it show a link instead of opening it?

Because you cannot tell where a QR code leads until you read it, and a sticker over a real code is a known trick. You see the real domain and any warnings first, and you open the link yourself with one explicit click.

Why does the camera not start?

The camera needs a secure (https) page, your permission, and a camera that no other app or tab is using. If your browser blocked the camera earlier, allow it for this site in the browser settings. You can always choose a picture instead.

Can it read a Wi-Fi QR code and show the password?

Yes. A Wi-Fi code stores the network name, password and security type as text, so this tool shows them and lets you copy the password. Only scan codes for networks you are allowed to join.

It says no QR code was found. What now?

Use a sharper picture taken closer, with the whole code and a small empty border in view. Crop out the rest of the page if it is busy. If the picture is a barcode rather than a QR code, this tool cannot read it.