AnyTool
Your files never leave your device. All processing happens locally in your browser.

How do I scan or read a QR code on my computer?

Open AnyTool QR Code Reader. Choose “Scan with camera” to point a QR code at your webcam — it decodes live and outlines the code — or choose “Upload image” to drop, paste or pick a screenshot or photo of a QR code and decode it once. The tool reads the content, detects its type (link, WiFi, email, phone, SMS, location, contact or calendar event) and lets you copy it or open a link after a safety check. Everything runs in your browser, so the camera feed and images are never uploaded.

  • Scan live from your camera or decode a QR code from an uploaded image
  • Uses your browser’s native BarcodeDetector when available, with a bundled jsQR fallback for every browser
  • Detects the payload type — URL, WiFi, mailto, tel, sms, geo, vCard contact, calendar event — and parses it
  • Copy the result, open links behind a “quishing” safety warning, and keep a per-tab scan history
  • 100% client-side — the camera feed and images are processed locally and never leave your device

What is

Quishing (QR Code Phishing)

Quishing is phishing that uses a QR code to hide a malicious link. Because a QR code is unreadable to the human eye, an attacker can encode a link to a fake login or payment page; scanning it opens the site without the usual visual cues of a suspicious URL. The defence is to preview the decoded address before opening it and never enter passwords or payment details from a code you did not expect.

Generators

Related terms

QR codeBarcodeDetector APIPhishinggetUserMedia

Frequently Asked Questions

Yes. The camera feed and any image stay in your browser and are never uploaded, and links open only after you confirm.

AnyTool QR Code Reader decodes entirely on your device — the camera stream and any image you upload are processed in your browser and are never recorded or sent to a server, so there is no account, no upload and no storage. Scanning a code only reads its text; nothing is opened automatically. When a code contains a link, the tool shows you the address and an explicit warning before you open it, because QR codes can point to malicious sites (“quishing”). Always verify the address and never enter passwords or payment details from a code you did not expect.

Yes. Switch to Upload image, then drop, paste or pick a screenshot or photo of the QR code to decode it.

Choose “Upload image” and drop a file onto the page, paste an image from your clipboard, or click to pick one. The picture is drawn to a canvas and decoded once, and the located QR code is outlined on the preview. This is ideal when you receive a QR code on the same device you are reading it on, or when a code is too small or damaged to hold steady in front of a camera. The image is processed in your browser and is never uploaded.

Usually the code is too small, blurry, damaged or low-contrast, or the light is poor. Improve the light, hold steady, or upload a sharp photo.

A QR code reads best when it is sharp, well-lit, flat and fills the scanning reticle. Scans fail most often from motion blur, glare, dim light, a damaged or partially covered code, or a code printed too small. Try steadying your hand, improving the lighting, moving closer, or — if the live scan struggles — taking a clear photo and using the Upload image mode instead. Some browsers (Firefox and Safari) lack the fast native barcode detector, so AnyTool falls back to a bundled decoder that works the same way but can be a little slower.

Yes. Chromium browsers use the fast native BarcodeDetector; Firefox and Safari use a bundled jsQR fallback automatically.

The tool first tries the browser’s native BarcodeDetector API, which is hardware-accelerated and available in Chromium-based browsers such as Chrome, Edge and Opera, and on Android. In browsers that do not ship it yet — notably Firefox and Safari — it automatically loads jsQR, a tiny pure-JavaScript decoder bundled with the page, so scanning still works everywhere. Live camera scanning additionally needs camera permission and a secure (https) page; image decoding works without a camera.

Detailed Explanation

Technical Details

How the QR Code Reader Decodes

