Provide the code
Drop in a screenshot or photo, or start the camera and hold it steady. Files are read into memory and discarded; frames never leave the page.
Free tools · QR codes
Upload an image or scan live with your camera — payload, content kind, raw hex and symbol internals included. Decoded on your device, never uploaded.
QR input
Runs locally on your device. Nothing is uploaded; results clear after ten idle minutes.
Decoded in memory on this device — tilted photos and damaged symbols included.
How it works
Two decoding passes cover both quick phone-style scans and exact grid analysis, all without leaving the page.
Drop in a screenshot or photo, or start the camera and hold it steady. Files are read into memory and discarded; frames never leave the page.
The platform detector reads tilted photos fast; the built-in engine recovers symbol details — version, mask, error-correction level, charset — with error correction, including rotated and inverted codes.
Raw text plus content kind, lengths, hex and Base64, alongside image dimensions and the symbol's bounding box. Copy what you need.
Questions
If you manage servers by hand, see the engineering services behind this tools series.
No. Files are decoded into pixels in memory and camera frames are analyzed live in the page — nothing is sent over the network, stored, or logged, and results wipe after ten idle minutes. You can verify this in your browser's developer tools.
The payload can come from the platform pass, which returns text but no grid metadata. The built-in engine confirms the details — version, mask, error-correction level, charset — whenever the image is good enough for error-corrected decoding; heavy blur or damage may leave only the payload.
Version sets the symbol size from 21×21 modules (version 1) up to 177×177 (version 40); Micro codes report M1–M4. The mask pattern (0–7) evens out dark and light areas so scanners stay locked. Charset shows how the payload bytes were interpreted: strict UTF-8 first, then the specification default, with an ECI badge when the symbol carries an explicit charset header.
Grant camera permission when the browser asks, and serve the page over HTTPS or localhost — browsers block cameras on insecure origins. Some browsers also require the tab to be focused. If it still fails, upload a photo of the code instead.
Anything the browser can render: PNG, JPEG, WebP, GIF and BMP, including screenshots and photos. High contrast and an upright orientation decode best; glare, heavy blur and extreme angles are the usual reasons a code will not read.
Phone apps only hand you the link. This tool shows the forensics too: what kind of payload it is, how long it is in characters and bytes, its hex and Base64 forms, and — for clean captures — the symbol's version, mask and error-correction level.