QR Code Decoder

Drop in a QR code image and see everything the symbol holds: the decoded payload split into its fields, the version and module count, the error correction level, the mask pattern, the encoding modes and the raw bytes in hex. The decoding happens in this tab, so the image never leaves your device.

Drop a QR code image here, or paste one

PNG, JPG, WebP or GIF

Decoded in your browser. The file is never uploaded, and nothing about it is stored or sent anywhere.

What a QR Code Decoder Shows That a Scanner Does Not

A QR code decoder is a program that reads a QR code from an image and reports the stored data together with the structure of the symbol that carries it. A phone camera stops at the first part. The structure is what explains why a code is the size it is, and what went wrong when a generator produced something unexpected.

The Six Things Inside Every QR Code

Every QR code, from a 21-module business card code to a 177-module one, stores the same six pieces of information. ISO/IEC 18004, the QR code standard, defines each of them.

  • Version is the size of the symbol, from 1 to 40. Version 1 is 21 x 21 modules and each version adds four modules per side, so version 40 is 177 x 177.
  • Error correction level is L, M, Q or H, recovering roughly 7%, 15%, 25% and 30% of the symbol. A higher level spends more of the symbol on redundancy, so the same payload needs a larger version.
  • Mask pattern is one of eight patterns, numbered 0 to 7, that flips modules so the code has no large blank areas or shapes that imitate a finder pattern. Two codes holding identical data with different masks look completely different.
  • Encoding modes are numeric, alphanumeric, byte and kanji. Numeric mode packs three digits into 10 bits and alphanumeric packs two characters into 11 bits, while byte mode spends 8 bits on every character.
  • Payload is the text itself: a link, Wi-Fi credentials, a contact card. A QR code stores text and nothing else; what a phone does with it depends on how the text begins.
  • Error correction codewords are the Reed-Solomon redundancy that lets a decoder rebuild damaged data. They are consumed during decoding, which is why a decoder shows the result rather than the codewords.

Decoded on Your Device, Including the Passwords

The image is decoded in this browser tab and never uploaded. That matters more for a decoder than for most tools, because the payloads people inspect are the sensitive ones: a Wi-Fi QR code holds the network password as plain text, and a two-factor setup code holds the secret that generates every future login code.

The decoder shows a Wi-Fi password in its own row because reading it is usually the reason the code was decoded. It lists the issuer and account of a two-factor code but leaves the secret in the raw payload, where copying it has to be deliberate.

How to Decode a QR Code From an Image

Four steps from an image file to the full contents and structure of the QR code inside it.

Generate a QR Code
  1. 1

    Add the Image

    Drag a PNG, JPG, WebP or GIF onto the panel, choose a file, or paste a screenshot from the clipboard. Keep the light margin around the code in the crop, because the decoder uses it to find the edges of the symbol.

  2. 2

    Read the Payload and Its Fields

    The decoded text appears in full, with its type named. Links are split into scheme, domain, path and query string; Wi-Fi codes into network name, security type and password; contact cards into name, phone and email.

  3. 3

    Check the Symbol Structure

    Version, module count, error correction level, mask pattern and encoding modes are listed below the payload. For versions 1 to 20 the decoder also shows how many bytes of the symbol's capacity the payload uses.

  4. 4

    Inspect the Raw Bytes if You Need Them

    The hex dump shows the payload exactly as stored, before character decoding. It is the place to look for an invisible character, a byte order mark, or text saved in the wrong character set.

When a Decoder Is the Right Tool

Four situations where the content alone is not enough and the structure of the QR code is the answer.

Debugging a QR Code Generator

A generator library produced a code larger than expected. The decoder shows the cause in one look: error correction level H where M was intended, or a payload of digits stored in byte mode instead of numeric mode.

Finding Out Why a Code Is So Dense

A long tracking URL pushes a code to version 8 or higher, with modules too small to print at 2 cm. The capacity row shows how many bytes the payload uses, and the field table shows which query parameters could be dropped.

Checking What a Wi-Fi or Contact Code Really Holds

Before printing a guest Wi-Fi code, decode it and read the fields. A wrong security type or a stray space in the password is visible in the table and invisible in the pattern.

Working Through a QR Puzzle

For a QR code puzzle or a capture-the-flag task, the decoder confirms the version, error correction level and mask of a working code, so a hand decoding can be checked against a known answer.

How a QR Code Is Decoded, Step by Step

