</>DevTools

QR-QR Code Decoder

Decode QR code images locally in the browser — drag and drop or upload to extract URL or text

Drag a QR code image here or click to select

PNG, JPG, GIF, WebP

Decoding QR Codes: How the Data Is Read, and How to Stay Safe

A QR code is a two-dimensional barcode storing data in a pattern of black and white squares. This tool finds that pattern in an uploaded image and shows you the original data. Unlike scanning with a phone camera, which opens the link immediately, here you get to see where it leads first — a difference that matters with codes of unknown origin.

How a QR code stores data

Alongside the data, a QR code prints structures that aid reading. The three large corner squares are finder patterns, giving the decoder the code's position and rotation — which is why QR codes still read upside down or photographed at an angle. The dotted lines between them are timing patterns for grid alignment, and larger codes add alignment patterns to correct for curvature when stuck to a curved surface.

The data region also carries Reed-Solomon error correction, which is why a code still reads when partially obscured or dirty. There are four correction levels; a higher level tolerates more damage but makes the code larger for the same payload.

Correction levelRecoverable damageUse for
L (Low)~7%Clean on-screen display
M (Medium)~15%Ordinary print material (the default)
Q (Quartile)~25%Environments where damage is likely
H (High)~30%Designs with an overlaid logo, outdoor signage

How to use it

  1. Upload an image containing a QR code — a screenshot or a photo both work.
  2. The decoded content appears as text.
  3. If it's a URL, check the domain first. For a shortened URL, verify the final destination separately.
  4. If nothing is recognized, consult the failure causes below and prepare a better image.

Common reasons decoding fails

  • Insufficient resolution: each module (cell) needs at least 2–3 pixels in the image. Enlarging a tiny capture adds no information — get the original.
  • Missing quiet zone: the spec requires a blank margin four modules wide around the code. An image cropped flush to the edge won't read.
  • Low contrast: a light-colored code on a light background leaves nothing to distinguish black from white.
  • Inverted colors: a light code on a dark background defeats some decoders.
  • Heavy distortion or blur: strong perspective skew from an angled shot, or an out-of-focus photo.
  • Moiré from photographing a screen: the monitor's pixel grid creates interference patterns. Take a screenshot instead.
  • Multiple codes: with several QR codes in one image, only one may be read, or none. Crop and try them individually.

Data formats carried in QR codes

A QR code just holds text. Apps take specific actions on scan because that text follows an agreed-upon format.

FormatExampleAction on scan
URLhttps://example.comOpens in a browser
Plain textHello thereDisplays the text
Wi-FiWIFI:T:WPA;S:name;P:pass;;Offers to join the network
Contact (vCard)BEGIN:VCARD...Adds to contacts
Phonetel:+15551234567Opens the dialer
SMSsmsto:number:messagePrefills a text message
Emailmailto:a@b.com?subject=...Opens a compose window
CalendarBEGIN:VEVENT...Adds a calendar event
PaymentsService-specific schemesLaunches the relevant app

Why QR codes are a security problem

The fundamental issue is that humans can't read the destination. With a link you can hover and inspect the domain; with a QR code you know nothing until you scan. Phishing built on that property is called quishing, and it's widely used precisely because email filters generally don't inspect URLs embedded in images.

The physical attack is just as simple: stick a sticker over a legitimate QR code in a public place. Substituted codes on parking payment machines, restaurant menus, and bike-share docks have been reported in many countries.

So the practical rules are these. Always check the domain of the URL that opens, and if a page asks for login or payment details, reach it by opening the app or typing the address yourself rather than through the QR link. For codes of doubtful origin, inspect the content first with a tool like this one. Wi-Fi QR codes deserve particular caution, since a single scan can join you to a malicious network.

Common uses

  • Checking where a QR code you received actually leads before scanning it
  • Verifying that a code destined for print carries the intended URL
  • Reading the network name and password inside a Wi-Fi sharing code
  • Checking whether a code in old material still points at a live address
  • Testing during design that a logo-overlaid code still decodes

Frequently Asked Questions

Is my uploaded image sent to a server?
No. The image is drawn to a canvas to obtain pixel data, then decoded in the browser with the jsQR library. Nothing leaves your machine, so it's fine for personal codes.
How much data fits in a QR code?
At the largest version (40): about 7,089 numeric characters, about 4,296 alphanumeric, or about 2,953 bytes of 8-bit data. But more data means more modules and a denser code, which won't read at small print sizes. In practice you store a short URL and keep the real content on the web.
Will a code with a logo in the middle still read?
Usually, thanks to error correction — but not if the covered area exceeds the correction budget. If you plan to overlay a logo, raise the correction level to H, keep the logo within about 20% of the code's area, and test on several real devices. Never cover the finder or timing patterns.
What is a dynamic QR code?
One that encodes an intermediate short URL rather than the final destination, so the target can be changed later. You can update where printed material points without reprinting, and collect scan analytics. The trade-offs: every code becomes dead if the service shuts down, and users can't preview the real destination.
Can a damaged QR code be recovered?
Within the error-correction budget, the decoder recovers it automatically. Beyond that, recovery isn't possible. When only part is degraded, though, it's worth trying image edits — cleaning up the quiet zone or increasing contrast sometimes makes it readable.
Can it read barcodes too?
This tool handles QR codes only. One-dimensional barcodes like EAN and UPC, and other 2D formats like Data Matrix and PDF417, use different encodings and won't be recognized. Those need a decoder that supports each format.

💡 Note: Don't point your camera at a QR code of unknown origin. Photograph it and check the contents here first — seeing the destination before you open it is entirely different from learning it afterward.

🔗Related Tools🧰 Misc