QR code reader for images
Extract the URL or text from a QR code you already have as a picture — a screenshot, a photo of a poster, a code embedded in a document. Paste it, drag it in or pick a file, and the contents appear along with the host the link points at.
The picture is read inside this tab and never leaves your device. The decoder is a JavaScript file served from this site — not a CDN, not an API — and it is only fetched once you actually supply an image, so opening this page downloads almost nothing.
What the code contains
A QR code can point anywhere, and the printed square gives you no clue where. Read the host above before you open it — a sticker slapped over a car park sign is the whole point of checking.
How reading a QR code from an image works
Your image is drawn onto a canvas, the raw pixels are handed to a decoder, and the decoder looks for the three large squares in the corners that every QR code carries. From those it works out the grid's position, rotation and perspective, samples each module as light or dark, and runs the Reed–Solomon error correction that repairs whatever was missing. If the correction succeeds, the bytes underneath are the payload — usually a URL, sometimes plain text, sometimes structured data such as a Wi-Fi login.
Two practical adjustments happen along the way. Very large photographs are scaled down so the longest edge is around 1,600 pixels; a 48-megapixel image contains no more usable detail for this job than a 2-megapixel one and takes far longer to process. And if the first attempt finds nothing, the image is redrawn at double that size and scanned again, because a small or previously downscaled screenshot sometimes only has enough pixels per module once it has been enlarged. Both inversions are tried too, so a white-on-black code reads as happily as a black-on-white one.
Pasting is the fastest route and the one most people want. Take a screenshot of whatever is showing the code, click anywhere on this page and press Ctrl+V — or Cmd+V on a Mac — and the decode starts immediately. Dragging a file in and picking one through the file dialogue do exactly the same thing.
Questions people ask
Why is there no camera scanner on this page?
Because it would ask for a camera permission that most visitors here do not need. If a QR code is in front of you on paper, your phone's own camera app already scans it from the lock screen and does it better. The gap this page fills is the other case: the code is already on your screen, inside a screenshot, an email attachment, a PDF export or a photo someone sent you, and pointing a camera at your own monitor is an awkward way to read it. So this tool takes images only, and says so rather than quietly leaving the feature out.
My image will not decode — what should I try?
Crop tightly around the code first; that single change fixes most failures, because it raises the number of pixels per module in what the decoder actually receives. Beyond that, check the obvious: the code must be complete, with all three corner squares and a little clear space around them. Photographs taken at a steep angle, in poor light, or with motion blur often fail. So do screenshots that were resized down before saving, and codes printed light grey on white. If you have the original file rather than a re-shared copy, use it.
Is it safe to open a link from a QR code?
Treat it exactly like a link in an email from a stranger. The square itself is unreadable to a human, which is precisely why fraudulent codes get stuck over legitimate ones on parking meters, restaurant tables and delivery notices. That is the reason this tool shows the decoded text and the host name before offering to open anything. Check that the host is the organisation you expect, and be wary of lookalike spellings, unfamiliar top-level domains and link shorteners that hide the real destination.
What kinds of data can a QR code hold?
Any text at all, up to a few thousand bytes. Conventions have grown up around prefixes, and the tool names the ones it recognises: a web link, a mailto: address, a tel: number, an SMSTO: message, a WIFI: block that phones use to join a network, or a vCard contact. Anything without a recognised prefix is simply reported as plain text — a table number, a serial number, a ticket reference. A bare host such as www.example.com is flagged separately, because without a scheme it is not something the browser can be asked to open.
Does the image get uploaded anywhere?
No. There is no server involved in the decode and no request goes out once the decoder file has loaded. You can confirm it: open your browser's developer tools, switch to the Network panel, and read a second code — nothing appears. The image is never written to storage either, not to cookies and not to local storage, so there is no history of what you scanned. Close the tab and it is gone.
Can it read a code out of a PDF or a video?
Not directly — it needs an image file. For a PDF, take a screenshot of the page showing the code and paste that, which works fine because the code only has to be legible, not high resolution. For a video, pause on the frame and screenshot it. If a single image happens to contain several QR codes, the decoder returns the first one it locks onto; crop to the one you want if that is not the right one.