Read any QR code with your camera or from an image file — decoded in your browser.
Nothing is recorded or uploaded: the stream stays on your device and stops when you leave this page.
A QR code is a two-dimensional barcode that stores text: a link, a Wi-Fi password, a Pix payload, a contact card. This reader decodes any of them in two ways: with the camera, pointed at a code on a screen, a poster or a receipt, or from an image file — a screenshot or a photo, the usual route on a desktop with no webcam and the way to read a code someone sent you.
Decoding happens entirely on this page, and the scanner is only downloaded when you ask for a scan, to keep the page light. From the camera, each frame is drawn onto an invisible canvas, scaled down for speed and handed to the decoder about twelve times per second: it locates the three large finder patterns in the corners, works out the module grid, reads the black and white squares and rebuilds the original bytes with the Reed-Solomon error correction every QR code carries — which is why a code still reads with a logo printed over it or a scuffed corner. Reading a file runs the same steps once, plus an extra pass for codes printed light-on-dark.
A reader's real job is to show what a code contains before you act on it. A QR code is opaque by design: you cannot tell a legitimate parking-meter sticker from one a scammer pasted over it until something decodes it. So this tool shows the decoded text as text and never turns a link into something clickable — you read the address and decide. It also points out when the content looks like a Pix payload or Wi-Fi credentials, so you check the receiver and the amount in your bank app first. Nothing is recorded: the stream stops when you press Stop or leave the page, and no frame, file or decoded text leaves your device.
No. Nothing is uploaded, ever. Camera frames and any image file you pick are drawn on a canvas inside this page and decoded by JavaScript on your own device — no frame, no file and no decoded text reaches Vai.la or any other server, and nothing is kept after you close the page.
Three things can block it. The browser needs your permission — if you denied it, click the padlock in the address bar and allow the camera for this site. The page must be served over HTTPS, because browsers refuse camera access on insecure connections. And the device needs a camera: on a desktop without a webcam, use the image-file option.
Yes. Choose "Read from an image file" and pick any PNG, JPG or WEBP from your device — screenshots, photos taken with another camera and codes received in a message all work.
Not automatically. Malicious QR codes — stickers pasted over real ones on parking meters and payment terminals — are a real phishing technique, so this reader shows the address as plain text and never makes it clickable. Read the domain carefully before opening it, and distrust shortened or misspelled ones.
Usually focus, light or framing. Hold the code steady until the camera focuses, avoid glare from a screen, and let the code fill a good part of the frame. Very small or heavily stylised codes read better from a close-up photo through the image-file option.
Any standard QR code, in every version and error-correction level: text, links, Wi-Fi credentials, vCards, calendar events or Pix payloads. It does not read linear barcodes such as EAN-13 and Code 128, nor Data Matrix and PDF417.
Vai.la creates short links and QR Codes with click tracking, for free.
Vai.la is not responsible for how the tools are used or for decisions made based on their results.