QR Code Reader
Got a QR code in a screenshot, an email or a PDF? Drop or paste the image here to read what it holds: a link, Wi-Fi details, a contact or plain text.
Drop a QR code image hereScan a QR code
or paste a screenshot (Ctrl+V, ⌘V)with your camera, or choose a photo or screenshot
Read on this device. Nothing is uploaded, and the camera stops as soon as a code is read.
ExampleWi-Fi network
Example Cafe
WPA/WPA2 network. To join, scan the code with your phone’s camera, or copy the password.
An example: scan a code of your own and its contents replace this.
- Network name
- Example Cafe
- Security
- WPA/WPA2
- Password
- ••••••••••••
- Hidden network
- No
Exact text in the code44 characters
How this works: Method, 10 sources, Checked against 3 worked examples,
How this works
Method
A picture or camera frame is decoded on this device, by the browser’s own barcode detector where it has one, else by the open-source jsQR decoder (a still image is retried smoothed and at half size). The text is shown, never opened: a link’s real domain is found with common Public Suffix List endings and checked for short links, look-alike letters, text before an @, IP addresses and plain http. New codes are encoded as UTF-8 in the smallest version that fits, then decoded again to check they read back.
Sources
- ISO/IEC 18004:2024, QR Code bar code symbology specification (2024)
- ZXing wiki: Barcode Contents (Wi-Fi, MECARD, URL)
- RFC 3492: Punycode (2003)
- RFC 6350: vCard Format Specification (4.0) (2011)
- RFC 2426: vCard MIME Directory Profile (3.0) (1998)
- MDN: BarcodeDetector
- MDN: MediaDevices.getUserMedia()
- Public Suffix List
- WCAG 2.2, 1.4.3 Contrast (Minimum) (2023)
- FTC: Scammers hide harmful links in QR codes (2023)
How it’s tested
3 worked examples for this page are checked by automated tests before every release: given the inputs, the tool must show the expected answer.
Changes
- First version: a scanner for camera, photos and screenshots with link checks, and generators for links, text, Wi-Fi and contacts with SVG and PNG downloads.
Worked example: reading a Wi-Fi code
The example image holds the text WIFI:S:Example Cafe;T:WPA;P:…;;. It starts with WIFI:, so the reader splits it into fields at each semicolon, honouring backslash escapes.
S is the network name, Example Cafe. T is the security, WPA, shown as WPA/WPA2. P is the password, 14 characters long, hidden until you tap Show. There is no H field, so the network is not hidden. The reader shows these as rows and offers Copy password; it never joins the network by itself.
How the reader turns an image into text
When you drop or paste an image, the page draws it onto a canvas on your device and looks for the three corner squares that every QR code has. A screenshot is the easiest case: sharp squares, no tilt. A photo is harder, so if the first pass finds nothing, the reader smooths out the grain and tries again, then tries at half size, which often rescues a blurry or noisy picture.
Once the corners are found, the reader samples the grid, removes the mask pattern and lets the code’s error correction fix what it can: a code made at level H can lose about 30% of its data and still be read. The result is exact text, never a guess: if the correction can’t make the data consistent, the reader says no code was found rather than show something wrong.
The text is then sorted by what it looks like. A Wi-Fi code shows the network and security with the password hidden until you choose Show. A contact shows its fields and can be saved as a .vcf file that your phone or computer opens in its contacts app. A two-factor setup code (otpauth://) shows only the service and account, because its secret is as sensitive as a password.
- Error correction level L restores about 7% of a code’s data, M about 15%, Q about 25% and H about 30%. Source: ISO/IEC 18004:2024, QR Code bar code symbology specification.
- A Wi-Fi code is plain text such as WIFI:T:WPA;S:mynetwork;P:mypass;; where T is the security, S the network name, P the password and H:true marks a hidden network. Source: ZXing wiki: Barcode Contents (Wi-Fi, MECARD, URL).
- Punycode writes international domain names in ASCII starting with xn--, which is how a name with a Cyrillic а can be told apart from one with a Latin a. Source: RFC 3492: Punycode.
How the reader checks a link
Example addresses, the domain the reader highlights, and the warning it shows. Worked out by the same check the reader runs.
| Address in the code | Real domain | Warning |
|---|---|---|
| https://example.com/menu | example.com | None: check the name is the one you expect |
| http://example.com/menu | example.com | Not encrypted |
| https://bit.ly/example | bit.ly | A short link |
| https://exаmple.com/login | xn--exmple-4nf.com | Look-alike letters from two alphabets |
| https://example.com.account-check.example.net/ | example.net | A familiar name in front of another site |
| https://example.com@example.net/pay | example.net | Text before an @ hides the real site |
| https://192.0.2.10/pay | 192.0.2.10 | A number instead of a name |
Frequently Asked Questions
How do I read a QR code from a screenshot?
Take the screenshot, then paste it here with Ctrl+V (⌘V on a Mac), or drop the file onto the box. On a phone, choose the image from your photos. The code doesn’t need to be cropped: the reader finds it anywhere in the picture.
Can I read a QR code without an app?
Yes. On a phone, the built-in camera app reads codes on iPhone and most Android phones. To read a code that’s already on your phone’s screen or in your photos, where the camera can’t see it, use this page: choose the image and it is read in the browser, with no app to install.
Why does the reader say no QR code was found?
The usual causes: the code is too small in the picture, cut off at an edge, blurred, or has no light margin around it. Crop closer if the code is tiny, take the photo straight on in good light, and keep the whole code in frame. Some codes are not QR codes at all (Data Matrix and Aztec codes look similar), and this reader only reads QR.
Can it read the password from a Wi-Fi QR code?
Yes: a Wi-Fi code holds the password as plain text. The reader hides it until you tap Show, so it isn’t on screen by accident, and Copy password puts it on your clipboard. It is never sent anywhere or saved.