QR Code Reader
Decode the QR code in an image, and read what it actually contains before you act on it.
What this tool does
QR Code Reader draws each image onto a canvas in this browser tab and hands the pixels to jsQR, a decoder written in JavaScript. What comes back is the exact string encoded in the pattern, together with the symbol version, so you are looking at the payload itself rather than at wherever a phone camera would have taken you.
Every decoded string is also given a label. A payload beginning WIFI: is called a Wi-Fi network, BEGIN:VCARD a contact card, BEGIN:VEVENT a calendar event, and mailto:, tel:, sms: and geo: an email address, a phone number or a location. An http or https payload is a web link, otpauth:// is called an authenticator secret and deserves treating as the credential it is, bitcoin: and ethereum: are a crypto payment request, and everything else is plain text. The label is as far as the classification goes: the network name, the host and the contact's name are not lifted into columns of their own, and you read them in the decoded string printed underneath. Nothing is opened, dialled, joined or followed on your behalf.
Four limits shape what this can do. It decodes QR symbols and nothing else, so the linear barcodes Barcode Generator writes — EAN, UPC, Code 39, Code 128 and ITF-14 — are not read back here, and neither are Data Matrix, Aztec or PDF417. It reports a single code per image, so a sheet carrying several yields whichever one the decoder locks onto; cut it into separate pictures and add them together instead. There is no camera capture, so a code on a sign or a screen has to be photographed or screenshotted first. And the picture has to be a format your own browser decodes, which puts an untouched iPhone HEIC out of reach outside Safari — HEIC Converter turns one into a JPEG you can bring back here.
None of this travels. The pixels come off a canvas in this tab, the jsQR script is served from this site and fetched the first time you decode something, and no request carries either the image or the string that came out of it. That is what makes the difference on this particular job, because the usual reason to scan QR codes on a computer instead of pointing a phone at them is that the code holds a Wi-Fi passphrase, a one-time-password secret or somebody's contact details.
How to use it
- Add the pictures. Drop in a photo, a screenshot or a scan. Several at once is fine — each image is decoded on its own and gets its own line in the report, including the ones that come back empty.
- Choose the scan mode. Normal and inverted is the default and copes with both ordinary dark-on-light codes and the reversed kind. Normal only is quicker; inverted only suits a code you already know is light on a dark background.
- Set the scan resolution. Large photos are scaled down before decoding, to 1000, 1600 or 2600 pixels on the longest side. Raise it when a dense code refuses to resolve. Images smaller than the limit are never scaled up.
- Open the report. The page shows how many images decoded and hands back a text file. Save and open that file to see each image with its payload type, its symbol version and the decoded string in full — the values live in the file rather than on the page.
Processing & privacy
Runs on your device. Your file is processed directly in this browser.
Common use cases
Checking a code before you point a phone at it
A sticker pasted over the real code on a parking meter or a table menu is a known trick. Photograph it, decode it here, and read the address in full before anything opens.
Getting a Wi-Fi passphrase off a printed card
The router card encodes the network name and password as text. Decoding it gives you something to type into a games console or a printer that has no camera of its own.
Lifting details from a scanned business card
A vCard payload holds the name, number and email as plain text you can paste straight into a contact record rather than retyping them from a photograph.
Proofing a code you have just printed
Photograph the printed sheet and decode that, which tests the label at the size, ink and contrast you actually produced instead of the file you sent to the printer.
Questions
Is my image sent anywhere?
Can it read barcodes too?
Nothing was found in my photo. What should I change?
Can it handle two codes in the same picture?
Does it open the link it finds?
What is the symbol version in the report?
Related tools
- Video to GIF — Turn a short clip into an animated GIF.
- QR Code Generator — Create a QR code for a link, text, Wi-Fi or vCard.
- GIF Maker — Build an animated GIF from images or a clip.
- GIF Compressor — Reduce GIF file size by trimming frames and colours.
- GIF to MP4 — Convert a GIF to a much smaller MP4 video.
- GIF Splitter — Split an animated GIF into individual frames.