Free tools · QR codes

Read the code, see the forensics.

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

Decode an image or scan with your camera.

Runs locally on your device. Nothing is uploaded; results clear after ten idle minutes.

Drop an image here, browse, or pasteClick to choose a file, drag one in, or focus and press Ctrl+V. Screenshots work best.

Decoded in memory on this device — tilted photos and damaged symbols included.

How it works

Three steps, all on your device.

Two decoding passes cover both quick phone-style scans and exact grid analysis, all without leaving the page.

01

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.

02

Read two passes

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.

03

Inspect the payload

Raw text plus content kind, lengths, hex and Base64, alongside image dimensions and the symbol's bounding box. Copy what you need.

Questions

Reading QR codes, answered.

If you manage servers by hand, see the engineering services behind this tools series.

Are my images or camera frames uploaded anywhere?

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.

Why do I see text but no symbol details?

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.

What do version, mask and charset mean?

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.

The camera will not start. What should I check?

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.

Which image formats work?

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.

How is this different from my phone's camera app?

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.