QR Scanner & Decoder
Upload an image or use your camera to decode any QR code instantly. Content is detected and classified automatically. Processing is entirely local - nothing leaves your device.
Drop an image here or click to browse
PNG, JPG, GIF, WEBP, BMP - up to 20 MB
- Ensure the entire QR code is visible and in focus
- Try a higher resolution image
- Improve lighting - avoid glare and deep shadows
- Check the code is not too small relative to the image
How QR Decoding Works
QR decoding starts by converting the image to greyscale and sampling every pixel to find a binary matrix of light and dark cells. The decoder then searches for the three distinctive finder patterns - the large square markers in three corners of the code - and uses them to correct perspective distortion, determine the code's orientation, and compute the size of each module (cell).
Once the matrix is extracted, Reed-Solomon error correction reconstructs any damaged or missing data modules, and the remaining bytes are decoded according to the QR encoding mode (numeric, alphanumeric, byte, or Kanji). This tool uses the jsQR library, a pure JavaScript decoder that runs entirely in your browser without contacting any external service.
Camera vs File Upload
File Upload
Best for QR codes captured in screenshots, downloaded images, or PDFs. The full image resolution is available to the decoder, making this the most reliable method for difficult codes. Drag and drop is supported.
Live Camera
Continuously decodes frames from your device camera in real time. Uses the rear-facing camera when available (ideal for mobile). Requires browser permission for camera access; no video data is stored or transmitted.
Recognised Content Types
This decoder identifies the content type automatically from the decoded string and applies the appropriate action button. Here are the types it recognises:
URL
http:// or https:// "Open URL" button appears for direct navigation.
mailto: prefix Address, subject, and body extracted for display.
Wi-Fi
WIFI: prefix SSID, security type, and password shown in plain text.
vCard
BEGIN:VCARD prefix Contact fields extracted and formatted for readability.
SMS
SMSTO: or sms: prefix Recipient number and message body displayed separately.
Plain Text
All other strings Raw content shown as-is with byte length metadata.
Troubleshooting Failed Scans
Several factors can prevent a QR code from being decoded successfully. Understanding these failure modes helps you choose a better source image or adjust your camera conditions:
Low Contrast
If the foreground and background colours are too similar, the binarisation step fails to distinguish modules. Increase the image brightness/contrast in your image editor before re-uploading.
Motion Blur
Camera shake during capture makes module edges indistinct. Hold the device steady, use a flat surface, or switch to file upload mode where image quality is fixed.
Partial Code
All three finder patterns and the quiet zone must be fully visible. Crop the source image to ensure no corners are cut off. Even a few missing modules can defeat decoding at L error correction level.
Reflective Surfaces
Gloss laminate, holographic stickers, and screen glare create bright spots that overexpose individual modules. Photograph at an angle to eliminate specular highlights, or tilt the screen away from lights.