QR Code Decoder

Free QR code decoder. Upload, drag or paste a QR code image to read its contents instantly - URLs, Wi-Fi, contacts and text. 100% in your browser.

Advertisement

QR code decoder: read what a code says before you visit it

Drop a QR code image onto this page and it tells you exactly what the code contains — the full URL, the Wi-Fi password, the contact details, the raw text — without following it anywhere. Nothing is opened automatically. You get the payload as text, and then you decide.

That is the whole point. A QR code is opaque to the human eye. A block of squares carries no visual clue about whether it points at a company's booking page or at a credential-harvesting clone of it, and there is no equivalent of hovering over a link to see the destination in the status bar. Scanning with a phone camera resolves that ambiguity by acting on it: the browser is already loading the page by the time you read the domain. Decoding the image first inverts that order, and for anything that arrived by email, was printed on a sticker, or turned up on a parking meter, that is a genuine and cheap security step.

Three ways to give it an image

  • Click the drop zone and pick a file — PNG, JPG, GIF, WebP or SVG.
  • Drag the image in from your desktop or a file manager.
  • Paste from the clipboard. Take a screenshot of the code on screen, copy an image out of a PDF or a document, then press Ctrl+V (Cmd+V on a Mac) anywhere on the tool. This is usually the fastest route for a code embedded in an email.

What there is not: a camera mode. This tool reads codes from image files, not from a live webcam feed. If the code is on a physical object in front of you, photograph it or screenshot it, then bring the image here.

It decodes in your browser — the image is never uploaded

The image you supply is drawn to a canvas inside your own browser tab and the pixel data is scanned there. No file is transmitted to any server, and no copy is kept. You can confirm this the way you would confirm it for any web page: open your browser's network panel, decode a code, and observe that no request carries the image. Decoding continues to work with the page open and your connection dropped.

This matters more than it sounds. Screenshots of QR codes routinely include everything around the code — a boarding pass, an invoice, a Wi-Fi card with the network name written next to it, an internal ticketing screen. Sending that to an unknown server to be decoded is a worse trade than most people realise when they pick the first result for "qr scanner online".

What a decoded payload can contain

QR codes carry arbitrary text, and a set of conventions has grown up so that phone cameras know what to offer to do with it. The tool recognises those conventions and breaks the payload into labelled fields, while always also showing you the raw string it decoded.

TypeHow it startsFields shown
Website URLhttp:// or https://The destination hostname, isolated from the rest of the URL, plus the full raw link
Wi-Fi networkWIFI:Network name (SSID), security type, password, hidden flag
Email addressmailto:Recipient, plus any subject or body carried in the query string
Phone numbertel:The number
SMS messageSMSTO: or sms:Number and pre-filled message text
Geographic locationgeo:Latitude and longitude
Contact cardBEGIN:VCARD or MECARD:Name, organisation, title, phone, email, website, address
Plain textanything elseThe raw content, shown as-is

Anything that is not one of the recognised prefixes is treated as plain text and displayed verbatim — a ticket reference, a serial number, a tracking ID, a payment string, a base64 blob. Nothing is discarded or reinterpreted, and there is a copy button for the raw content so you can paste it wherever you actually need it.

The Wi-Fi case is worth pausing on

A Wi-Fi QR code contains the network password in plain text. Not hashed, not encrypted — the password is written into the code, and anything that can read the code can read the password. Decode one here and you will see it in the Password field.

The practical consequences: a Wi-Fi QR card sitting on a reception desk is readable by anyone who can photograph it, including from a distance and from a photo somebody else posted. Printing your main network's code and displaying it publicly is equivalent to writing the password on the wall. The same fact is useful in the other direction — if you have a guest network code but nobody remembers the password, decoding the code recovers it in a couple of seconds.

Checking a URL without visiting it

For a code that leads to a website, the tool shows you the hostname on its own line before the full URL, because the hostname is the part that decides where you actually end up and it is the part attackers work hardest to disguise. Things worth looking at before you click anything:

  • Is the domain the one you expected? Read it right to left. The registered domain is the last two labels before the first slash — in https://yourbank.com.secure-login.example/ the site is secure-login.example, and yourbank.com is just decoration.
  • Look for lookalike characters. Digit one against lowercase L, rn against m, a hyphen inserted into a familiar name, an unexpected top-level domain on an otherwise familiar brand.
  • Is it a link shortener? A shortened URL inside a QR code is a redirect hiding inside an image — two layers of opacity stacked. Decoding it only gets you to the shortener, not to the eventual destination.
  • Does the context fit? A code on a parking meter that leads to a payment page on a domain unrelated to the city or operator is the single most reported physical QR scam pattern, and it is usually a sticker placed over the real code.
  • Does it want credentials? A code that leads straight to a login form is the shape of the whole problem. Reach that service by typing its address yourself instead.

If you decide the link is worth opening, there is an explicit "open in new tab" button for URL payloads, and it is the only way this tool will ever navigate anywhere. If you decide it is not, the raw text is there to copy into a ticket, a report, or a URL-safe notation before sharing it — there is a URL defanger for that last part.

When decoding fails, and what fixes it

"No QR code found in this image" means the scanner could not locate the three large position squares in the corners and lock onto the grid. Almost always it is the image rather than the code:

ProblemWhy it breaks decodingFix
Blurry or out of focusModule edges smear together, so the black-and-white grid cannot be sampled reliably.Retake the photo with the camera steady and focused, or find the original file.
Cropped, including cropping the marginA QR code needs a clear quiet zone around it — roughly four modules of blank space. Cropping tight to the black edge, or losing a corner, removes what the scanner uses to find the code.Include a bit of the surrounding background in the crop.
Low contrastA pale grey code on white, a code printed over a photo, or a screen photographed at an angle with glare across it. The scanner has to threshold the image into black and white and cannot find a clean split.Increase contrast in any image editor, or screenshot the code directly rather than photographing a screen.
Tiny code in a huge photoLarge images are scaled down to a maximum of 1600 pixels on the longest side before scanning. A code occupying a small fraction of a 12-megapixel photo can shrink below the point where individual modules survive.Crop to the code first, then upload the crop.
Steep angle or curved surfacePerspective distortion and warping around a bottle or a badge push the grid out of shape.Re-photograph square-on and flat.
Physical damage or an over-styled codeQR codes carry Reed–Solomon error correction at one of four levels — L, M, Q and H, recovering roughly 7%, 15%, 25% and 30% of the data respectively. Damage beyond the level a code was generated with is unrecoverable, and heavy branding treatments eat into the same budget.Nothing to be done at the reading end; the code needs regenerating. Our QR code generator is the other side of that.

Inverted codes — white modules on a dark background — are handled: after the standard pass, the image is scanned again with inversion enabled, which recovers most light-on-dark designs without you doing anything.

Two other honest limits. First, this reads QR codes specifically, not the wider barcode family: Data Matrix, Aztec, PDF417 and one-dimensional retail barcodes are different symbologies and will not decode here. Second, if an image contains several QR codes, one result comes back rather than all of them — crop them apart and decode each in turn.

One error message is worth naming because its cause is not obvious: if you see a note about not being able to read image pixels and a suggestion to download the file, the image came from another site in a way the browser will not let a page inspect. Saving the image to disk and uploading the file resolves it.

This tool is provided for informational and educational purposes only. All processing happens in your browser — no data is sent to or stored on our servers. While we strive for accuracy, we make no warranties about the completeness or reliability of results.
QR Code Decoder | InventiveHQ