Introducing Our New QR Code Decoder: Scan, Upload, and Decode Instantly

Decode QR codes from a file, a pasted screenshot, or an image URL. The decoding runs in your browser, so the image never reaches our server.

Introducing Our New QR Code Decoder: Scan, Upload, and Decode Instantly

Like it ? share it

The QR Code Decoder reads the content out of a QR code image. Give it a file, a screenshot from your clipboard, or a link to an image, and it hands back the text or URL encoded in the code.

Why we built it

QR codes end up on flyers, menus, tickets and business cards, and the only way to know what one actually contains is to decode it. Most of the time you want to check something before it goes out:

  • The URL in a campaign code points where you meant it to.
  • Contact details are formatted the way a phone will read them.
  • A competitor's printed code goes somewhere worth knowing about.
  • A code still scans after it has been resized for print.

Pointing a phone at your own screen works, but it is slow and it tells you nothing about why a code failed.

Three ways to give it an image

Upload a file. Drag an image onto the drop area or click to browse. It takes PNG, JPG, GIF, BMP and WebP up to 10MB.

Paste from the clipboard. Take a screenshot, click the paste area, press Ctrl+V or Cmd+V. It decodes as soon as the image lands.

Point it at a URL. Give it a direct link to an image file. Data URLs work too. Your browser fetches it, so a host that blocks cross-origin reads will fail — download the image and upload it instead.

What you get back

The decoded content, plus what the page can tell about it: whether it reads as a URL or as plain text, how many characters it holds, and which symbology the decoder matched. If the content is a URL you get a button to open it, and there is a copy button either way.

When a code will not read, the error says why rather than just failing — too little contrast, too small a code in too large a frame, a damaged quiet zone.

The image stays on your machine

Decoding runs in the page, using the ZXing WebAssembly decoder. Your browser reads the file, decodes it, and shows the result. Nothing is uploaded, stored, or logged. Close the tab and it is gone.

A QR code can carry a WiFi password, a payment link, or someone's home address, which is a poor reason to hand the image to a stranger's server.

What it handles

The decoder is built to cope with codes that are not perfect: low contrast, unusual sizes, partial damage, and codes photographed at an angle. Error correction is part of the QR standard, and the decoder uses it. If the first pass fails it tries again from a different representation of the same image before giving up.

It works the same on a phone as on a desktop, which matters because photographing a code is usually a phone job.

What's next

Batch processing for several codes at once, QR code generation from the same page, and support for reading structured formats like vCard and WiFi credentials as fields rather than as one string.

Tell us what breaks

If a code will not decode and you think it should, that is the useful bug report. Reach us on GitHub or by email.