IMAGE-BASED CODE DECODER

QR Code & Barcode Scanner

Upload a photo or screenshot containing a QR code or barcode and this tool decodes it right in your browser — no image is sent to a server, and there's no live camera scanning involved.

jsQR + ZXing fallback Runs entirely in your browser History saved on this device Export as CSV or TXT
How It's Built

What This Scanner Actually Does

Two open-source decoding libraries doing the work, entirely inside the page.

Two Libraries, One Upload

When you scan, the image is drawn to an off-screen canvas and its pixels are handed to jsQR first. If jsQR doesn't find a QR code, the same image is passed to ZXing's BrowserMultiFormatReader, which covers most common 1D and 2D barcode formats. You don't choose a mode — the fallback happens automatically.

Decoding Stays Local

Decoding happens in your browser via canvas pixel data — your image is never uploaded anywhere for the scan itself.

Upload Only, No Camera

There's no live camera scanning in this version — you upload or drag in an existing image file.

History Stays in Your Browser

Scan history is saved in your browser's localStorage, including the image data used to reload previous scans. It stays available on the same browser and device until you delete entries or clear the site's browser data.

Scan a QR Code or Barcode

Built & maintained by Bhavin J. Sheth Last updated on August 24, 2026

Drag an image here, or click to browse

JPG, PNG, GIF, BMP, WebP, or TIFF — up to 10MB

Your decoded result will appear here after you scan an image.

Scan History (0)

No scans yet — history will appear here and stay saved on this browser.
Format Reference

Supported QR & Barcode Formats

See which common QR and barcode formats this scanner can attempt to decode.

Code TypePrimary DecoderTypically Found On
QR CodejsQRMenus, payment links, WiFi sharing, event tickets, marketing posters.
Code 128ZXingShipping labels, logistics and warehouse tracking.
EAN-8 / EAN-13ZXingRetail product packaging (the standard supermarket barcode).
UPC-A / UPC-EZXingNorth American retail products.
PDF417ZXingID cards, driver's licenses, boarding passes.
Code 39 / CodabarZXingOlder inventory and asset-tracking systems.

This is a general reference for what each library is commonly used for — the exact set of formats ZXing's default reader recognizes depends on its library version, not on anything configured by this page.

Straight Answers

What This Tool Does and Doesn't Do

This tool does

  • Decode QR codes and common barcode formats from an uploaded image
  • Process the image locally via canvas, jsQR, and ZXing
  • Save each scan (result + a copy of the image) to localStorage
  • Let you reload or delete individual history entries
  • Export a single result or the full history as CSV or TXT

This tool does not

  • Access your camera or scan a live video feed
  • Upload your image to a server to decode it
  • Sync scan history between your devices or browsers
  • Verify whether a decoded link or address is safe to open
  • Automatically clear old history — it stays until you remove it
Data Flow

What Happens When You Scan

The exact path your image takes, from upload to result.

  • Image upload
  • Canvas pixel data
  • jsQR attempt
  • ZXing fallback
  • Result shown
  • Saved to localStorage
  1. 1

    Upload or Drag

    Drop an image file into the box, or click it to browse your device.

  2. 2

    Click Scan

    The image is read into a canvas and checked for a QR code first, then a barcode.

  3. 3

    Review the Result

    The decoded type and content appear instantly in the result panel.

  4. 4

    Export or Reload

    Download the result as CSV/TXT, or find it again later in your history.

Common Questions

Why Isn't My Code Scanning?

Real issues people run into when uploading a QR code or barcode image, and what's actually going on.

You're AskingWhat's Actually HappeningWhat To Check
Why is my QR code not scanning at all?No code pattern was detected in the pixel data — usually caused by blur, a steep angle, glare, or the code being too small in the frame.Re-upload a sharper, front-facing photo where the whole code and its white border margin are visible.
It says "No Code Found" but I can clearly see the QR code — why?jsQR and ZXing read raw pixels, not what your eye sees. Heavy image compression, low resolution, or a code that's small relative to the full photo can fail even when it looks fine to you.Crop the image tightly around just the code before uploading, or use a higher-resolution source image.
Why doesn't my invoice/e-invoice QR code show a full readable invoice?This tool only decodes the raw text stored inside the code. Many invoice and e-invoice QR codes encode a compact structured string — reference fields, a signed hash, an IRN — not a formatted document.Read the raw decoded text for recognizable fields (GSTIN, invoice number, IRN). Turning that into a formatted invoice needs a dedicated e-invoice reader that parses the structure.
Why does scanning a barcode only give me numbers, not a product name?A UPC/EAN barcode encodes a numeric ID only. The product name isn't stored in the barcode — it lives in a retailer's separate product database.This is expected behavior. Look up the decoded number in a product database if you need the name attached to it.
A screenshot of a code scans fine, but a photo of the same code doesn't — why?Screenshots are pixel-perfect. Photos introduce blur, perspective distortion, and glare that can break the code's corner/finder patterns.Hold the camera parallel to the code, fill the frame with it, and avoid reflections when photographing a printed code.
Why did my scan history disappear?History lives in this browser's localStorage on this specific device. Clearing site data or browsing data, or switching browsers or devices, removes or hides it.Export anything important as CSV or TXT beforehand — localStorage isn't a backup.
Why is the Scan button stuck on "Scanning…"?Very large or high-resolution images take longer to process on the canvas, especially on slower devices.Give it a few seconds; if it doesn't finish, try a smaller image well under the 10MB limit.
Practical Uses

Who This Scanner Is Useful For

Concrete situations where uploading an image beats pulling out a dedicated scanner app.

Retail & Inventory Staff

Check a barcode from a supplier's photo or PDF without a handheld scanner — upload it and export the decoded number straight to CSV for your spreadsheet.

Event & Ticket Organizers

Verify exactly what a ticket QR design encodes before printing hundreds of copies, by uploading a sample and checking the decoded payload.

Developers & QA Testers

Confirm a QR code your app just generated encodes exactly the string you expect, without reaching for a phone camera.

Students & Researchers

Decode a QR or barcode from a scanned document or textbook photo and keep a dated record of it via the CSV export.

Warehouse & Logistics

Cross-check a shipping label barcode from a photo against your records, with every scan kept in history for later reference.

Everyday Use

Find out what a WiFi or contact QR code someone shared as an image actually contains, before scanning it directly with your phone.

Frequently Asked Questions

What types of codes can this scan?

QR codes via the jsQR library, plus common 1D and 2D barcode formats such as Code 128, Code 39, EAN-8/13, UPC-A/E, and PDF417 via the ZXing library. The exact format list depends on the library version.

Does this scan using my camera, or do I need to upload a photo?

Upload only. This version reads from an image file — it does not access your camera or scan a live video feed.

Are my images uploaded to a server?

No. The image is drawn to an in-browser canvas and decoded locally by jsQR and ZXing.

Where is my scan history stored?

In your browser's localStorage, on this device. It persists across visits until you delete entries or clear your browser data — it does not sync to other devices.

Can I export my results?

Yes, a single scan or your entire history, as CSV or TXT.

What image formats and sizes are supported?

JPG, PNG, GIF, BMP, WebP, and TIFF, up to 10MB per file.

Is it safe to open a link that this tool decodes?

Not automatically — this tool only reveals what's encoded in the code. It doesn't check the destination, so treat an unfamiliar decoded link like any other unsolicited link.

Will my scan history sync across my devices?

No. localStorage is specific to the browser and device you used to scan.