# Read a QR Code from an image or a screenshot

> Decode a QR Code from an image or screenshot right in your browser. Recognises URL, Wi-Fi, vCard, SEPA and text. No upload, nothing sent to a server.

Free in-browser tool (no upload): https://www.mauriziofonte.it/tools/qr-code-reader

Decode a **QR Code** from an image or screenshot, no camera needed. The tool reads the code and **recognises the content type**: web link, **Wi-Fi** network, **vCard/MeCard** contact, **SEPA** transfer or plain text, presenting it in readable form. The image is processed **in the browser**: it is never uploaded to any server and no data leaves the device.

## How to decode a QR Code from an image

1. **Load the image** - Drop a photo, a screenshot or a QR export into the drop zone, or click to select the file. No camera required.
2. **Automatic reading** - The tool draws the image onto a canvas as pixels and locates the QR Code, decoding its content. It works best with sharp, well-contrasted codes.
3. **Read the recognised content** - The text is shown both raw and interpreted: if it is a link you can open it, if it is a Wi-Fi network you see SSID and password, if it is a contact the vCard fields, and so on.
4. **Copy or open** - Copy the content with one click or, for links, open it in a new tab. Always check a link's destination before opening it.

## How decoding works and what a QR holds

A **QR Code** is a matrix of black and white modules that encodes data with redundancy, thanks to Reed-Solomon error correction, so it stays readable even when partly damaged. To decode it from an image, the tool draws it onto a **canvas**, extracts the pixels and looks for the QR finder patterns, rebuilding the grid and reading the bytes. No camera and no server needed: an image file is enough.

A QR's content is almost always **text**, but with conventions that signal its meaning. A link starts with `http`; a Wi-Fi network uses the format `WIFI:S:name;T:WPA;P:password;;`; a contact uses `vCard` or `MeCard`; a transfer follows the **SEPA EPC069-12** standard; there are prefixes for email (`mailto:`), phone (`tel:`) and location (`geo:`) too. The tool recognises these schemes and shows the fields in readable form, alongside the raw text.

Everything happens **in the browser**: the image is never sent anywhere. This matters most for security, because QR Codes are a common phishing vehicle (so-called *quishing*): being able to read a suspicious QR's destination **without pointing your phone at it** and without being redirected lets you check where it leads before deciding whether to trust it.

## Glossary

- **QR Code**: Quick Response code: a two-dimensional barcode that stores data in a matrix of modules. It includes error correction, so it stays readable even when partly damaged.
- **Error correction**: Redundancy (Reed-Solomon) built into the QR that lets it rebuild the content even with part of the code missing or dirty, up to roughly 30% depending on the level.
- **Wi-Fi format**: The WIFI:S:ssid;T:type;P:password;; convention used in QR codes to auto-connect to a network. The tool extracts SSID, security type and password.
- **vCard / MeCard**: Standard formats for contacts. A QR with vCard holds name, phone, email and other fields the phone can save to its address book from one scan.
- **SEPA EPC069-12**: The European standard for transfer QR codes: it holds beneficiary, IBAN and amount. The same format produced by this site's QR generator.
- **Quishing**: Phishing via QR Code: a seemingly harmless code that leads to a malicious site. Reading the QR's content before opening it helps unmask it.

## QR Code reader FAQ

### Is the QR image uploaded to a server?

No. The image is drawn onto a canvas and decoded in the browser. It is never sent anywhere. You can verify it in the Network tab of the developer tools or use the tool offline after loading the page.

### Why does it not recognise my QR?

Usually image quality: a code that is too small, blurry, skewed, low-contrast or surrounded by a lot of background. Try cropping the image around the QR only, increasing contrast, or using a higher-resolution version.

### Why read a QR from an image instead of with the phone?

Mostly for security. Pointing your phone at an unknown QR often opens the link immediately, exposing you to phishing (quishing). Decoding it here shows you the destination in clear, without opening it, so you can judge it before trusting it.

### Does it recognise SEPA transfer QR codes?

Yes. It recognises the SEPA EPC069-12 format and shows the transfer fields (beneficiary, IBAN, amount) in readable form. It is the same standard produced by this site's QR generator.

### Can I read several QR codes in one image?

The tool reads the main QR Code present in the image. If there are several, it is best to crop and load one code at a time for reliable results.

### Does it also read regular barcodes (EAN, Code 128)?

No, it is specific to QR Codes (two-dimensional codes). Linear barcodes like EAN or Code 128 use a different decoding and are not supported.

### Does it work offline?

Yes. Once the page is loaded, all decoding happens locally in the browser. You can turn off your connection and keep reading QR codes from your images.

---
Tool by Maurizio Fonte, senior backend engineer. All tools: https://www.mauriziofonte.it/tools/
