Network

QR & Barcode Scanner

Scan QR codes with your camera or load them from an image file. Everything runs locally in your browser. Nothing is uploaded and nothing is stored.

  • Runs locally
  • Needs camera
  • No uploads

QR and barcode scanner

Live camera decoding

Press "Start camera" or open an image to scan a QR code.
TEXT
Scanning happens on-device. Camera frames are never uploaded.

About this tool

This tool uses your device camera with the browser getUserMedia API and the open-source jsQR library to scan QR codes in real time. It can also decode a QR code from any image file you pick.

No data leaves your device. The camera stream and image pixels are processed entirely on your CPU in JavaScript. There is no backend, no analytics on your scans, and nothing stored between sessions.

Supported code types

  • URL (starts with https:// or http://) - shows an "Open link" button.
  • Wi-Fi credentials (WIFI:T:...;S:...;P:...;) - shows the SSID, password, and auth type.
  • Phone number (tel:) - shows a Copy button.
  • Email (mailto: or a bare email address) - shows a Copy button.
  • Plain text - shows a Copy button.

The jsQR library decodes QR codes only. Linear barcodes (EAN-13, Code 128, etc.) are not supported.

Tips for reliable scanning

  • Hold the camera steady about 15-30 cm from the code and ensure good lighting.
  • If the live camera struggles, try the "Open image file" option with a screenshot or downloaded QR code image.
  • On mobile, the back camera is selected by default for its higher resolution.
  • If you scan a Wi-Fi QR code, the password field lets you copy it directly, so you can paste it into your device's Wi-Fi settings.

About the QR & Barcode Scanner

QR codes encode short pieces of information - a URL, Wi-Fi credentials, a phone number, or plain text - in a square grid of black and white modules. This tool uses the jsQR library to decode that grid frame by frame directly from your camera, with no round-trip to a server. The decode happens on your device in milliseconds.

How camera scanning works

Clicking "Start camera" calls navigator.mediaDevices.getUserMedia() and requests the rear-facing camera on mobile. Each animation frame, the tool draws the video onto a hidden canvas, calls jsQR(imageData.data, width, height), and checks the return value. When jsQR finds a QR pattern it returns the decoded string; the tool stops the stream immediately and shows the result.

Scanning from an image file

You can scan a QR code from a saved photo, screenshot, or downloaded image. The tool loads the file into an <img> element, draws it to a canvas, then runs jsQR on the full image once. This is useful on desktops, on devices without a camera, or when a printed code is too small for live scanning.

What happens with Wi-Fi codes

A Wi-Fi QR code encodes credentials in the format WIFI:T:WPA;S:NetworkName;P:password;;. This tool parses those fields and shows the SSID, password, and authentication type separately, so you can copy the password and enter it manually without having to decode the raw string yourself.

Frequently asked questions

Is my camera footage saved anywhere?

No. The camera stream is processed locally frame by frame. Nothing is recorded, encoded, or sent anywhere. Once you close the tab, there is no trace of the session.

Why did scanning stop after one code?

The tool stops the camera as soon as it successfully detects a code. This avoids repeatedly re-scanning the same code. Press "Start camera" again to scan another.

Can I scan a barcode (not a QR code)?

The jsQR library only decodes QR codes. Linear barcodes like EAN-13 or Code 128 are a different format and are not supported by this tool.

What if the page says "camera not available"?

Your browser may not support getUserMedia, or you may be on a page served over HTTP (not HTTPS) where camera access is blocked. Try a modern browser such as Chrome or Safari, and make sure you are on a secure HTTPS connection. You can still use the file picker to scan QR codes from images.