Skip to content
nah

QR Code Reader

Decode any QR code from an image — paste, drop, or browse. Runs entirely in your browser.

100% in your browser — files never leave your device

How QR code reading works here

Decoding tries the browser's native BarcodeDetector API first — available in Chromium-based browsers and recent Safari — because it's fast and hardware-accelerated. Where that's unavailable (Firefox, older browsers), it falls back to jsQR, a pure-JavaScript decoder that reads the same image data through an offscreen canvas. Either way, decoding happens entirely on your device.

After a successful decode, the tool guesses content type from the raw payload — a WIFI: prefix means a WiFi config, BEGIN:VCARD means a contact card, an http(s):// prefix gets an Open button — the same conventions QR-generating tools use to encode structured data as plain text.

Decode quality depends entirely on image clarity. A QR code's error correction can recover from some damage, but a blurry photo, extreme crop, or low-contrast print can lose enough data that neither decoder recovers a result — your phone's camera app does extra multi-frame processing this single-image tool doesn't.

Frequently asked questions

Is my image uploaded to a server?

No. Decoding happens entirely in your browser — either via the native BarcodeDetector API or the jsQR library. Your image never leaves your device.

Which browsers support this tool?

All modern browsers work. Chrome/Edge use the native BarcodeDetector API for fast decoding. Firefox and older browsers fall back to jsQR, which runs fully in JavaScript and handles the same QR codes.

What image formats are supported?

Any format your browser can display: JPEG, PNG, WebP, GIF, BMP, AVIF, and HEIC (on Apple devices). The image is drawn to an off-screen canvas before decoding, so format support matches your browser.

Related tools