QR Code Decoder
{{ validCount }} / {{ totalItems }} decoded
Invalid: {{ invalidCount }} · Duplicates pruned: {{ dupePrunedCount }}
{{ sourceLines().length }} line(s) {{ fileThumbs.length }} image(s) Dedupe: {{ dedupe ? 'On' : 'Off' }} Try harder: {{ tryHarder ? 'On' : 'Off' }} Also inverted: {{ alsoInverted ? 'On' : 'Off' }} Angles: {{ angles.sort((a,b)=>a-b).join('°, ') }}° Downscale ≤ {{ downscaleMax }} px Timeout {{ timeoutMs }} ms Concurrency {{ maxConcurrent }}
Images / URLs / data URIs:
{{ recentNotice }}
{{ t.name }} {{ (t.size/1024).toFixed(0) }} KB
# 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 || '—' }}

  
:

Introduction:

Quick Response codes are compact two dimensional barcodes that store text, links, and short records for fast scanning and easy sharing. Use this batch Quick Response code decoder when you want to inspect many images or pasted links without opening anything first, then copy clean results for safe use. Results appear in a tidy table and a structured view so you can review content at a glance and act with confidence.

Decoding happens locally and presents both the readable text and helpful metadata so you can judge trust quickly. You can rotate or invert reads for stubborn photos, cap image size to keep things responsive, and remove duplicates so repeated labels do not crowd your list.

Paste screenshots, drop image files, or provide image addresses, then run a pass and skim the summary. A simple example is checking a set of product stickers to extract the destination links and count how many do not resolve to a valid code.

Be cautious with unfamiliar destinations and copy carefully when transferring codes into other systems. If a picture is very blurry or heavily compressed, a second pass with rotation or inversion often helps.

Technical Details:

Quick Response (QR) symbols encode data as black and white modules; decoding reconstructs the original byte stream and returns the textual form plus diagnostics such as byte length, bit count when available, character set, and error‑correction level. The result is also classified into everyday types like web link, email, phone, short message, geographic coordinate, one‑time password, Wi‑Fi, contact card, or plain text, based on its leading scheme.

The decoder samples pixels from each image frame, optionally downscaling to a target edge and trying checked rotations. For challenging images you can include additional scales and an inverted luminance pass. Decoding stops at the first successful read for a frame and records the scale, angle, inversion flag, and the working size that produced the hit.

Interpretation centers on the content itself. A status of OK means a readable symbol was found; Error indicates either no symbol was detected or the image could not be loaded within the set timeout. Duplicates can be collapsed so repeated content is counted once in summaries.

Comparability depends on the same downscale cap, rotation set, and inversion policy. Using different settings can change which frames decode, so keep them stable when comparing runs across batches or devices.

Processing pipeline
  1. Collect frames from files, image addresses, data URIs, or base64 lines.
  2. Optionally downscale to a maximum edge; compute base scale.
  3. For each configured rotation, rasterize onto a canvas.
  4. For each scale level, attempt a normal read, optionally an inverted read.
  5. On first hit, capture text, bytes, charset, error‑correction, bits, and raw length.
  6. Tag result with angle, scale, inversion flag, and working width × height.
  7. Optionally de‑duplicate identical outputs across the batch.
Symbols and units used in decoding outputs
Symbol Meaning Unit/Datatype Source
bytes Length of decoded text encoded in UTF‑8 integer derived
bits Payload size reported by the decoder when available integer derived
ec Error‑correction level reported by the decoder string derived
charset Character set hint from the decoder string derived
angle Rotation used for the successful pass degrees derived
scale Relative image scale used on the successful pass ratio derived
WxH Working width and height of the rasterized frame pixels derived
Worked example
A 1600 × 1600 photo is processed with a downscale cap of 800.
baseScale = min(1,capedge) =8001600=0.5

The first pass at 0° succeeds with scale 0.50, returning the text, its byte count, the detected content type, and the working size, which you can verify in the table.

Units, precision, and rounding
  • Byte lengths use UTF‑8 encoding and integer counts.
  • Scale is shown with two decimals; angles are 0, 90, 180, or 270.
  • Decimal separator is a period; no thousands separators are used.
