IT
OmnvertImage • Document • Network

QR Code Reader & Scanner

Scan QR codes from your camera or upload a screenshot. URL, WiFi, vCard and plain-text payloads decoded — entirely in your browser.
Image tools →
Scan
Click Start camera, or upload an image with a QR code.
100% client-side: video and uploaded images never leave your browser.
Result
Decoded QR content appears here.
About this tool

QR codes are everywhere — restaurant menus, parking meters, payment links, WiFi posters in cafés, business cards, package tracking labels — and the universal first step on any of them is the same: open the camera, point, decode. The phone OS makes that easy when you have the right phone in hand. The web makes it harder than it needs to be: a desktop user with a screenshot, a tablet user without a working camera, or anyone who wants to inspect a suspicious QR before tapping the link does not have a built-in tool. This scanner closes that gap with a single page that decodes from a live camera or from any image you drop on it, runs entirely in your browser, and recognises the structured payloads phones already understand.

The scanner uses two engines under the hood. On Chrome, Edge, Opera and Android the native BarcodeDetector API decodes a QR in roughly a millisecond per frame — fast enough that hand tremor on the camera does not matter. On Firefox, Safari and any browser that has not shipped BarcodeDetector yet, the page falls back to the open-source jsQR decoder, lazy-loaded only when needed so you do not pay the bundle cost up front. Both paths produce the same results for legitimate QR codes; the speed difference only matters when you are scanning many at once.

Beyond raw text, the tool parses the four payload types phones already auto-handle. URLs are detected and shown with an Open button so you can verify the destination before tapping (a quick way to spot phishing). WiFi payloads are split into SSID, password, encryption and hidden-network fields so you can copy the password into another device by hand. vCard payloads are unpacked into name, phone, email and address fields — useful for desktop users who got a business-card photo from someone in chat. Tel, mailto, sms and geo links are also recognised so they show as the right thing rather than as a cryptic raw string.

Privacy is the headline benefit and worth being precise about. The camera stream is requested via the standard getUserMedia API and stays in browser memory; frames are decoded on the fly without ever being uploaded. Image uploads are read into JavaScript with the File API, decoded by the browser's native image pipeline, and passed through the QR decoder locally. The Network tab in DevTools shows zero outbound requests during scanning. There is no cloud account, no telemetry on the contents of decoded QRs, and the recent-scans history lives in localStorage scoped to your browser only.

The recent-scans history is genuinely useful and a nice quality-of-life improvement over phone-OS scanners. Every successful scan is appended to a list at the bottom of the page, with its detected type (url / wifi / vcard / tel / email / sms / geo / text) shown as a badge. Click any entry to bring it back into the Result panel and re-copy or re-open it. The history persists across reloads and tab restarts via localStorage and caps at 30 entries; you can clear it any time with one click. For desktop QR-heavy workflows (auditing a print run, processing a batch of business cards, verifying multiple WiFi posters) this is exactly the affordance the OS-level scanners on iOS and Android deliberately do not provide.

On the technical side a few details are worth knowing. The camera is requested with `facingMode: 'environment'` so phones use their rear camera by default, but the request gracefully falls back to whichever camera is available. The decoded text is surfaced as soon as the engine finds a valid QR; the tool does not try to identify multiple QRs in the same frame because real-world UX expects one scan at a time. Image uploads are downscaled to a 1280-pixel longest edge before decoding for speed, which leaves plenty of pixel detail for any QR a phone camera could realistically capture. If a scan fails, the most common reason is glare or blur on the source image — re-capture with even lighting and the failure rate drops to near zero.

Use this tool whenever the OS-level scanner is the wrong shape for the job. A laptop user with a QR screenshot, a desktop developer auditing campaign QRs from print proofs, a parent checking that the WiFi QR their kid pasted into chat is safe before joining the network, a marketer reverse-engineering a competitor's contactless menu — all of these workflows benefit from a desktop-friendly, image-friendly, privacy-friendly scanner. The page is one short tab away, has no install step, and the decoded result is ready to copy or open in seconds.

This tool pairs naturally with the rest of Omnvert's QR utilities. The QR Code Generator covers the inverse direction (text or URL → QR). The WiFi QR Generator and vCard QR Generator make the structured payloads this scanner reads. The Bulk QR Generator produces hundreds of QR codes from a CSV; pair it with this scanner during QA to verify a sample of them encode the right URLs before going to print. The QR Code to STL tool turns a QR into a 3D-printable model. Everything in this lineup runs in the browser with the same privacy guarantees, so an entire QR-design workflow happens in a single tab without any byte going to a server.

Use cases
  • Decode a QR from a screenshot on your laptop without picking up your phone.
  • Verify the URL behind a suspicious QR before tapping it on your phone.
  • Pull a WiFi password out of a printed café QR onto your laptop's clipboard.
  • Read a business-card vCard sent to you in chat into structured fields.
  • Audit a print run of campaign QRs against a sample sheet.
  • Read a parking meter or kiosk QR from a friend's photo to find the link.
  • Quick QA of dynamic QR redirects during marketing setup.
How it works
  1. 1Click Start camera (rear camera on phones) and point at the QR.
  2. 2Or click Upload image and pick a screenshot or photo containing a QR.
  3. 3The result panel shows the decoded text, the type, and parsed fields.
  4. 4URLs get an Open button. Other types show parsed fields you can copy.
  5. 5Recent scans are saved in localStorage; click any entry to restore it.
FAQ
Is my camera feed sent to a server?
No. Frames are decoded on the fly inside your browser. The Network tab will show zero outbound requests during scanning.
Why does the scan fail sometimes?
Most failed scans are caused by motion blur, glare, or the QR being too small in frame. Steady the camera, fill more of the frame with the QR, or capture a sharper photo and upload it.
Which engine does it use?
Chrome / Edge / Opera / Android use the native BarcodeDetector API for speed; Firefox / Safari fall back to jsQR (lazy-loaded). Results are identical for valid QR codes.
Can it read WiFi and vCard payloads?
Yes. WiFi payloads are split into SSID, password, encryption and hidden-network fields; vCards are unpacked into name, phone, email and address fields. Tel, mailto, sms and geo links are also detected.
Does it scan multiple QR codes at once?
No — the scanner decodes the first valid QR per frame. For batch decoding, run the QA workflow on each image in turn or use the Bulk QR Generator's index.csv during testing.
Does it store my scans?
Recent scans live in your browser's localStorage scoped to this tool. They are not synced to any server. Clear browser data clears them.
Why doesn't the camera open on iPhone Safari?
Mobile Safari requires camera access to be triggered by a direct user gesture and the page to be served over HTTPS. Tap Start camera and grant the permission prompt; if the prompt does not appear, check Settings → Safari → Camera.