# | Source | Status | Type | Content | Bytes | Format | Charset | EC | ZX | Bits | Raw | Angle° | Scale | Inv | WxH | Copy |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
{{ row.idx }} | {{ row.sourceLabel }} | {{ row.valid ? 'OK' : (row.error || 'Error') }} | {{ row.derivedType || '—' }} | {{ row.text || '—' }} | {{ row.bytes || '—' }} | {{ row.format || '—' }} | {{ row.charset || '—' }} | {{ row.ec || '—' }} | {{ row.zx || '—' }} | {{ row.bits !== '' ? row.bits : '—' }} | {{ row.raw !== '' ? row.raw : '—' }} | {{ row.angle !== '' ? row.angle : '—' }} | {{ row.scale !== '' ? row.scale : '—' }} | {{ row.inv || '—' }} | {{ row.wh || '—' }} |
Quick Response (QR) codes are two‑dimensional barcodes that store text or structured payloads in small square modules. When people say QR, they usually mean a matrix symbol you scan to retrieve readable content. Use this decoder when you need to decode QR codes from images and URLs without installing software for quick checks and batch reviews.
You provide pictures from your device by dropping them in or selecting them, or paste image links, data URIs, or long base64 lines when files are not handy. The decoder returns readable text plus helpful context such as the kind of content, character set, bytes, and error correction hints. You can export rows to a table or structured JSON for auditing or reuse.
Imagine a shipping label that hides a short link and a second code that encodes Wi‑Fi settings. You drop a screenshot or paste the image address and see one row that shows a URL and another that shows a Wi‑Fi payload you can review. Check destinations and text before you open or share anything, and treat unknown codes with care.
You can nudge accuracy by rotating candidates, trying inverted light on dark codes, or scanning at a few scales when needed. For galleries and pasted lists, run batches with measured concurrency and optionally remove duplicates so reviews stay tidy. These choices balance speed with coverage and let you focus on what the codes actually say.
Behind the scenes, a dual‑engine pipeline rasterizes each image into pixel data and tests multiple pass combinations depending on your settings. The decoder may downscale large edges to a working canvas, rotate by allowed angles, and optionally try light on dark inversion. Each pass first attempts a QR reader that returns metadata including character set, error correction level, bits, raw bytes length, and barcode format. If that fails, a secondary reader searches for a plain data string. Successful hits are recorded with the pass parameters and byte counts derived using UTF‑8. Batches run with bounded concurrency so order remains stable while throughput improves on multi‑core devices.
Symbol | Meaning | Unit/Datatype | Source |
---|---|---|---|
W,H | Raster frame width, height | px | Derived |
a | Rotation angle | degrees | Input |
s | Scale factor per pass | unitless | Derived |
t | Per‑image timeout | ms | Input |
c | Max concurrency | tasks | Input/Derived |
inv | Inversion attempt | boolean | Input |
d | De‑duplicate rows | boolean | Input |
bytes | Length of decoded text | bytes | Derived |
bits | Encoded bit count | bits | Derived |
raw | Raw byte length | bytes | Derived |
ZX | Barcode format label | string | Derived |
EC | Error correction level | string | Derived |
CS | Character set | string | Derived |
Parameter | Meaning | Unit/Datatype | Typical Range | Sensitivity | Notes |
---|---|---|---|---|---|
De‑duplicate | Remove identical OK texts or identical errors | boolean | off or on | Low | Neutral when off |
Try harder | Add extra reduced‑scale passes | boolean | off or on | Medium | Adds more attempts per image |
Also scan inverted | Test light on dark codes | boolean | off or on | Medium | Helps inverse designs |
Angles | Rotations to attempt | set | 0°, 90°, 180°, 270° | High | More angles increase coverage |
Downscale max edge | Cap the longest image edge | px | 0 or positive integer | Medium | 0 keeps original size |
Per‑image timeout | Abort slow image loads | ms | 0 or positive integer | Medium | 0 means no timeout |
Max concurrency | Parallel decode limit | integer | 0 auto yields 1–4 | Medium | Higher values may help on multi‑core |
Constant | Value | Source | Notes |
---|---|---|---|
Allowed angles | [0, 90, 180, 270] | Code | Order normalized ascending |
Scale levels | [1, 0.85, 0.7] | Code | Extra levels only when “try harder” |
Auto concurrency | 1–4 tasks | Code | Derived from hardware threads |
Field | Type | Min | Max | Step/Pattern | Error Text | Placeholder |
---|---|---|---|---|---|---|
Images | file input, multiple | — | — | accept="image/*" | read_error, img_error | Drop or browse |
Downscale max edge | number | 0 | — | step 1 | — | 0 = original size |
Per‑image timeout | number | 0 | — | step 100 | timeout | 0 = no timeout |
Max concurrency | number | 0 | — | step 1 | — | 0 = auto (1–4) |
Angles | checkboxes | — | — | allowed: 0, 90, 180, 270 | — | — |
Input | Accepted Families | Output | Encoding/Precision | Rounding |
---|---|---|---|---|
Local image files | PNG, JPEG/JPG, WebP, GIF | Decoded text with metrics | UTF‑8 bytes; scale shown to 2 decimals | Fixed decimals via built‑in rounding |
Remote image URLs | http(s) ending .png .jpg .jpeg .gif .webp .bmp .svg | Decoded text with metrics | Loaded in browser with cross‑origin hints | As above |
Data URIs | data:image/* | Decoded text with metrics | Rendered directly in the browser | As above |
Bare base64 line | [A–Z a–z 0–9 + / =], length > 64 | Wrapped as data:image/png | Standard base64; decoded as PNG image | As above |
CSV / JSON export | — | Rows or structured payload | Includes inputs, totals, and items | Scale to 2 decimals in CSV |
Input: one image URL line https://example.com/offer-qr.png
.
Settings: angles 0° and 90°, try harder on, inverted off, downscale cap 1600 px, concurrency 3.
Result: one OK row with type URL, a readable link, byte length, format label, error correction level, pass angle, and raster size.
Files are processed locally in your browser; nothing is uploaded. When you paste an external image link, your browser fetches that image directly; the app does not store or transmit decoded data to a server.
Start with a single image or a batch. Then refine passes only if needed.
Example: Paste two PNG links and tick 0° and 90°. One row shows URL with readable text; the other shows Text content. Export CSV for a quick audit log.
No. Decoding happens in your browser. Local files are read directly, and pasted links load as images without sending results to a server.
Image files, image URLs that end with common extensions, data:image URIs, and long base64 lines that become PNG images are accepted.
Accuracy depends on contrast, resolution, rotation, and design. Try angles, reduced scales, and inversion when the first pass fails.
Local files and data URIs decode in the browser. External image links require a network connection to load the image.
Some sites block pixel access across origins. In those cases the browser cannot expose image data for decoding.
They include your input settings summary, totals, and rows with text, bytes, character set, format label, error correction level, angle, and raster size.
When enabled, duplicates are pruned by exact text for OK rows or exact error text for failed rows.
No sign‑in is required. You can decode and export immediately.
data:image/…
.