QR Code Decoder
Drop in a QR image and read it instantly. Upload files, batch-decode many at once, drag and drop, paste from the clipboard, scan live with the camera, or grab a frame from your screen. Multiple QRs in a single image are decoded together. URLs, Wi-Fi credentials, vCard contacts, mailto, sms, geo, calendar events, and crypto addresses are broken out into typed fields with heuristic link safety hints, and you can export .vcf, .ics, an annotated PNG, or bundle every result into JSON or CSV. All decoding runs in the browser, so screenshots, badges, receipts, and personal photos never leave the device.
- Five input paths: upload, drag and drop, paste, camera, and screen capture
- Batch decode many files at once with a per-file result summary
- Inversion and upscaling retries rescue low-contrast and compressed shots
- Continuous scan mode: read several QRs in a row from the camera, deduped
- Structured fields for Wi-Fi, vCard, email, SMS, geo, calendar, and more
- Link safety hints: HTTPS, shorteners, IDN homographs, raw IP hosts
- Export .vcf, .ics, annotated PNG, or bulk JSON / CSV
- Fully local — images and camera frames are never uploaded
Drop QR images here
PNG, JPG, WebP, GIF, SVG, BMP — drop several at once for batch decoding
Paste is always on — Ctrl + V works after a screenshot
Overview
A local-first QR decoding workbench with five input paths, a resilient decode pipeline, structured payload parsing, link safety hints, and multiple export formats.
- 01
Many ways in
File upload, multi-file drag and drop, clipboard paste, live camera, and screen capture. Press Ctrl + V right after a screenshot, or pull a QR straight from a video call or another browser tab.
- 02
Batch image decoding
Select or drop several files and the decoder processes them in order, grouping results by source file. Progress, decoded count, and skipped files are shown live; export the whole batch at the end.
- 03
Multiple QRs per image
When an image contains several QR codes, the decoder masks each match and keeps scanning, up to 8 iterations. Composite posters, stacked coupons, and merged business cards return every code with a numbered overlay.
- 04
Retry pipeline
Primary decoding goes through ZXing with try-harder; on a miss the tool retries with inverted colours and an upscaled pass. Low-contrast shots, compressed screenshots, and light codes on dark backgrounds hit a much higher success rate.
- 05
Continuous scanning
In camera mode, switch on continuous scan to read many codes in a row without reopening the camera. Duplicates are filtered automatically, perfect for ticket gates, asset tags, and bottle labels.
- 06
Smart payload parsing
Wi-Fi, vCard / MECARD, mailto / MATMSG, tel, sms / smsto, geo, VEVENT, bitcoin, and magnet payloads are broken out into copyable fields with sensible labels.
- 07
Link safety hints
URLs get heuristic checks — HTTPS vs HTTP, shortener domains, IDN / punycode, raw IP hosts, suspicious characters — so you can think before you tap a forwarded QR.
- 08
Useful exports
Save vCards as .vcf for the address book, calendar events as .ics for any calendar app, download an annotated PNG for documentation, or bulk-export every match to JSON / CSV / TXT.
How to use
Pick the fastest path in, then let the decoder parse and structure the result.
- 01
Drag images onto the drop area, click Choose files, or press Ctrl + V to paste a screenshot.
- 02
For a live scan, open the camera and pick the front or back lens. To pull a QR from your screen, click Capture screen and pick the tab, window, or display.
- 03
Enable Find all for composite images, Invert retry for dark-on-light, or Upscale retry for blurry shots.
- 04
Inspect typed fields in the result panel — copy raw text, open the link, save the contact as .vcf, save the event as .ics, or download the annotated PNG.
- 05
For batch jobs, the result list shows progress at the top and offers JSON / CSV / TXT bulk export when finished.
Details
Each path is the fastest in a different situation.
- Screenshot already on disk — upload or drag; drop several at once for a batch run.
- Just screenshotted or copied from chat — Ctrl + V is fastest.
- Decoding a printed poster, table card, or another device screen — open the camera.
- Grabbing a QR from a video call, slide deck, or another browser tab — use Capture screen instead of switching to a screenshot tool.
- Composite image with several QRs — enable Find all before uploading.
- Scanning a batch of tickets, badges, or bottle labels — open the camera and turn on Continuous scan.
- Light code on a dark background fails — enable Invert retry.
- Compressed shot looks fuzzy — enable Upscale retry.
Use cases
QR codes show up in logins, payments, ticketing, contact swaps, coupons, documents, posters, and inventory. A multi-input, batch-capable, structured decoder handles most of these cases without a round trip to a phone.
-
Vet a forwarded QR before scanning
Read the real destination of a QR sent in chat or attached to an email, then decide whether to open it — sidesteps the "scan and hope" reflex behind a lot of phishing.
-
Grab Wi-Fi credentials fast
Snap the QR on a café or meeting-room wall and copy the SSID, password, and encryption right into your phone or laptop without retyping anything.
-
Pull contact cards from a badge
Decode a vCard / MECARD QR from a conference badge or business card and save it as .vcf for the address book, Outlook, or your CRM.
-
Pick apart event and document QRs
Tickets, registration slips, e-invoices, shipping labels, product origin tags — pull out order IDs, tracking numbers, or verification URLs in seconds.
-
Drop event invites into your calendar
Decode a VEVENT QR from a poster and save it as .ics for Apple Calendar, Google Calendar, or Outlook with time and location intact.
-
Grab QRs from video calls and slide decks
Use screen capture to read a QR shown in Zoom, Teams, a webinar, a course slide, or another browser tab — no need to whip out a phone.
-
Batch scan tickets and inventory
Turn on the camera and continuous scan to log a batch of tickets, badges, or asset tags, then export the lot as CSV for reconciliation.
-
QA your QR generator
Reverse-verify that a QR produced by your generator carries the expected payload, that the logo overlay still decodes, and that Wi-Fi / vCard / email payloads match spec.
See also
Want to tweak the payload and emit a fresh code? Use QR Code Generator for that. Working with retail or logistics 1D labels instead? See Barcode Generator . Decoded an unfamiliar dot-dash string? Morse Code Converter turns it back into text. Percent-encoded URLs decoded here can be cleaned up with URL Encoder and Decoder for a readable form.
Best practices
Most decode failures are about capture, compression, and contrast — a few habits go a long way.
- Frame the QR centred and square to the camera; perspective distortion is the top failure mode.
- Shoot in good light and avoid glare; turn on invert retry for light codes on dark backgrounds.
- When copying images from chat apps, prefer the original-size option so compression does not crush the modules.
- For composite images with several QRs, switch on Find all before uploading, otherwise only the first match comes back.
- Read the safety hints before opening a URL — shorteners and raw IPs deserve a second look.
- Live scanning: keep the QR within the centre 70% of the frame, and enable Continuous scan when handling more than one.
- Decoded Wi-Fi passwords are shown in plain text — store them carefully and avoid sharing screenshots.
- If you need to emit a tweaked version of the same payload, jump straight from the result to the QR generator.
- For batch runs, name source files predictably; the CSV export keeps the original filename so reconciliation is easier.
Limitations
Decoding quality depends on the image and the browser — knowing the edges avoids surprises.
- QR Code only — Aztec, PDF417, and Data Matrix are not supported.
- Severely blurry, skewed, glare-covered, or torn codes may not decode.
- Only the first frame of animated GIFs is scanned — extract another frame externally if needed.
- SVG inputs are rasterised before decoding; very complex SVGs may lose precision.
- Camera and screen capture rely on getUserMedia / getDisplayMedia. HTTP pages, restricted corporate networks, and older browsers cannot use them.
- Link safety hints are simple heuristics, not a substitute for a real phishing service.
- Wi-Fi, vCard, and ICS parsing follows common conventions — exotic vendor extensions may be ignored.
- Some QRs are encoded in non-UTF-8 charsets like Shift_JIS or GBK; payloads may show stray characters in that case.
- History lives in the page memory only and is cleared on refresh — nothing is persisted.
FAQ
Common questions about inputs, decode failures, camera and screen-capture permissions, batch jobs, privacy, and exports.
Are images uploaded to a server?
No. Decoding, parsing, and export all happen in the browser. Files, clipboard data, camera frames, and screen-share frames stay in memory — there are no network calls, so sensitive screenshots are safe to use.
How do I decode a QR from a screenshot?
After taking the screenshot, press Ctrl + V on this page to paste it, or click the Paste button to read the clipboard. You can also drop the image into the drop area or pick it via Choose files.
Can it decode QRs forwarded in chat apps?
Yes. Save or copy the image from the chat app, then paste or upload it here. Prefer the chat app's "original size" option to avoid heavy compression.
How does camera scanning work?
Click the camera button, grant camera permission, and pick the front or back lens. Centre the QR in the frame; the scan stops automatically once a code is read. For several codes in a row, enable Continuous scan.
How do I read a QR from my computer screen?
Click Capture screen, then choose the tab, window, or display you want to share. The decoder grabs a frame and reads any QR it finds — ideal for video calls, webinars, slides, or QRs inside another browser tab.
Can I decode many images at once?
Yes. Select or drop several files and the decoder processes them in order, grouping results by source file. Progress, decoded count, and skipped files are shown at the top; export the whole batch as JSON, CSV, or TXT when finished.
What if a single image has multiple QRs?
Switch on Find all. The decoder masks each detected QR and keeps scanning the same image, up to eight iterations. Each result is numbered and outlined on the preview.
My image will not decode — what now?
Common causes are low resolution, blur, glare, severe perspective distortion, or cropping. Try Invert retry and Upscale retry, recapture with better lighting, or move the QR closer to the centre of the camera frame.
Why is a URL flagged with a hint?
Heuristic checks flag HTTP, shortener domains, IDN / punycode, raw IP hosts, and unusual characters such as @ or line breaks. A flag means "look closer," not "definitely malicious".
How do I save a decoded contact or event?
For vCard / MECARD payloads, the result panel shows Save .vcf contact — import the file into the address book, Outlook, or Apple Contacts. For VEVENT payloads, Save .ics event drops the invite into Apple Calendar, Google Calendar, or Outlook.
Can I download the image with the bounding boxes?
Yes. Once decoded, click Download annotated PNG and the decoder renders the bounding boxes onto the original image — handy for PRDs, bug reports, or training material.
Is there a report for batch jobs?
Yes. The bulk export panel on top of the results offers JSON, CSV, and TXT, each carrying every decoded payload along with its type, parsed fields, and source filename — drop it straight into a reconciliation pipeline.
Can I edit a decoded payload and regenerate the QR?
Yes. The result panel links to the QR generator with the original payload ready to edit and re-emit as a new image.
Is the history persisted across sessions?
No. History lives in the page memory only and clears on refresh — so nothing sensitive lingers on shared machines.
Can it scan animated GIFs?
Only the first frame is scanned. Export a different frame externally if the QR appears later in the animation.
Does it support PDF417, Data Matrix, or Aztec?
No. This tool focuses on QR Code. For 1D symbologies like Code 128, EAN, or UPC, see the barcode generator and a dedicated barcode reader.
Why does some decoded text look garbled?
A small number of QRs are encoded in non-UTF-8 charsets such as Shift_JIS or GBK. The decoder reads as UTF-8, so those payloads can show stray characters — ask the producer to switch to UTF-8.
Related tools
Adjacent tasks: build a new QR code, work with 1D barcodes, or translate Morse and URL encoding.