Why I built this
Most QR readers in app stores want camera permission, contacts permission, and your email for a "free" feature that should take 50 lines of JavaScript. OhMyQR Reader uses your browser's built-in camera API and the open-source jsQR decoder. Nothing is uploaded.
How to use
- Image upload: drop a saved photo of the QR code. Decoded instantly.
- Camera: click Start camera, point at a QR code. We auto-stop when found.
- Click the link if it's a URL, or copy the decoded text for anything else.
FAQ
Is my camera feed sent anywhere? No. The camera stream stays in your browser via the standard getUserMedia API. We read individual frames into a hidden canvas and decode them with jsQR (open-source pure JavaScript). No video, no images, no decoded text leaves your device.
Why does my image fail to decode? jsQR works best when the QR code occupies most of the image, has high contrast (dark dots on light background), and is roughly square in the frame. Crop tightly, increase contrast, or rotate the image so the code is upright.
Does this work on all QR variants? Yes — standard QR codes (versions 1–40), including high error-correction codes with logos in the center. It does not decode Aztec, Data Matrix, or PDF417 — those are different barcode formats.
Can I use my phone's back camera? Yes. We request the rear (environment-facing) camera by default on phones. Some browsers may pick the front camera if the back is busy — close other camera apps and reload.