Skip to main content
QC

QR Code Scanner

Decode any QR code from an uploaded image or your camera — instantly, entirely in your browser.

Did you like the tool? Thanks!
Share:

More Image Tools Tools

IC

Image Cropper

Crop any image to exactly the area you need, with a live preview — nothing is uploaded, everything happens in your browser.

IR

Image Resizer

Resize any image to an exact width and height in your browser — optional aspect-ratio lock, PNG/JPEG/WebP output, nothing uploaded.

IC

Image Compressor

Shrink an image's file size by re-encoding it at a chosen quality level — live before/after size comparison, JPEG/WebP/PNG output, done locally.

IF

Image Flip & Rotate

Flip an image horizontally or vertically and rotate it by any angle — quick 90/180/270° buttons or a free-angle slider, corners never clipped.

IT

Image to Base64

Convert an image into a Base64-encoded string — full data URI or raw Base64, character count, one-click copy, all done locally.

BT

Base64 to Image

Paste a Base64 string or data URI and preview the decoded image instantly — auto-trims whitespace, lets you pick the assumed format, download in one click.

PI

Placeholder Image Generator

Generate a simple placeholder image for wireframes and mockups — custom size, colors and text, auto-sized to fit, PNG/JPEG/WebP output.

IF

Image Format Converter

Convert an image between PNG, JPEG, WebP and BMP entirely in your browser — no upload, instant preview, adjustable quality.

FG

Favicon Generator

Turn any image into a complete favicon package — six PNG sizes plus a combined multi-resolution .ico file, generated locally in your browser.

AA

ASCII Art Generator

Turn a photo into text-based ASCII art, or type a short message as a large block-letter banner — both rendered entirely in your browser.

Decode a QR code from an image file or your camera. Everything runs locally in your browser — nothing is uploaded.

Decoded content

How to Use QR Code Scanner

Choose an image file containing a QR code, or click "Use camera" to scan one live with your device's camera. The decoded content — a URL, plain text, Wi-Fi credentials, or whatever the code encodes — is shown immediately, with a copy button and, for links, a direct "Open link" button.

About QR Code Scanner

A QR (Quick Response) code packs data — most often a URL, but just as easily plain text, a Wi-Fi network's SSID and password, a contact card, or a payment reference — into a square grid of black and white modules that a camera or scanner can read far faster and more reliably than the barcodes that came before it. The name comes from exactly that speed advantage: unlike a 1D barcode, which only encodes data along a single line and has to be aligned carefully to scan, a QR code stores information in two dimensions and includes built-in position markers (the three large squares in three of its four corners) that let a scanner find and orient it instantly, from almost any angle, even partially damaged.\n\nThis tool decodes QR codes two ways. Upload an image file that contains a QR code anywhere in the frame — a screenshot, a photo of a poster, a exported code from another tool — and the decoder scans the full image for the code's position markers, reads the module grid, and extracts the data. Or click "Use camera" to scan one live: your device's camera feed is read frame by frame in real time until a valid code is found, then decoding stops automatically the moment a result appears, so you're not left staring at a frozen video feed waiting for something to happen.\n\nUnderneath, decoding uses jsQR, a compact, dependency-free JavaScript QR decoder that implements the same core algorithm real-world QR readers use: locating the three finder patterns, computing the grid's size and rotation from their positions, sampling each module as black or white, and running Reed-Solomon error correction to recover the encoded bytes even if part of the code is scratched, faded, or partially obscured — QR codes are deliberately over-engineered with redundant data for exactly this reason, which is why a slightly damaged code printed on a worn poster still scans reliably.\n\nEverything happens locally. The image you upload, or the camera frames captured while scanning, are read directly into your browser's memory and processed with client-side JavaScript — nothing is uploaded to a server, and camera access is requested through your browser's own permission prompt and stops the instant you click "Stop camera" or navigate away. If the decoded content is a web link, an "Open link" button appears so you can follow it directly, but the tool never auto-navigates on your behalf — you always see the raw decoded text first and choose what to do with it, which matters because a QR code's destination isn't always what it visually claims to be.

