QR code scanner
QR code scanner is a QR tool that decodes QR codes from a saved image or a live webcam feed. It accepts JPEG, PNG, and WebP uploads, supports continuous camera scanning with permission, and surfaces decoded URLs as clickable links. The tool runs in your browser.
📷
Drop an image here or browse
PNG, JPEG, WebP. Decoded in your browser
QR codes decoded locally using jsQR. All processing runs in your browser.
Dedicated pages
Focused guides for each scanning method.
Read QR Code from Image
Upload any image containing a QR code and decode it instantly in your browser. Supports PNG, JPEG, and WebP. All processing runs in your browser.
Scan QR Code with Webcam
Use your device's camera to scan and decode QR codes instantly in your browser. No app needed, works on desktop and mobile. All processing runs in your browser.
Decode QR Code
Decode the contents of any QR code from an uploaded image. Reveals URLs, text, contact cards, and Wi-Fi credentials. All processing runs in your browser.
How to scan a QR code
- Choose "Upload image" to scan a QR code from a saved image file, or "Use camera" for live scanning.
- If uploading: drop your image onto the area or click to browse.
- If using the camera: click "Start camera" and hold your QR code up to the webcam.
- The decoded text or URL appears instantly, click any link to open it.
Common uses
- Decoding a QR code from a screenshot or saved image without a phone
- Quickly reading a QR code on screen using your laptop webcam, or generating a new QR code
- Extracting the URL or text from a QR code in a document or presentation, then decode any percent-encoded characters to see the plain URL
Technical specification
- Algorithm or formula: QR Code 2005 decoding (ISO/IEC 18004) via the jsQR library. The tool extracts an
ImageDatabuffer from an uploaded image or video frame and passes the pixel array to jsQR's finder-pattern and Reed-Solomon decoder. - Browser API or library: jsQR for decoding; Canvas 2D API for pixel extraction;
navigator.mediaDevices.getUserMediafor the live camera feed. - Input limits: Image input up to 50 MB and 50 megapixels. Camera feed processed frame-by-frame at the browser's native capture resolution.
- Output: Decoded payload as plain text. URLs are detected and rendered as clickable links; Wi-Fi payloads are parsed into displayable fields.
- Known limitations: Heavily damaged, low-resolution, or low-contrast codes may fail to decode. Camera access requires explicit user permission.
Frequently asked questions
- Is my image or camera feed uploaded to a server?
- No. The jsQR library decodes QR codes entirely in your browser. Camera frames are processed locally in your browser.
- What image formats can I upload?
- JPEG, PNG, WebP, and most other common image formats are supported. The QR code must be clearly visible and not too small or blurry.
- Why can the webcam not scan my QR code?
- Ensure the QR code is well-lit, fills most of the frame, and is held still. The camera scans frames continuously, a result appears as soon as a valid code is detected.
- Why does the camera require permission?
- Browsers require explicit permission before any site accesses the camera. Permission is only requested when you click "Start camera". It is never requested automatically.
Reviewed and tested May 26, 2026.