Read a QR code from a picture
Drop in a photograph or a screenshot and see exactly what the code says — the full link, the Wi-Fi password, the contact card — before you do anything about it. Nothing opens on its own.
- Never stored
- No queue, no waiting
- No signup, no watermark
How it works
Add the picture
A screenshot, a photo of a poster or a menu, a saved image. Paste from the clipboard if it is already there.
Read what it holds
A link is shown in full, a Wi-Fi code as its network and password, a contact card as its fields. Several codes in one picture are all found.
Decide
Copy the text, or follow the link if you want to. Nothing is opened, dialled or joined for you.
What the decoder tells you about the code
Decoding a QR code is arithmetic rather than recognition, so the result comes with facts about the symbol as well as its contents — including the error-correction level the code was made with. That is a small thing that occasionally matters: a code produced at the lowest level has about seven per cent redundancy and will stop reading after very little wear, which is worth knowing if you are about to reprint somebody else's artwork rather than generate your own. Up to thirty-two symbols are found in one picture, identical results across the search passes are merged, and anything the decoder itself marks as not valid is thrown away rather than shown to you as a guess.
The text is then interpreted, and two of the checks are the reason to read a code here instead of pointing a phone at it. A web address whose host mixes alphabets, or carries a punycode label, is flagged — that is the shape of a domain spelled with a Cyrillic character that looks exactly like a Latin one, which is not something you can see by reading the link. A plain, unencrypted address is flagged separately, with the advice not to type a password or a card number into it. Only http and https addresses are turned into links at all; a payload using any other scheme is shown to you as text and stays text.
Beyond links, the page recognises Wi-Fi credentials, vCard and MeCard contacts, calendar events, mail, telephone and text-message payloads, a map point, a retail product number and a one-time-password secret — the kind used to set up two-factor authentication, which is a genuinely good reason for a decoder not to involve a server. A product number whose check digit does not agree with the rest is flagged as probably misread rather than reported as a fact. A Wi-Fi code is parsed with the escaping rules the format specifies, so a password containing a semicolon survives intact, and an open network with no password at all is called out.
When you want something else
The search is three passes deep and then it stops. A code that is a small part of a large photograph, badly out of focus, or missing more than error correction can rebuild will not be recovered by trying again — take the picture again instead, closer and squarer, filling more of the frame. There is no camera here and no live scanning, which is the one thing a phone does better; if the code is physically in front of you, the phone's own camera app will read it, and this page is for the screenshot, the PDF and the photograph you were sent.
For anything repeated — a folder of tickets, a sheet of labels, a batch of scanned forms — this is one picture at a time and the job is a command. ZBar's zbarimg reads codes out of image files from a shell loop and prints what it found, and Python's pyzbar does the same inside a script. Both are free, both handle a thousand files without a thousand clicks, and neither of them checks the things this page checks, so a batch decode is a decode and the judgement about a suspicious address remains yours.
Frequently asked questions
Why read a QR code instead of just scanning it?
Because scanning with a phone usually means acting on it — the link opens before you have seen where it goes. A printed QR code is an instruction from a stranger, and stickers placed over the real code on parking meters and menus are now a common enough fraud to have a name. Reading it here shows you the full address first and flags a few of the tricks, and nothing happens until you decide it should.
Does this use my camera?
No. This reads a picture you already have — a screenshot, a photo from your camera roll, an image someone sent you. There is no camera permission to grant and no live scanning. If the code is in front of you, photograph it with your phone first and drop the photo in.
Is my picture stored anywhere?
No. The picture is never stored and never sent anywhere — which matters more here than almost anywhere else on this site, because a code can hold a Wi-Fi password, a payment request or a two-factor secret.
What kinds of code can it read?
QR codes of every version, Micro QR and rMQR, plus the other square formats: Data Matrix (on electronics and packaging), Aztec (on rail and airline tickets), PDF417 (on driving licences and boarding passes) and MaxiCode. Striped product barcodes have their own page.
It says my code is a Wi-Fi network. What do I do with that?
The network name, the password and the security type are shown as separate fields, so you can read the password and type it in yourself. Nothing joins the network for you. A code offering an open network with no password is flagged, because anything you send over one can be read by others nearby.
It found nothing. Why?
Usually because the code is small in a large picture, badly blurred, or partly cut off. Three passes are made — the picture shrunk, at full size, and with camera noise cleaned up — and the code is looked for upside down and inverted as well. If all of that fails, a closer and sharper photograph almost always works. A code with more than about a third of it damaged or obscured cannot be recovered.
Can it read several codes in one picture?
Yes — a sheet of codes, or a page with two or three on it, comes back as a list with each one read separately.
Good to know: This reads a picture, not a live camera feed. A code that is badly damaged, heavily obscured or too small to resolve cannot be read — error correction recovers a scratch or a logo in the middle, not a missing third. Nothing in the code is acted on automatically, which is deliberate.
Put this tool on your website
Free for any blog, class page or help article. Paste one snippet and your visitors can use it right on your page.