QR Code Basics

The Anatomy of a QR Code: Every Part Explained

Finder patterns, alignment patterns, timing patterns, quiet zones and data modules — a friendly tour of every component inside a QR code.

The anatomy of a QR code is surprisingly orderly: every one of those little squares belongs to a named region with a specific job, from the three big corner markers that help scanners find it to the data modules that carry your message.

At a glance a QR code looks like random static. It isn't. It's a carefully structured layout where each zone earns its place. Once you can name the parts, you'll never look at those squares the same way again. Let's take the grand tour. 🐾

What are the three big squares in the corners?

Those are the finder patterns, and they're the most recognizable feature of any QR code. Each is a set of nested squares — a dark square, a light ring, and a dark center — placed in three of the four corners.

Their job is to let a scanner instantly locate the code and figure out its orientation. When a scanner sweeps a line across a finder pattern, it always sees the same dark-light-dark ratio of 1:1:3:1:1, a signature rare in everyday images. Because there are three finders and not four, the reader can also tell which way the code is rotated. This is the core of the "Quick Response" idea — read our how QR codes work guide to see the finders in action.

What are separators?

Right beside each finder pattern is a one-module-wide strip of light modules called a separator. It creates a clean white border between the finder and the surrounding data. Without it, the data could touch the finder pattern and blur that crucial 1:1:3:1:1 signature, making the code harder to detect.

What are timing patterns?

Look closely at the row and column that connect the finder patterns and you'll see a dotted line of alternating dark and light modules. These are the timing patterns. They act like a ruler, telling the scanner exactly how many modules there are and where each one sits — essential for lining up the sampling grid, especially on larger codes.

What are alignment patterns?

Every QR code except the very smallest (version 1) includes one or more alignment patterns — smaller nested squares scattered through the code according to its version. They help the scanner correct for distortion when a code is photographed at an angle, printed on a curved surface, or slightly warped.

The number of alignment patterns grows with the code's size. A tiny version-2 code has just one; a large version-40 code has dozens. Our guide to QR code versions and sizes explains how that scaling works.

ComponentWhere it isWhat it does
Finder patternsThree cornersLocate the code and its orientation
SeparatorsAround each finderIsolate finders from data
Timing patternsBetween findersSet module grid and count
Alignment patternsScattered insideCorrect distortion
Format infoNear findersError level and mask used
Version infoNear two finders (v7+)Declares the code's version
Data & EC regionEverywhere elseYour message plus recovery data
Quiet zoneOuter marginFrames the code for scanners

Where is the format information?

Wrapped around two edges of the top-left finder pattern (and mirrored near the other two) is the format information. This small but vital strip tells the scanner two things: which error-correction level the code uses (L, M, Q, or H) and which of the eight mask patterns was applied. The reader has to know the mask to unscramble the data, so this information is itself protected by strong error correction and stored twice for safety.

Want to know why the mask matters? See data masking in QR codes. And for the error levels, our error correction guide has you covered.

What is the version information?

On larger codes — version 7 and above — there's an additional block called version information, placed near the top-right and bottom-left finder patterns. It explicitly declares the code's version (its size), giving the scanner a reliable way to confirm how big the grid is. Smaller codes don't need it because their size can be worked out from the finder positions alone.

Where does my actual data live?

Everything that isn't one of the function patterns above is the data and error-correction region — the bulk of the code. This is where your message lives, encoded as bits and interleaved with Reed–Solomon recovery bytes.

The data is written in a zig-zag path that snakes up and down two-module-wide columns, starting from the bottom-right and weaving toward the top-left, neatly stepping around the function patterns. Roughly speaking, the region is a blend of two things:

  • Data codewords — your encoded message (link, text, Wi-Fi, and so on).
  • Error-correction codewords — the redundant bytes that let a damaged code still be read.

The split between them depends on the error level you chose. Higher protection means more of this region goes to recovery data and less to your message — see how much data a QR code can hold.

Why does the empty margin count as part of the code?

The quiet zone is the blank border — ideally about four modules wide — that surrounds the entire code. It isn't decoration or wasted space; scanners genuinely need it to separate the code from surrounding text and artwork. Crowd a code right up against a logo or paragraph and it may simply refuse to scan. Our dedicated quiet zone article explains the common mistakes.

Function patterns tell the scanner how to read; the data region tells it what to read; the quiet zone tells it where the code ends.

Putting it all together

A QR code is a small marvel of layout: locate with finders, isolate with separators, measure with timing patterns, straighten with alignment patterns, configure with format and version info, carry the message in the data region, and frame the whole thing with a quiet zone. Nothing is random — even the parts that look it.

Want a clean code to dissect for yourself? You can create a free QR code with QR Puppy — static, open source, no tracking.

Frequently asked questions

Why are there only three finder patterns, not four?

Three is enough to fix the code's position and rotation, and leaving the fourth corner free gives the scanner an unambiguous way to detect orientation. A fourth finder would be redundant and would waste space that can hold data instead.

Can I put a logo over the data region?

Yes, within limits. Error correction lets you obscure a modest portion of the data region — often the center — and still scan. Use a higher error level (Q or H) and keep the logo small enough that it stays under the recoverable threshold.

Do all QR codes have alignment patterns?

No. The smallest codes (version 1) have none. From version 2 onward they appear, and their count increases with the code's size to help scanners cope with distortion on bigger grids.

What happens if a finder pattern is damaged?

If a scanner can't detect all three finder patterns, it usually can't locate the code at all, and it fails before decoding even begins. Finder patterns are the one region you should never cover — protect them above all else.

Is the format information really that important?

Very. It tells the reader which mask to remove and which error level to expect. Because losing it would make the whole code unreadable, it's heavily error-protected and stored in two places on the code.

Make a QR code the honest way 🐾

Free forever, no tracking, no expiry — generated right in your browser.

🎨 Create a QR code →