Batch QR Code Reader
Read the QR codes in many images at once. Add PNG, JPEG, WebP and other image files and get the decoded text of each one as a table, plain text, or JSON.
Input
Output
| File | Status | Decoded text |
|---|---|---|
| Add images to read their QR codes | ||
Readme
Tool description
This tool reads the QR codes in many images at once. Add as many image files as you like, and the tool decodes every QR code it finds in each one and lists the results next to the file name. An image with several QR codes gives several rows. It is the quick way to pull the links, Wi-Fi settings, contact cards, or tickets out of a folder of screenshots and photos instead of scanning them one by one.
Scanning uses the ZBar library compiled to WebAssembly and runs entirely in your browser, so your images are never uploaded. It works in any modern browser. It reads QR codes that are rotated or have a transparent background, and it can read an image that is entirely light on dark.
Features
- Add several images at once by dragging them in or browsing for them
- Reads every QR code in an image, listed from top to bottom and then left to right
- See the result of every file in a sortable table with its status
- Switch to plain text with one decoded value per line, or to JSON that keeps the file name, status, and value
- Files without a QR code, and files that are not readable images, are reported instead of silently skipped
- Copy or download the text and JSON output
Notes
Supported image formats depend on the browser, and usually include PNG, JPEG, GIF, WebP, BMP, and AVIF. Small, blurry, or heavily cropped QR codes may not be detected. In an image that mixes normal and inverted (light on dark) codes, the inverted ones are only read when no normal code is found.
JSON output
The JSON tab gives an array with one entry per decoded QR code. A file with several QR codes appears once for each code, and a file with no readable code appears once with a null text. The output follows this JSON Schema:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "array",
"items": {
"type": "object",
"properties": {
"file": {
"type": "string",
"description": "Name of the image file"
},
"status": {
"enum": ["found", "notFound", "unreadable"],
"description": "found: a QR code was decoded. notFound: the image has no QR code. unreadable: the file is not an image the browser can open."
},
"text": {
"type": ["string", "null"],
"description": "Decoded text of the QR code, or null unless the status is found"
}
},
"required": ["file", "status", "text"],
"additionalProperties": false
}
}For example, one image with two QR codes, one image without a QR code, and one file that is not an image:
[
{ "file": "poster.png", "status": "found", "text": "https://example.com" },
{
"file": "poster.png",
"status": "found",
"text": "WIFI:T:WPA;S:Guest;P:secret;;"
},
{ "file": "logo.png", "status": "notFound", "text": null },
{ "file": "notes.txt", "status": "unreadable", "text": null }
]