To read a QR code online, drop a screenshot or photo on the upload box below, paste it with Ctrl+V, or switch to Camera Scan. The reader decodes it in your browser with the BarcodeDetector API or the jsQR library, then shows the text or link. Check the link before you open it. The FTC warns that scammers hide harmful links in QR codes.
QR (Quick Response) codes are two-dimensional matrix barcodes. DENSO WAVE, then a division of DENSO CORPORATION, announced the QR Code in 1994, and the auto industry soon used it for electronic Kanban. Unlike traditional one-dimensional barcodes that store data in a single row of bars, QR codes store information in both horizontal and vertical patterns, allowing them to encode significantly more data in a compact space. A QR code can hold up to 7,089 numeric characters or 4,296 alphanumeric characters, in sizes from 21 x 21 to 177 x 177 modules, per the Denso Wave specification summary.
QR codes have become ubiquitous in daily life, appearing on product packaging, restaurant menus, business cards, event tickets, advertisements, and payment systems. Modern smartphones can scan QR codes directly through their native camera apps, making them one of the most accessible bridge technologies between physical and digital worlds.
QR code decoding involves several sophisticated steps. First, the decoder locates the QR code within an image by detecting the three finder patterns (the large squares in three corners). These finder patterns establish the orientation and boundaries of the code. The fourth corner is calculated from alignment patterns. Next, the decoder reads the format information encoded near the finder patterns, which specifies the error correction level and the data masking pattern used.
The actual data is stored in modules (the small black and white squares) arranged in a specific pattern. The decoder reads these modules, applies the inverse of the masking pattern, and then performs Reed-Solomon error correction to recover any data that may be corrupted or obscured. Finally, the corrected binary data is decoded according to the encoding mode (numeric, alphanumeric, byte, or kanji) specified in the data stream.
Modern browsers offer the BarcodeDetector API, a native interface for detecting and decoding various barcode formats including QR codes. MDN lists BarcodeDetector as experimental and not Baseline, because it does not work in some widely used browsers. It also needs a secure (HTTPS) context. That is why this tool falls back to jsQR.
This tool uses the BarcodeDetector API when available and automatically falls back to jsQR, a pure JavaScript QR code decoder, when the native API is not supported. This dual approach ensures consistent functionality across all modern browsers while taking advantage of native performance where possible.
When scanning QR codes, privacy is an important consideration. Many online QR readers upload your images to remote servers for processing, exposing potentially sensitive content. This tool processes everything locally in your browser - images are decoded using client-side JavaScript, and camera feeds are analyzed frame-by-frame without any data leaving your device. The scan history is stored in session storage, meaning it is automatically cleared when you close the browser tab.
Most failed scans come from the image, not the code. Crop a large photo first with the Image Cropper, or scale up a tiny one with the Image Resizer. Then check these causes in order.
Not always. On December 6, 2023 the FTC warned that scammers hide harmful links in QR codes to steal your information. Its advice is to inspect the URL before you open it and to watch for misspelled or swapped letters. Do not scan codes from emails or texts you did not expect, above all ones that urge you to act fast. This reader shows the decoded link first, so you can check it before you visit.
There are three ways to scan. Upload an image by clicking the upload area or dragging and dropping a file, use your device's camera for live scanning by switching to the Camera tab, or paste an image from your clipboard. The tool instantly decodes the QR code and displays its content, automatically detecting URLs and making them clickable.
No. All QR code decoding happens entirely within your web browser. Uploaded images are processed using either the native BarcodeDetector API or the jsQR JavaScript library, both running locally on your device. Camera feeds are analyzed frame-by-frame in real-time without transmitting any data. No images, camera footage, or decoded content ever leaves your device.
Yes. When using the BarcodeDetector API, the tool can detect and decode multiple QR codes within a single image, displaying each result separately with its own copy button. The jsQR fallback library processes one QR code at a time, so if your browser does not support BarcodeDetector, the tool will decode the most prominent QR code in the image.
QR codes can encode many types of data: URLs (the most common use), plain text, email addresses (mailto: links), phone numbers (tel: links), SMS messages, Wi-Fi network credentials, vCard contact information, calendar events (vCal/iCal format), geographic coordinates, Bitcoin payment addresses, and arbitrary binary data. This tool automatically detects URLs and makes them clickable links.
Yes. The camera scanner uses the MediaDevices API (getUserMedia) which is supported on all modern mobile browsers including Safari on iOS and Chrome on Android. On mobile devices, the tool requests the rear-facing (environment) camera by default for optimal QR code scanning. You will be prompted to grant camera permission on first use.
The tool supports all image formats that your browser can display, including PNG, JPEG, GIF, BMP, WebP, AVIF, TIFF, and SVG. Images are loaded using the HTML5 Image element and rendered to a Canvas for processing. For best results, use clear, high-contrast images where the QR code is well-lit and not excessively blurred or distorted.
Yes. Every successfully decoded QR code is automatically saved to your session history with a timestamp and the scan method (upload or camera). You can view the full history in the History tab, copy any previous result, or clear the entire history. History is stored in your browser's sessionStorage and is automatically cleared when you close the tab, ensuring your scanned data does not persist.
The tool automatically detects whether your browser supports the native BarcodeDetector API. If it does not, the tool loads jsQR, a lightweight and reliable pure JavaScript QR code decoder, from a CDN. jsQR works in all modern browsers and provides accurate decoding for standard QR codes. The only difference is that jsQR processes one QR code at a time, while BarcodeDetector can find multiple codes in a single image.
The image is usually too small, blurry, cropped or low in contrast. Crop tight around the code and upload the original file. If the code itself is damaged past its error correction level, which restores about 7% to 30% of the data, it cannot be read.
Check it first. The FTC warns that scammers hide harmful links in QR codes. This reader shows the decoded link before you open it, so look for misspelled or swapped letters, and skip codes from emails or texts you did not expect.
March 19, 2026
March 19, 2026 by Michael Lip
Update History
March 19, 2026 - Created and tested first working version March 20, 2026 - Integrated FAQ block and search engine schema March 27, 2026 - Polished responsive layout and error handling. September 30, 2026 - Replaced generic sections with scan fixes and link safety, added sources.
Wikipedia
A QR code, short for quick-response code, is a type of two-dimensional matrix barcode invented in 1994 by Masahiro Hara of the Japanese company Denso Wave for labelling automobile parts. It features white and black squares within a square grid featuring fiducial markers on the corners, readable by imaging devices like cameras, and processed using Reed, Solomon error correction until the image can be appropriately interpreted.
Source: Wikipedia - QR code · Verified March 19, 2026
March 19, 2026
March 19, 2026 by Michael Lip
March 19, 2026
March 19, 2026 by Michael Lip
Last updated: September 30, 2026
Quick Facts
Camera/Upload
Scan methods
Multi-QR
Detect multiple codes
BarcodeDetector
Native API support
0 bytes
Sent to any server
Browser Support
Camera scanning uses BarcodeDetector API (Chrome 134+, Edge 83+). Falls back to jsQR for full browser support.
The QR Code Reader lets you scan and decode QR codes from images or your device camera. Whether you are a professional, student, or hobbyist, this tool will save you time and deliver accurate results without requiring any downloads or sign-ups.
by Michael Lip. Security by design: QR Reader has no backend, no database, and no API calls. Your data exists only in your browser's memory.
Browser support verified via caniuse.com. Works in Chrome, Firefox, Safari, and Edge.