Details & Tips

How the decode pipeline works: for an uploaded file, the image is drawn onto an off-screen canvas at its native resolution and the raw RGBA pixel buffer is read back with getImageData(). For the camera path, each video frame is drawn to a hidden canvas the same way, at roughly the device's natural frame rate via requestAnimationFrame, so decoding attempts happen continuously without a fixed polling interval that could feel laggy on faster devices or wasteful on slower ones. That pixel buffer, along with its width and height, is passed to jsQR, which searches for the three finder-pattern squares, derives the perspective transform needed to read the grid correctly even at an angle, samples each module, and applies Reed-Solomon error correction against the code's declared error-correction level (QR supports four levels, from roughly 7% to 30% of the code able to be reconstructed if damaged) before returning the decoded text.\n\nA QR code can encode several distinct data types, and this tool displays whatever comes out exactly as decoded rather than trying to interpret or reformat it: a plain URL, free text, a WIFI: connection string (SSID/password/encryption type packed into one line, as generated by Wi-Fi sharing QR codes), a MECARD: or vCard contact block, or an arbitrary byte sequence for less common uses. Because the raw decoded string is always shown first, you can see exactly what a code contains before deciding to act on it — an important habit, since a QR code sticker can be printed over or replaced with a malicious one pointing somewhere other than what the surrounding context suggests.

Frequently Asked Questions

Is my image or camera feed uploaded anywhere?
No. Both the uploaded image and the live camera feed are processed entirely in your browser using JavaScript. Nothing is sent to a server — the camera stream is requested through your browser's own permission system and is only ever read locally.
Why does the tool need camera permission?
Live scanning reads frames directly from your device's camera to search for a QR code in real time. Your browser will show its own native permission prompt before any camera access is granted — this tool never bypasses that. Denying permission simply disables the camera option; file upload still works.
The camera scan stopped automatically — why?
The tool stops scanning the moment it successfully decodes a code, so you're not left watching a frozen or continuously-scanning video feed. Click "Use camera" again to scan another code.
What kinds of data can a QR code contain?
Most commonly a URL, but also plain text, Wi-Fi network credentials (packed as a WIFI: string), a contact card (vCard or MECARD format), or arbitrary text/bytes for other uses. This tool shows exactly what was decoded without trying to reformat or reinterpret it.
Can this tool decode a damaged or partially obscured QR code?
Often, yes — QR codes include built-in Reed-Solomon error correction (roughly 7-30% of the code can be reconstructed depending on the error-correction level used when it was generated), which is exactly why a slightly worn or scratched code printed on a poster usually still scans.
Is it safe to click "Open link" on a decoded QR code?
The tool always shows the raw decoded text first so you can review it before acting — it never auto-opens a link. That said, a QR code sticker can be swapped or printed over to point somewhere unexpected, so treat an unfamiliar decoded URL with the same caution you would any link from an untrusted source.
Why did the tool say no QR code was found?
Common causes: the image doesn't actually contain a QR code, the code is too small, blurry, or low-contrast in the frame, or it's cropped so one of the three corner finder-pattern squares is missing. Try a higher-resolution image or a tighter crop around just the code.
Does this work on mobile browsers?
Yes — both file upload and camera scanning work on modern mobile browsers. The camera option defaults to the rear-facing camera where available, since that's the one typically used for scanning printed codes.
Can I scan a QR code from a screenshot?
Yes — upload the screenshot as an image file. The scanner searches the entire image for a QR code, so it doesn't need to be perfectly cropped, though a code that takes up more of the frame is generally easier to decode reliably.
What decoding library does this tool use?
jsQR, a compact, dependency-free JavaScript QR decoder implementing the standard finder-pattern detection, perspective correction, and Reed-Solomon error-correction algorithm that real-world QR readers use.

Part of These Collections

Also Available As

qr code scanner, qr code reader, decode qr code, scan qr code online, qr code decoder, read qr code from image, qr scanner camera

Found a Problem?

Let us know if something with QR Code Scanner isn't working as expected.

Thanks — we'll take a look.