Zen QR
Zen QRScan with calm.

A QR reader that works in your browser

Got a QR code as a screenshot, in a PDF, or printed in front of you? Drop the image here or point your camera at it. Decoding happens locally in your browser — the image never uploads anywhere.

Two ways to scan

Image mode: drop a screenshot, photo, or PDF page into the upload area. Camera mode: grant camera access and point at the code — the reader samples frames continuously until it finds a code. Both modes use the same jsQR decoder, which handles damaged codes, rotated codes, and partial-frame codes well.

What it can read

All eight standard QR content types: URL, plain text, WiFi network, vCard contact, email (mailto:), phone (tel:), SMS, and geo coordinates. The reader detects the type automatically and offers the right "open" action — clicking on a URL opens the browser, a WiFi code prompts to join, a vCard opens contacts.

Decoded in your browser

Camera frames stay on your device. Dropped images stay on your device. There's no upload, no server-side decoding, no logging of what you scanned. The /api/qr/decode endpoint exists for programmatic callers (curl, scripts) but the in-browser flow never touches it.

When the reader fails

Some codes won't read — usually because the image is too low-resolution, too low-contrast, partially obscured, or the QR was generated with an obscure non-standard encoding. Try cropping closer to the code, increasing the image size, or printing the code and scanning the print with your phone's camera as a sanity check.

How to use it

  1. 1

    Pick a mode: image or camera

    Image is for screenshots, photos, or PDF pages with a QR somewhere in them. Camera is for printed codes in front of you right now.

  2. 2

    Drop the image (image mode)

    Drag a PNG/JPG into the upload area, or click to pick a file. The decoder runs on a canvas — your image never leaves the page.

  3. 3

    Point the camera (camera mode)

    Grant camera permission. Aim at the code, hold steady for a moment. The reader samples frames ~5 times per second until it finds a code.

  4. 4

    Review the result

    The reader shows the decoded text and detects the type (URL, WiFi, vCard, etc.). It offers the right "open" action for the type — browser for URLs, contacts for vCard, and so on.

  5. 5

    Copy, open, or save

    Copy the raw text, open the detected action, or paste it into another app. All client-side.

Who uses it

Office workers

QR codes in slides, in PDFs, in emails — without picking up your phone.

Tech support

Customers send a photo of a label; you decode it on your screen instead of asking them to read it out.

Auditors

Asset tags photographed in bulk, decoded later from your laptop.

Researchers

Older papers, old packaging, archive material with QRs — the reader handles damaged codes well.

Frequently asked

Does it work offline?
Yes — once the page is loaded, all decoding happens locally. You can disconnect from the internet and the reader still works.
Will my camera footage be uploaded?
No. Camera frames are processed in-browser via JavaScript. Nothing leaves your device.
Can I read multiple QR codes in one image?
Not yet — the current reader returns the first code it finds. If you need batch reading, drop us a line and we'll prioritize.
Why isn't the camera working?
Your browser needs camera permission. On iOS, Safari prompts on first use. On Android Chrome, click the camera icon in the address bar to grant access. Camera access requires HTTPS — local file:// URLs won't work.

Got a QR code as a screenshot, in a PDF, or printed in front of you? Drop the image here or point your camera at it. Decoding happens locally in your browser — the image never uploads anywhere.

Online QR Code Reader — Scan from image or camera | Zen QR