QR Code Reader Online β Decode a QR Code from an Image Free [2026]
Your phone camera scans QR codes in real time β but what about a QR code in a screenshot, a PDF, or an image file on your desktop? This guide explains how QR code readers work, when you need one instead of a scanner app, every data type a QR code can contain, and how to decode any QR image in your browser without uploading it anywhere.

Table of Contents
QR code reader vs scanner app: the key difference
The terms "QR code reader" and "QR code scanner" are often used interchangeably, but they describe two different input methods for the same underlying decoding process.
A QR code scanner works with a live camera feed. Your phone's camera app is a scanner: it reads successive video frames in real time and detects QR codes as you point the camera at a physical code. Most people encounter this every day β scanning restaurant menus, boarding passes, or product codes. The input is a stream of live frames from a camera.
A QR code reader (also called a QR code decoder) works with a static image file. You provide an image β a screenshot, a JPEG, a PNG, a cropped photo β and the reader analyzes the pixel data to find and decode any QR code present in the image. The decoding algorithm is identical; the difference is the source of the image data.
The underlying technology is the same in both cases: the QR code standard (ISO/IEC 18004) defines a deterministic decoding algorithm. Given pixel data containing a QR code, the decoder finds the finder patterns, maps the module grid, applies error correction, and extracts the data. This works on a live camera frame or a static image with equal fidelity.
When you need a reader, not a camera scanner
Camera-based scanning only works when you can physically point a camera at a QR code. There are many everyday situations where that is not possible:
- QR code received via chat or email. Someone sends you a QR code image via WhatsApp, Telegram, iMessage, Slack, or email. The code exists as an image file on your device. You cannot point your camera at your own screen to scan it β you need a reader that accepts the image as input.
- QR code in a PDF or document. A boarding pass, event ticket, invoice, or contract has a QR code embedded. You received it as a PDF and want to see what URL or data the QR code contains without printing the document and scanning it physically.
- QR code on a screen you are already using. You are working on a desktop computer and a QR code appears on your screen β from a login flow, a payment confirmation, or a file transfer app. Your phone might not be nearby, or angling your phone at the monitor is awkward.
- QR code in a photo you took earlier. You photographed packaging, a poster, or a sign containing a QR code but did not scan it at the time. Now you want to retrieve the URL or data from the photo.
- Verifying a QR code you generated. You generated a QR code and want to confirm it decodes to the correct URL before distributing it. Uploading the image to a reader is faster than switching apps to use your phone camera.
- Security check before clicking. You received a QR code from an unknown sender and want to see the URL it contains before scanning it with your phone and opening an unknown link. A reader lets you inspect the decoded content safely before acting on it.
How QR code decoding works (jsQR explained)
The SammaPix QR Code Reader uses jsQR β an open-source JavaScript implementation of the QR code decoding specification. jsQR runs entirely in your browser tab, processing pixel data locally without any server communication.
Here is what happens step by step when you upload an image containing a QR code:
- Image rendering. The browser reads the image file using its native image decoder and renders it to an HTML Canvas element. The Canvas produces an ImageData array: four numbers per pixel (red, green, blue, alpha channel) for every pixel in the image.
- Finder pattern detection. jsQR scans the ImageData to locate the three large square finder patterns that appear in the top-left, top-right, and bottom-left corners of every QR code. These are the squares you see when you look at a QR code. Their presence, positions, and relative sizes tell jsQR where the QR code is and what its orientation is.
- Perspective correction. If the image was taken at an angle, jsQR applies a perspective transform to straighten the detected QR region into a flat grid before sampling the modules.
- Module sampling. jsQR samples each module position in the corrected grid and determines whether it is dark (1) or light (0), producing the raw bit matrix of the QR code.
- Error correction and data decoding. The bit matrix contains both data codewords and error correction codewords (Reed-Solomon codes). jsQR applies error correction, which can recover corrupted data up to the error correction level capacity (7% for L, 15% for M, 25% for Q, 30% for H). The corrected data codewords are then decoded according to the encoding mode into the final text string.
- Result display. The decoded text is displayed in the interface. Copy and Open buttons let you act on the result immediately. The entire process takes milliseconds.
None of steps 1 through 6 involve a network request. The image data and decoded result exist only in your browser's memory. When you close the tab, they are gone.
Every data type a QR code can contain
A QR code encodes text. The specific "type" of a QR code is determined by the format of that text β whether it begins with https://, WIFI:, BEGIN:VCARD, and so on. The QR code reader decodes the raw text; your phone then recognizes the format and acts on it automatically.
| Data type | Encoded text format | What a phone does when scanned | Common use |
|---|---|---|---|
| URL | https://example.com/page | Browser opens the URL. | Business cards, posters, menus, product pages, app download links. |
| Plain text | Any text string. | Displays the text. No automatic action. | Coupon codes, event codes, instructions, short messages. |
| Wi-Fi | WIFI:T:WPA;S:NetworkName;P:pass;; | Phone offers to join the Wi-Fi network automatically. | Restaurants, hotels, offices, Airbnbs β guest network access. |
| vCard contact | BEGIN:VCARD ... END:VCARD | Contacts app offers to add the person to the address book. | Business cards, conference name badges, digital contact sharing. |
| mailto:name@example.com?subject=Hi | Email client opens with the address pre-filled in the To field. | Business cards, conference materials, feedback forms. | |
| SMS | sms:+15551234567?body=Hello | Messages app opens a pre-addressed text message. | Customer support, marketing opt-in, shortcode messaging. |
| Phone number | tel:+15551234567 | Dialer opens ready to call the number. | Business cards, support lines, emergency contact information. |
When you decode a QR code with the SammaPix reader, you see the raw text content before acting on it. This is especially useful for inspecting Wi-Fi QR codes (to retrieve the SSID and password in plain text) or for checking what URL a QR code leads to before opening it.
Why no-upload matters for QR code decoding
Many QR code decoders available online are server-based: you upload your image, it is sent to their server, the server decodes it, and the result is returned to you. This architecture raises a specific privacy concern that is easy to overlook.
The image you are decoding may contain sensitive information in the QR code itself β a Wi-Fi password, a private URL, personal contact details, a login verification code. When you upload that image to a third-party server for decoding, you are sharing both the image and the decoded content with that service. You have no visibility into how long they store it or who has access.
Browser-based decoding via jsQR eliminates this entirely. The image stays in your browser. The decoded result stays in your browser. No network request carries either piece of data. You can verify this yourself with browser DevTools.
This matters most for three categories of QR codes: Wi-Fi credentials (which encode your network name and password directly), vCard QR codes (which encode personal contact details including address and phone number), and authentication or payment QR codes (which may encode session tokens or transaction identifiers that are sensitive by design).
Browser reader vs server-based decoder: comparison
| Feature | Browser-based (SammaPix) | Server-based decoder |
|---|---|---|
| Image upload | No. Image is read locally by your browser. Never sent over the network. | Yes. Image is uploaded to the service's server for processing. |
| Privacy | Complete. No third party sees your image or decoded data. | Limited. Service receives and may log both the image and decoded content. |
| Speed | Fast. No network round trip. Processing is local β milliseconds. | Depends on upload speed and server load. Slower for large images. |
| Works offline | Yes, after the page loads. jsQR runs locally. | No. Requires a network connection for the upload and decode request. |
| Cost | Free. No account, no plan, no limit. | Often free with signup; rate limits and watermarks on free tier common. |
| Signup required | No. Open the tool and use it immediately. | Often required to download the result or bypass rate limits. |
Decode any QR code from an image β no upload, no account
Upload a screenshot, JPEG, PNG, or WebP. jsQR decodes the QR code locally in your browser. Copy or open the result. Free.
Open QR Code Reader, FreeHow to decode a QR code from an image, step by step
- Go to sammapix.com/tools/qr-code-reader in any modern browser β Chrome, Firefox, Safari, or Edge. No account required.
- Upload your image. Click the upload area or drag and drop the image file. Supported formats include PNG, JPEG, WebP, GIF, and AVIF. The image is read by your browser β no file is sent to any server.
- View the decoded result. jsQR analyzes the image and displays the decoded content instantly. The full raw text is shown β URL, Wi-Fi credentials, vCard data, or whatever the QR code encodes.
- Copy or open. Use the Copy button to copy the decoded text to your clipboard. If the result is a URL, use the Open button to follow it directly. For Wi-Fi credentials, read the SSID and password from the decoded text.
If the image also contains other content besides the QR code β a full-page screenshot, a scanned document, or a photo with the QR code in a corner β the reader will still detect the QR code. For best results, ensure the QR code is clearly visible with adequate contrast and is not extremely small relative to the total image dimensions.
Troubleshooting: when the reader cannot detect the code
If the QR code reader fails to detect the code in your image, the issue is almost always one of the following:
- Blurry or low-resolution image. QR decoding requires clear, sharp module boundaries. A blurry photo β especially one taken at an angle or with motion blur β may not decode. Try taking a sharper photo or screenshot, or find a higher-resolution version of the image.
- QR code too small in the image. If the QR code occupies only a small fraction of a large image, the modules may not have enough pixels to be reliably detected. Crop the image to focus on the QR code before uploading β most image editors, iOS Photos, and Windows Photos support cropping.
- JPEG compression artifacts. Heavy JPEG compression introduces pixel noise around module boundaries, making dark and light areas harder to distinguish. If you have access to the original uncompressed image, use that. If not, try a different image source (a screenshot rather than a JPEG photo, for example).
- Extreme perspective angle. jsQR handles moderate perspective distortion, but a very steep angle β more than about 30 degrees from frontal β may cause detection failure. Try cropping and perspective-correcting the image using a photo editor before uploading.
- Low contrast. QR codes on non-white backgrounds (dark logos, colored backgrounds, transparent layers) may have insufficient contrast between modules. Increasing the image contrast using a photo editor may resolve the issue.
- Partial coverage. If the QR code is partially cut off, folded, or covered by another element in the image, the finder patterns may be incomplete and the code will not decode. Try to find an image where all three finder pattern squares are fully visible.
Decode QR codes from screenshots, photos, and PDFs
Browser-based jsQR reader. No upload, no camera required, no signup. Also supports live camera scanning.
Related tools
- QR Code Reader: the tool covered in this article. Decodes QR codes from images or live camera. No upload, no account.
- QR Code Generator: generate a QR code for any URL, text, Wi-Fi, email, or vCard in your browser. Download PNG or SVG. No upload, no account. See free QR code generator guide.
- How to scan a QR code from a screenshot: step-by-step guide for the specific case of reading a QR code from a screen capture β the most common reason people search for a QR code reader rather than a scanner app.
- Image to Base64: encode any image to Base64 for embedding in CSS or HTML. Useful when you need to embed QR code images in web pages or emails without an external file reference. See image to Base64 guide.
- PDF to Image: extract pages from a PDF as images. Useful when the QR code you need to decode is embedded in a PDF document β convert the relevant page to an image and then decode the QR code.
Everything you need for QR codes β all in your browser
Read QR codes from images, generate QR codes for any data type, encode images for embedding β without uploading anything anywhere. No server. No signup. No watermark.
FAQ
What is the difference between a QR code reader and a QR code scanner app?
A QR code scanner app β like your phone's camera app β reads QR codes from a live video feed in real time. You point the camera at a physical QR code and the app detects and decodes it instantly. A QR code reader (also called a QR code decoder) reads QR codes from an existing image file β a screenshot, a photo, a JPEG, a PNG. There is no live camera feed. You upload or provide the image, and the reader finds and decodes the QR code in it. Both use the same underlying decoding algorithm β the difference is the input source. Use a scanner for QR codes you can physically point your camera at. Use a reader for QR codes that exist as image files on your device.
Why would I need to read a QR code from an image rather than scanning it with my camera?
There are several common scenarios where a QR code reader is necessary. A screenshot: someone sent you a QR code via WhatsApp, email, or Slack, and the QR code now exists only as an image on your device β you cannot physically scan it with another phone. A second monitor or screen: the QR code is displayed on a screen you are working on, and you cannot easily point your phone at it. A PDF document: a QR code is embedded in a contract, boarding pass, or official document you received as a PDF. A printed material photographed: you photographed a poster or packaging but did not scan the QR code at the time, and you now need the URL it contained. An archived image: a QR code in an old photo or screenshot you want to decode years later.
Is it safe to upload an image containing a QR code to a web-based decoder?
It depends entirely on how the decoder works. Server-based decoders receive your image file on a third-party server β which means both the image and the decoded content (which may be a private URL, Wi-Fi credentials, or contact details) pass through that server. Browser-based decoders like the SammaPix QR Code Reader use a JavaScript library (jsQR) that runs entirely in your browser tab. The image never leaves your device. The decoded result is displayed locally. You can verify this by opening browser DevTools (F12), going to the Network tab, and watching for outgoing requests while you upload and decode β you will see none carrying your image or result data.
What types of data can be decoded from a QR code?
A QR code can encode any text data. The most common types are: URL (a https:// link that opens in a browser when scanned), plain text (any message or alphanumeric string), Wi-Fi credentials (SSID and password in the WIFI: format β phones use this to auto-join networks), vCard contact (a digital contact card with name, phone, email, address in RFC 6350 format), email address (a mailto: link that pre-fills the To field in an email client), SMS (a sms: link that opens a pre-filled text message), and phone number (a tel: link that dials a number directly). The SammaPix QR Code Reader decodes all of these and displays the raw content so you can see exactly what the QR code contains before acting on it.
What image formats can be used with the QR code reader?
The SammaPix QR Code Reader accepts any image format that modern browsers can display: PNG, JPEG/JPG, WebP, GIF (first frame), AVIF, and BMP. Screenshots from both Windows (PNG by default) and macOS (PNG by default) work directly. Photos from iPhone (HEIC) may need to be converted to JPEG first β you can use the SammaPix HEIC Converter for this before decoding the QR code.
What if the QR code reader cannot detect the QR code in my image?
Detection failures have a few common causes. Image quality: the QR code is blurry, low-resolution, or compressed with visible JPEG artifacts that obscure the module boundaries. Perspective distortion: the image was photographed at an angle rather than straight on. Partial coverage: the QR code is partially cut off or covered in the image. Small QR code in a large image: the QR code occupies a tiny fraction of the image β try cropping the image to show primarily the QR code before uploading. Background interference: the QR code has a complex background or the contrast between modules and background is low. For best results, use a sharp, front-facing crop of the QR code with clear contrast between the black modules and the white background.
How does jsQR work to decode a QR code from an image?
jsQR is an open-source JavaScript library that implements the ISO/IEC 18004 QR code decoding specification entirely in the browser. When you provide an image, the browser renders it to a Canvas element and extracts the raw pixel data as an ImageData array (RGBA values for every pixel). jsQR analyzes this pixel data to: locate the three finder pattern squares in the corners of the QR code, determine the orientation and perspective of the code, extract and decode the module matrix, apply error correction (using Reed-Solomon codes) to recover data even from partially damaged codes, and finally decode the data payload according to the encoding mode (numeric, alphanumeric, byte, or kanji). The entire process runs in your browser's JavaScript engine β no server, no network request.
Can the QR code reader also use my device's camera to scan live QR codes?
Yes. The SammaPix QR Code Reader supports both modes: image upload for decoding QR codes from existing files, and camera access for scanning QR codes in real time from your device's camera feed. The camera mode uses the same jsQR library, applied to successive video frames rather than a static image. On mobile, this works like a standard QR scanner app β point the camera at a QR code and the content appears. On desktop, you can use a webcam. For QR codes you receive as images (screenshots, photos, files), the image upload mode is more practical.