ToolsDeveloper Tools › QR Code Reader

QR Code Reader — Decode QR Codes Online Free

Upload an image containing a QR code, or scan one live with your camera. Decodes instantly and shows the full content. Free, no account, nothing stored.

QR decoding runs in your browser using jsQR. Uploaded images are decoded locally — nothing is stored on any server.

Drop a QR code image here, or click to browse

PNG, JPG, WEBP accepted · Max 10 MB

About QR Code Reader

QR Code Reader decodes any QR code from an uploaded image or a live camera scan. It uses the open-source jsQR library (MIT license) to process the image entirely in your browser — nothing is uploaded to a server and nothing is stored. The tool accepts PNG, JPG, and WEBP images and handles most real-world QR codes printed on paper, displayed on screens, or photographed in varying lighting conditions.

How QR decoding works

A QR (Quick Response) code encodes data as a 2D matrix of black and white squares. jsQR reads the image pixel data from an HTML <canvas> element, locates the three finder-pattern squares in the corners, corrects for perspective and rotation, reads the bit matrix, applies Reed-Solomon error correction, and decodes the encoded message. This runs in a few milliseconds for typical images.

Camera scanning

When you click “Scan with camera,” the browser requests access to your camera using the getUserMedia API. Frames are continuously captured and passed to the jsQR decoder in a requestAnimationFrame loop. When a QR code is detected, scanning stops automatically and the result is shown. No camera frames are sent to any server. Clicking “Cancel camera scan” stops the stream and releases the camera immediately.

URL safety

If the decoded QR content starts with http:// or https://, the tool renders a clickable link. Verify the URL before clicking — QR codes can encode phishing URLs designed to look legitimate at a glance. The “verify before clicking” label is intentional.

Frequently asked questions

Is my image or camera feed uploaded to a server?

No. QR decoding runs entirely in your browser using jsQR, an open-source MIT-licensed library. Uploaded images are read with the browser's FileReader API and drawn to an off-screen canvas. Camera frames are drawn to the same canvas. No image data leaves your device. The jsQR library is loaded once from our server as a script file; after that, decoding requires no network requests.

What if no QR code is found in my image?

The tool shows an error if jsQR cannot locate a QR code. Common causes: the image is too blurry or low-resolution, the QR code is very small relative to the image, there is glare or uneven lighting, or the image contains a non-standard code type (Data Matrix, Aztec, or barcode — jsQR handles standard QR codes only). Try cropping the image to isolate the QR code or taking a clearer photo.

Can I scan QR codes from my screen?

Yes — take a screenshot and upload it. PNG screenshots work best because PNG is lossless; JPEG compression can introduce artifacts around the QR code modules that confuse the decoder. On most operating systems, Print Screen or Cmd+Shift+4 captures a screenshot you can upload directly.

What types of data can a QR code contain?

QR codes can encode URLs, plain text, email addresses, phone numbers, SMS messages, Wi-Fi credentials (WIFI:S:MyNetwork;T:WPA;P:password;;), vCard contact data, calendar events, and more. The decoded content is shown as plain text — if it's a URL, the tool renders a clickable link. Other formats are shown as raw text, which you can copy and use as needed.

Can I also generate QR codes?

Yes — the companion QR Code Generator tool creates QR codes from any text or URL. It is a separate tool on this site. The reader and generator link to each other in the related tools section at the bottom of each page.

Also try

Related tools

LiveDeveloper Tools

QR Code Generator

Generate a QR code from any URL or text. Download as PNG or SVG. No account, no watermark. Works offline after load.

Open tool
LiveDeveloper Tools

Barcode Generator

Generate Code 128, EAN-13, UPC-A, and other standard barcodes from any value. Download as SVG or PNG.

Open tool
LiveDeveloper Tools

Binary Translator

Convert text, decimal, or hex to binary and back. Pure browser JavaScript — nothing sent to any server.

Open tool
LiveDeveloper Tools

Base64 Encoder / Decoder

Encode any text or binary data to Base64 or decode Base64 back to readable text. Browser-only, nothing stored.

Open tool