Skip to content
Processing locally — files never leave your device

QR Code Decoder

Upload a QR code image, paste a screenshot, or scan one live with your camera, and decode the embedded text instantly. Handles URLs, WiFi credentials, contact cards (vCard / MeCard), email and phone links, calendar invites, and plain text. Runs entirely on-device with the open-source jsQR library — nothing is ever uploaded.

How to use QR Decoder

  1. Upload a QR code image — a screenshot, a photo, or a saved PNG / JPG / WebP file.
  2. Or click "Use camera" to scan a printed QR code live. Allow camera access when your browser prompts.
  3. The decoded contents appear in the result box below — the raw text, URL, WiFi credentials, or vCard payload.
  4. If the result is a link, click it. If it is text, copy it with the Copy button.
  5. No image is uploaded — decoding runs locally with the jsQR library, on your device.

How QR code decoding works

A QR code is a 2D barcode invented by Denso Wave in 1994 to track car parts on a factory floor. The black-and-white squares are not random — they encode digital data using a strict spec (ISO/IEC 18004) covering character encoding, error correction, masking, and the three large "finder" squares in the corners that let a scanner orient the image even when it is rotated or skewed.

To decode (sometimes called decipher) a QR code, software reads the image, finds the three finder patterns, normalises the orientation, samples the grid, decodes the bit stream, applies Reed-Solomon error correction (which is why a QR code still scans with up to ~30% of its surface damaged or covered), and returns the embedded text. This tool does all of that locally in your browser using the open-source jsQR library.

What can a QR code actually contain?

QR codes just hold a string of text. The convention is that scanner apps recognise certain prefixes and offer to do something useful with them. The decoded payload here is the raw string — you can read it directly. Common formats:

  • URL: https://example.com — most QR codes you see on posters and menus.
  • Wi-Fi: WIFI:T:WPA;S:NetworkName;P:password;; — the encryption type, SSID, and password.
  • vCard contact: a multi-line block starting BEGIN:VCARD with name, phone, email, organisation.
  • Email: mailto:you@example.com?subject=Hello.
  • Phone / SMS: tel:+1234567890 or sms:+1234567890.
  • Calendar event: a BEGIN:VEVENT block (iCal format).
  • Geolocation: geo:37.7749,-122.4194.
  • Plain text: anything else — a note, a coupon code, a serial number.

Why decode QR codes on your computer instead of scanning with your phone?

Safety. Phone camera apps often auto-open the embedded URL. If a QR code on a poster or email is malicious, decoding it on your computer first lets you read the URL before deciding to open it. Treat QR codes from unknown sources the way you would treat shortened links — decode and inspect first.

Practicality. If the QR code is already on your screen (in an email, a PDF, a screenshot a friend sent), opening your phone camera to scan your monitor is awkward and often fails on reflective screens. Uploading a screenshot here is faster.

Privacy. Many free QR scanner apps upload your image to their servers, run analytics, or insert ads. This page does not — the image never leaves your device.

Going the other direction

Going the other direction? Use the QR code generator to create your own QR codes for URLs, text, email, or phone. For Wi-Fi codes specifically, the Wi-Fi QR generator builds a code that lets guests join a network without typing the password. For standard 1D barcodes (EAN, UPC, Code 128), see the barcode generator.

The QR Code specification is published by ISO/IEC as ISO/IEC 18004. The Wikipedia QR code article has a thorough technical breakdown of encoding modes, error correction levels, and version sizes if you want to go deeper.

Frequently asked questions

How do I decode a QR code from an image?
Click the file picker above and select the image — a screenshot, a photo from your phone, or any PNG / JPG / WebP. The decoder reads the image pixels, locates the QR pattern, and prints the embedded text below. It works on QR codes you have screenshotted from a webpage, photographed off a poster, or saved from a chat.
How do I decipher a QR code without scanning it?
That is exactly what this tool does. Upload the image and read the embedded text — no phone needed, no app to install. This is useful when you have a QR code on your computer screen (so your phone camera cannot easily scan it) or when you want to verify a QR code is safe before opening the URL on a phone.
Can it scan a QR code from my screen?
Yes. Take a screenshot of the QR code (PrtScn on Windows, Cmd+Shift+4 on Mac, or your phone's screenshot shortcut), save it, and upload it here. The decoder treats screenshots and photos identically.
What kinds of data can a QR code hold?
QR codes can encode URLs, plain text, contact details (vCard / MeCard), WiFi credentials (SSID + password + encryption type), email addresses, SMS templates, phone numbers, calendar events, and geolocation pins. The decoder shows you the raw payload — you can read it directly or paste it elsewhere to act on it.
Is it safe to scan a QR code on this site?
The decoder only reads the image — it does not follow URLs or auto-open anything. If a QR code contains a malicious link, you will see the URL text and can decide whether to open it. This is safer than scanning with a phone, which may auto-open the link in a browser.
Why does my camera not work?
Live camera scanning requires HTTPS and explicit user permission. Some browsers block camera access inside iframes or in private/incognito mode. If the camera button is greyed out, your browser does not expose the camera API. Upload an image instead, or open the page directly in Chrome, Edge, Safari, or Firefox.
Does my image get uploaded to a server?
No. Decoding runs in your browser with the open-source jsQR library. The image pixels are read into a canvas, processed on your device, and the decoded text is shown — nothing is sent to any server. You can verify this by opening your browser's network tab while you decode.
It says "No QR code found" — what went wrong?
A few common causes: the image is too blurry or low-contrast for the decoder to lock onto the pattern; the QR code is rotated more than the decoder can correct; part of the code is cropped or obscured; or the image is not actually a QR code (might be a Data Matrix or barcode — those use different decoders). Try cropping closer to the QR code or use a sharper version of the image.
Does it handle Wi-Fi QR codes?
Yes — Wi-Fi QR codes decode to a standardised string like "WIFI:T:WPA;S:MyNetwork;P:password123;;". The decoder shows the raw string; you can read the SSID, password, and encryption type directly. Most phones auto-recognise this format when scanned with the camera, but reading it here lets you save the password without joining the network.
Does it handle vCard contact QR codes?
Yes. A vCard QR code decodes to a multi-line "BEGIN:VCARD ... END:VCARD" string containing name, phone, email, organisation, and address. You can read it directly or paste it into a contact app to import.
Why is decoding slow on large images?
jsQR scans the image pixel-by-pixel to locate the QR finder patterns, so larger images take proportionally longer. For a 4000×3000 phone photo this can take a second or two. Cropping closer to the QR code before uploading speeds it up significantly.

More tools you might find useful in the same flow.

Built by Muhammad Tahir · About