QR Code Scanner

Point your camera or upload an image — instantly extract text, URL, or Wi-Fi credentials.

Image / camera frames never leave your device. All decoding happens entirely in your browser.
[ AdSense slot ]

Decoded result types

TypePrefix / patternAction
URLhttp:// · https://'Open' opens in new tab
Phonetel:'Open' triggers phone app (mobile)
SMSsms:'Open' triggers messaging app (mobile)
Emailmailto:'Open' triggers email app
Wi-FiWIFI:Copy SSID / password and connect manually
Mapgeo:'Open' triggers maps app (mobile)
Plain text(other)Copy button only

Related tools

Be careful with external URLs
QR-decoded URLs may lead to phishing or malicious sites. Verify the domain shown in the result before clicking 'Open'. If unsure, scan the URL with a service like VirusTotal first.
When detection fails
① Re-shoot if the photo is blurry ② fill at least 60% of the frame with the QR ③ ensure good lighting / contrast ④ for screen captures, increase pixel size before uploading ⑤ in camera mode, give autofocus a moment to lock.
Camera permission and privacy
The browser will ask for camera permission. Even when allowed, frames are only displayed on-screen and never sent anywhere. Stopping the camera or leaving the page ends the stream immediately. No background recording or transmission.
About the jsQR library
A pure-JavaScript open-source QR decoder by Cosmo Wolfe (Apache-2.0). About 50KB, fully client-side. Handles any standard QR (versions 1–40, all error-correction levels).

Frequently Asked Questions

The camera won't turn on.
Make sure you allowed camera permissions. Camera access also requires HTTPS (this site is HTTPS). On iOS Safari, tap the lock icon in the address bar to re-enable camera access. If permissions are blocked, unblock them in your browser's site settings.
QR image won't decode.
① Crop or zoom so the QR fills more of the frame ② check that contrast is sufficient (blur or tiny size fails) ③ rotation and skew usually work, but heavy perspective distortion is hard ④ if it's a phone photo, reduce shake and re-shoot.
Are the image / camera frames sent to a server?
No. All decoding happens in the browser via the jsQR library. Camera frames are only displayed on screen — never uploaded. Stopping the camera ends the stream immediately.
Does it handle multiple QRs in one image?
Currently only the first detected QR is decoded. To read multiple, crop each one separately and upload one at a time.
How do I tell if the result is a URL or just text?
This tool auto-classifies decoded content — URL (http/https), phone (tel:), SMS, email (mailto:), Wi-Fi (WIFI:), map (geo:), or plain text. URLs activate an 'Open' button. Opening external URLs is at your own risk — verify the source first.
Wi-Fi QR decoded but won't auto-connect.
This tool only decodes the text. Auto-connect for Wi-Fi works only with the OS camera app (the phone's native camera). PCs and web browsers don't have OS-level permission for that — copy the SSID and password and connect manually.

References

Last reviewed: 2026-05-09 / jsQR (Cosmo Wolfe, Apache-2.0) library.
⚠️ Always verify the domain of decoded URLs before opening. Don't click links from unknown sources.