Validation and bounds
Field constraints and error messages
Field Type Min Max Step/Pattern Error Text
Images File image/* only read_error, img_error, timeout
Image URLs Text http/https ending .png .jpg .jpeg .gif .webp .bmp .svg img_error, timeout
Data URIs Text data:image/*;base64,… img_error, timeout
Raw base64 line Text 65 ^[A–Za–z0–9+/=]+$ Unsupported line
Angles Buttons 0 270 Allowed set {0, 90, 180, 270}
Downscale cap Number 0 step 1 px; 0 means no cap
Timeout Number 0 step 100 ms; 0 means none timeout
Max concurrency Number 0 0 picks 1 to 4 automatically
Batch status Derived OK or Error No QR found, Decode failed
I/O formats
Accepted inputs and produced outputs
Input Accepted Families Output Encoding/Precision Rounding
Pasted text Image URLs, data URIs, raw base64 Table rows, CSV, JSON UTF‑8 text, integers Scale to 2 decimals
Files image/* Table rows, CSV, JSON UTF‑8 text, integers Scale to 2 decimals
Networking and storage
  • Decoding runs in your browser; images loaded by URL are fetched directly by the browser.
  • No server calls are made for decoding, and nothing is stored server‑side.
Performance and complexity
  • Work scales with frames × rotations × scale levels × inversion attempts.
  • Auto concurrency chooses 1 to 4 workers; you can set an explicit cap.
  • Downscaling reduces per‑frame cost and often improves robustness.
Security considerations
  • Review decoded links before opening; classification helps spot destinations quickly.
  • Do not paste secrets; processing is local but clipboard history may persist outside the app.
Assumptions and limitations
  • Reads Quick Response symbols; other 2D codes are not guaranteed.
  • One symbol is reported per image frame.
  • Very small or blurry images may not decode without downscaling and retries.
  • Cross‑origin restrictions can block loading some image URLs.
  • Base64 detection requires at least 65 characters of valid alphabet.
  • Scale is recorded per successful pass; it does not reflect original size.
  • Duplicate collapse removes repeated content from the result list.
  • Angle choices are limited to the four right‑angle rotations.
Edge cases and error sources
  • Timeout while loading a large image.
  • Image URL returns a non‑image type.
  • Tainted canvas prevents pixel access after cross‑origin load.
  • Heavily compressed screenshots lose fine modules.
  • Low contrast backgrounds require inversion attempts.
  • Skew or perspective distortion reduces detection probability.
  • Non‑UTF‑8 bytes may appear as replacement characters in text form.
  • Very long data URIs may exceed clipboard or address bar limits elsewhere.
  • Multiple symbols in one photo may yield only the first detected.
  • Accidental whitespace in pasted lines creates “Unsupported line”.
Privacy & compliance

Processing occurs in your browser and no data is transmitted or stored server‑side. Always review decoded destinations before visiting them.

Step‑by‑Step Guide:

Quick Response code decoding, summarized from input to interpretation.

  1. Paste image addresses or data URIs, or drop image files into the box.
  2. Optionally toggle Try harder or Also inverted for tough photos.
  3. Select needed rotations with Angles.
  4. Set Downscale cap for large photos.
  5. Choose a Timeout if remote images are slow.
  6. Run a pass and review the table; copy what you need or download CSV/JSON.

Example: Paste three product photo links, enable inversion, select 0 and 90 degrees, then run once to collect the destination links and byte counts.

  • Tip: De‑duplicate to collapse repeated stickers from batch photos.

FAQ:

Is my data stored?

No. Decoding runs in your browser and nothing is kept server‑side. Files you drop never leave your device.

What inputs are supported?

Image files, image URLs ending with common formats, data:image URIs, and long base64 lines. Non‑image text lines are ignored.

How accurate is the decoder?

Clear, well‑lit images typically decode on the first pass. If not, enable extra scales, add 90 degree rotations, or try inversion.

Can I use it offline?

Yes, after it loads. Decoding itself is local. Remote image URLs require connectivity to fetch the files.

What do the metadata fields mean?

Bytes is the UTF‑8 length, Bits is payload size when available, EC is error‑correction level, Charset is the text encoding hint.

How do I decode a data URI?

Paste the full data:image/*;base64,… line on its own and run a pass. Very large lines may take longer to rasterize.

What does a borderline result mean?

It usually indicates a noisy image. A second pass with inversion or a different rotation often resolves it; otherwise recapture the photo.

Does it cost anything?

No licensing terms are shown here; usage is provided as is for inspection and learning.

Copy links with care and avoid opening unknown destinations directly.

Troubleshooting:

  • No rows appear: confirm at least one image file or supported line is present.
  • “Unsupported line”: ensure the line is an image URL, a data URI, or long base64.
  • “No QR found”: add rotations, try inversion, or increase downscale cap.
  • Timeouts on URLs: raise the timeout or download the image and drop the file.
  • Colors look inverted: enable the inversion attempt.
  • Large photos stall: set a downscale cap near 1024 px.
  • Duplicate rows: enable de‑duplication in Advanced.

Advanced Tips:

  • Tip Keep settings constant across batches to compare success rates reliably.
  • Tip Start with 0 and 90 degrees; add 180 and 270 only if needed.
  • Tip Downscale very high‑resolution photos to reduce noise and speed up reads.
  • Tip Use de‑duplication when scanning the same sticker from multiple angles.
  • Tip Copy all decoded content for quick sharing, or download CSV/JSON for auditing.
  • Tip If text shows strange characters, check the charset hint before assuming corruption.

Glossary:

Quick Response code
Two dimensional barcode encoding data as square modules.
Content type
A rough classification of decoded text, such as link or contact.
Error‑correction (EC)
Redundancy level reported by the decoder for the symbol.
Charset
Hint describing how bytes map to readable characters.
Data URI
An image embedded directly in text using base64 encoding.
Downscale cap
Maximum image edge used for processing to control workload.