QR Code Forever

QR code reader: read a QR code from an image

Upload a screenshot or photo and this QR code reader shows you exactly what the code contains before you act on it: the link, the Wi-Fi details, the contact card or the plain text. The image is decoded in your browser and nothing is uploaded. It is free, with no sign-up, and works with any QR code, including ones made elsewhere.

Drop an image here, paste a screenshot, or upload

PNG, JPG, WebP and most screenshots. Several codes in one image are all decoded. Nothing is uploaded: the image is read on your device.

Want to use the camera instead? Open the QR code scanner.

How to use the QR code reader

  1. Click Upload image and choose a PNG, JPG, WebP or HEIC file, or drop the image anywhere on the page, or paste a screenshot with Ctrl+V or Cmd+V.
  2. Wait a moment while the code is decoded on your device. Photos taken at an angle or slightly rotated are fine; if you see No QR code found, try a sharper, straighter photo.
  3. Read the result card. A link is shown as text with This is a link to {host}; check the host before you click Open link.
  4. Use Copy to copy the decoded text or a Wi-Fi password, or Download .vcf to save a contact to your phone or address book.

QR code reader details

The reader runs a WebAssembly build of the ZXing barcode engine inside your browser. When you upload, drop or paste an image, the pixels are handed to the decoder in a background worker, the code is located and read, and the text it contains is parsed into a result card. The image is never sent to a server.

Images it accepts

PNG, JPG and WebP always work. HEIC photos from an iPhone work where the browser itself can open them. Photos taken at an angle, slightly rotated or with a little perspective are tolerated by the engine, and several codes in one image are all decoded and listed. Blurry, tiny or badly lit images fail with No QR code found; a straighter, sharper photo taken from closer usually fixes it.

The result card

The decoder identifies what kind of content it found and lays the card out accordingly. A web address is shown as text, with the note This is a link to {host} and a separate Open link button, so nothing opens until you decide. A Wi-Fi code shows the network name, security type and password with Copy. A contact card lists the fields and offers Download .vcf, which a phone or mail app imports. Email, SMS, phone, location and calendar codes are parsed into their fields, and anything else is shown as raw text.

Reading a code before you trust it

A QR code can hold any link at all, including a shortened or lookalike address, and a printed code gives no hint of its target. Read the host in the result card: is it the company you expect, spelt correctly, or a random domain? Codes that go through a redirect service show that service’s domain rather than the final page, which is one reason to prefer static codes that point straight at the destination. If you are checking a code you generated here, the decoded text should match your input byte for byte, the same test the generator’s verification badge runs.

The reader can only show what the code says. If the address no longer answers, the site moved or the code was a dynamic one whose subscription lapsed; why QR codes stop working walks through the causes and static vs dynamic QR codes explains the difference. For live scanning with a camera, use the QR code scanner.

This code never expires

The reader shows the exact text a code carries, and a static code carries its content in full, so what you see here is what every scanner will see for as long as the print exists. This is a static QR code: the data is written into the pattern, so scanning it needs no server, no account and no subscription. There is nothing to renew and no redirect that can be switched off, which is why a code made here keeps working for as long as the printed copy exists. The trade-off is honest: a static code cannot be edited after printing and does not count scans. If you need either, encode a link to a page you control. Read how static and dynamic codes differ, and if a code you already have has stopped working, see why QR codes expire.

Frequently asked questions

Is this QR code reader safe to use with a code from an unknown source?

Safer than scanning it with a phone, because nothing opens automatically. The reader shows the decoded content as text, names the host of any link and waits for you to press Open link. Decoding happens on your device, so the image is not sent anywhere.

Can I read a QR code from a screenshot?

Yes. Take the screenshot, then paste it straight onto the page with Ctrl+V or Cmd+V, or save it and use Upload image. Screenshots are the easiest case because they are sharp and flat, so codes in emails, chats and PDFs on screen all work without printing.

Does the image get uploaded anywhere?

No. The file is opened by your browser and handed to a decoder that runs as WebAssembly inside the page. There is no server, no upload and no log of what the code contained. Closing the tab discards the image.

Why does it say No QR code found?

The engine could not locate a complete code in the image. The usual causes are blur, a code too small in the frame, strong glare, a cropped quiet zone or an inverted light-on-dark design. Retake the photo closer, straighter and in even light, or screenshot the code larger.

Can it decode more than one code in a photo?

Yes. The engine finds every readable code in the image and the reader lists each one with its own result card, so a photo of a sheet of labels or a poster with several codes can be checked in one go. Codes too small for the photo's resolution are left out.

Which QR code types are parsed?

Web links, Wi-Fi credentials, vCard and MeCard contacts, email, SMS, phone numbers, geo locations and calendar events are recognised and laid out as fields with the right actions. Anything else, including unusual formats from other tools, is shown as raw text so you can still read it.

The code decodes but the link does not work. Why?

The reader can only show what the code says; if that address no longer answers, the page moved, the domain lapsed or the code was a dynamic one whose subscription ended. A redirect service's domain in the result is the giveaway. See why QR codes stop working for each cause.

Last updated . QR Code is a registered trademark of DENSO WAVE INCORPORATED. Open-source engines are listed on the how it works page.