The ten steps every QR code decoder performs, in order. The same sequence is what a person follows when solving a QR code by hand.

  • Locate the Three Finder Patterns

    The decoder searches for the 1:1:3:1:1 ratio of dark and light that a line through a finder pattern produces at any angle. Three of them give the position, size and rotation of the QR code; the corner without one is the bottom right.

  • Work Out the Version From the Size

    The module count follows from the distance between finder patterns, and the version is (modules - 17) / 4. Versions 7 and above also store the version number twice as an 18-bit block beside the finder patterns.

  • Read the Format Information

    Fifteen bits beside the finder patterns hold the error correction level in 2 bits, the mask pattern in 3 bits, and 10 bits of error correction of their own. The format information is stored twice, so one damaged copy does not stop the decode.

  • Remove the Fixed Format Mask

    The 15 format bits are XORed with the fixed pattern 101010000010010 before being placed, so the format information is never all zeros. A decoder XORs with the same pattern to recover the real values.

  • Undo the Data Mask

    The mask pattern named in the format information is applied again to the data area, which restores the original modules. Masking affects only data and error correction modules, never finder, timing or alignment patterns.

  • Read the Modules in the Zigzag Order

    Data is read in two-module-wide columns starting from the bottom right corner, moving upward, then downward in the next column pair, skipping every function pattern. Eight modules make one codeword.

  • De-Interleave the Codeword Blocks

    Larger symbols split their codewords into several blocks and interleave them, so a scratch damages a little of every block rather than all of one. The decoder separates the blocks again before correcting them.

  • Apply Reed-Solomon Error Correction

    Each block is checked and repaired using its error correction codewords. This is the step that lets a QR code survive a logo over its centre, and the point where a code with too much damage fails outright rather than returning wrong data.

  • Read the Mode Indicator and Character Count

    The corrected bit stream starts with a 4-bit mode indicator: 0001 numeric, 0010 alphanumeric, 0100 byte, 1000 kanji, 0111 ECI. A character count follows, 8 bits long for byte mode in versions 1 to 9.

  • Decode the Segments Until the Terminator

    Each segment is decoded by its mode, and a symbol may hold several in a row. The data ends at a 0000 terminator, after which the remaining capacity is filled with the alternating pad bytes 11101100 and 00010001.

The KoloQR generator with a QR code being designed and ready to download

Make a Code Worth Decoding

KoloQR, a free QR code generator with circular and custom-shaped QR codes, builds static QR codes for links, Wi-Fi networks, email, phone numbers and social profiles, and exports them as SVG, PDF, EPS or PNG.

Every KoloQR code is generated at error correction level H, which is what leaves room for a logo and for decorative module patterns. Decode one here and the structure panel shows exactly that. KoloQR does not make dynamic QR codes, so the payload you decode is the destination itself, not a redirect.

Generate a QR Code

Questions? Answered

A scanner returns what the QR code says; a decoder also returns how the symbol is built. This decoder reports the version, error correction level, mask pattern, encoding modes and raw bytes alongside the payload. For the content and a scanability score only, the QR code scanner is the shorter route.

Only as far as the code's own error correction allows. A QR code recovers between about 7% and 30% of its symbol depending on its level, and the decoder uses all of that automatically. Past that limit, or with a finder pattern missing, no decoder returns a result, and the code has to be reconstructed by hand from its format information.

Save or screenshot the QR code as an image and drop the file onto the decoder on this page. The image is decoded in the browser on a laptop or desktop, with no camera, no app and no upload involved. A code on paper needs to be photographed or scanned to a file first.

A mask pattern is one of eight fixed patterns that a QR code generator applies to the data area to break up large blank regions and shapes that resemble finder patterns. The generator tries all eight and keeps the one with the lowest penalty score. The chosen mask number is stored in the format information so a decoder can reverse it.

Three settings change the pattern without changing the data: the error correction level, the mask pattern and the version. Two generators encoding the same link at levels M and H produce different patterns, and often different sizes. Decode both and the payload is identical while the structure rows differ.

No. A QR code stores its payload and the structural settings needed to read it, and nothing else. There is no author, no creation date, no device identifier and no scan counter inside the symbol. Information like that exists only for dynamic QR codes, and it is held on the provider's server rather than in the code.

Decode the QR code and read the domain. If the payload is the final address you expected, the code is static. If the payload is a short link on a QR provider's domain that forwards somewhere else, the code is dynamic and stops working if that provider disables the link. Static vs dynamic QR codes covers the trade-off.

The payload is decoded from the whole symbol with error correction, while the level and mask are read from 15 format bits beside the finder patterns. On a low-resolution or heavily styled image, the payload can decode while that small area cannot be sampled cleanly. A larger, sharper image of the same code normally fills the row in.

No. The decoder reads QR codes only, including codes with rounded or dotted modules and light-on-dark codes. Data Matrix, Aztec, PDF417 and linear barcodes use different structures and need a different reader. Micro QR codes, which have a single finder pattern, are also not supported.

The hex view shows the payload as the bytes stored in the QR code, before they are interpreted as text. Most generators store text as UTF-8, so plain Latin letters appear as their ASCII values. The view exposes things the text hides: a leading byte order mark (ef bb bf), a trailing line break, or a non-breaking space inside a Wi-Fi password.

Why KoloQR?

  • Create QR codes for websites, menus, Wi-Fi, PDFs, and business cards
  • Customize colors, logos, and unique shapes
  • Download high-quality PNG and SVG files
  • Built for both print and digital
Generate QR Code
A plain black QR code beside the same code restyled as a circle with brand colors