AnyTool QR Code Reader works two ways, both entirely in the browser. For live scanning it calls navigator.mediaDevices.getUserMedia({ video: { facingMode: 'environment' } }) to open a back-facing camera into a muted, playsInline video element, then runs a requestAnimationFrame loop that draws each frame to an offscreen canvas, reads the pixels with getImageData and decodes them. For image decoding it draws a dropped, pasted or uploaded picture to the same canvas and decodes it once. Decoding tries the native BarcodeDetector API first — new BarcodeDetector({ formats: ['qr_code'] }).detect(source) — which is hardware-accelerated in Chromium-based browsers and on Android, and falls back to jsQR, a tiny pure-JavaScript decoder lazily imported into its own chunk, in browsers that do not ship the API (notably Firefox and Safari). On a hit it draws the detected code’s location box over the preview and optionally plays a short WebAudio beep.

  • Camera: getUserMedia → video → canvas → getImageData → decode in a rAF loop
  • Image: dropped, pasted or uploaded picture decoded once on a canvas
  • Native BarcodeDetector (Chromium / Android) with a jsQR fallback everywhere
  • jsQR is lazily imported into its own chunk, so it is not in the app shell
  • Detected code is outlined on the preview; an optional beep confirms a scan
Methodology

Payload Type Detection and Safety

Once a code is decoded, the tool classifies the payload and parses it into friendly fields: a plain or bare-domain link, a WiFi credential (WIFI:T:WPA;S:ssid;P:password;; with SSID, security and password unescaped), an email (mailto: with subject), a phone number (tel:), an SMS (SMSTO:/sms:), a geographic location (geo:lat,lng), a vCard 3.0 contact (name, organisation, phone, email, website, address) or an iCalendar event (summary, start, end, location). Links are opened only after an explicit confirmation step that shows the destination hostname and warns about QR-code phishing (“quishing”), and non-web actions such as mailto:, tel:, sms: and geo: are shown as hints rather than triggered automatically. Results can be copied, and every scan is kept in a per-tab history with a copy and open-link shortcut.

  • Detects URL, WiFi, email, phone, SMS, geo, vCard and calendar-event payloads
  • WiFi and vCard fields are unescaped and parsed into readable rows
  • Links open only after a confirmation that shows the hostname (anti-quishing)
  • Action URIs (mailto:, tel:, sms:, geo:) are shown, never auto-triggered
  • Copy any result; per-tab scan history with copy and safe open
Privacy & Security

Privacy and Honest Limitations

All decoding happens on the device: the camera stream and any uploaded image are processed in the browser and are never recorded or sent to a server, there is no account or storage, and the scan history lives only in the open tab. The camera runs only while scanning is active — stopping the scan or leaving the page stops every media track (turning the camera light off), cancels the animation-frame loop and revokes object URLs. The tool is candid about its limits: damaged, tiny, blurry or low-contrast codes may not read, so good light, a steady hold and filling the reticle help, and a sharp photo via Upload image is a reliable alternative; the fast native BarcodeDetector is absent in Firefox and Safari, where the bundled jsQR fallback is slightly slower; live scanning requires camera permission and a secure (https) page; and users should always verify a decoded link before opening it and never enter credentials from an unexpected code.

  • Camera feed and images are processed locally and never uploaded
  • Stopping or leaving the page releases the camera and cancels the loop
  • Scan history is per-tab only — nothing is stored on a server
  • Damaged, tiny or low-contrast codes may not read — use light, steadiness or a photo
  • Live scanning needs camera permission and a secure (https) context
QR code reading: in-browser (AnyTool) vs typical online scanners
CapabilityAnyToolTypical online scanners
ProcessingRuns in your browser, no CDNOften uploads the image to a server
PrivacyCamera feed & images never leave the deviceImage may be uploaded and stored
InputLive camera + uploaded/pasted imageOften image upload only
DecoderNative BarcodeDetector + bundled jsQR fallbackServer-side library
Type detectionURL, WiFi, email, phone, SMS, geo, vCard, eventOften raw text only
Link safetyHostname shown + quishing warning before openingRarely warns
Cost / signupFree, no signup, no watermarkOften gated or ad-heavy

AnyTool decodes every QR code locally in the browser and uploads nothing — neither the camera feed nor any image.