What Is A QR Code And How Does It Work?

by . September 29th, 2011

By now, you’re probably pretty familiar with QR codes (a.k.a. 2-D bar codes), whether or not you realize it.

They’re the little square symbols that look like this:


The cool part is that anyone can make them. Yes, that includes you. Just Google “QR code generator,” and you’ll have a plethora of websites that make it incredibly easy to make your QR code. But that’s not even the best part. Once you have a QR code, you can mix things up, add color and graphics, and much more. The key is to know how to keep your code scan-able.

Some people have already cracked this code, like Marc Jacobs. Others, like Yellow Pages, still have some homework to do. So how can you tell which edits will ruin your code and which will still allow it to be scanned? You should ask yourself, “what can’t I edit?”

The “No-Zones”

QR codes are made up of black squares and white squares. Each of these squares is called a module. In every QR code, certain modules must not be covered or edited. Else the code won’t scan. Here, they are all highlighted in different colors:


  • The three large squares highlighted in red are the position markers. These tell the scanner where the edges of the code are.
  • The smaller red square is an alignment marker. This is the scanner’s reference point, ensuring everything lines up correctly. In bigger codes, there are several of these squares.
  • The red strips of alternating black and white modules are called timing patterns. They define the positioning of the rows and columns.
  • The green sections determine the format. This tells the scanner whether it’s a website, text message, Chinese symbols, numbers, or any combination.
  • The modules highlighted in blue represent the version number. The more modules in the code, the higher the version (up to v40, which is 177×177 modules). If the code is version 6 or smaller, it does not need to be defined here because the scanner can count the modules and determine the version independently.

Everything Else

So now that you know what you can’t edit, that means everything else is a free game, right? Almost. All the remaining modules are grouped into sections of 8 modules. These groups (which I will call “bytes” from now on) fit together in the gray area like a jigsaw puzzle:


When a smartphone or scanner reads a QR code, each byte is determined to be either wholly readable or unreadable. That means that if you change one single module (e.g., turning a black square into a white square), the entire byte containing that module is rendered unreadable. At first, that sounds like a bad thing, but it makes things much more manageable—more on that in a second.

The Really Cool Part

In the Marc Jacobs code, I linked to earlier, there was a sketch of a small girl covering part of the code. Although some of the code is covered, it is still fully scannable. This is because of the Reed Solomon error correction method. All QR codes are created with built-in error correction algorithms that allow them to be scanned even if a few bytes are missing/covered/replaced by a picture of your cat. The larger the version, the more bytes you can edit.

You can use the Version and Maximum Data Capacity Table on Denso-Wave’s website to determine exactly how many bytes you can turn into awesome graphic art. You need to know the version of your code (also found in the version table) and how many characters the message contains (i.e., if your code is built from the website “,” that would be 35 characters).

The table will give you a letter representing the error correction level in your code. Here’s what these letters mean:

  • Level L – You can alter up to 7% of the code without ruining its scanability. If your code has 154 bytes, you can edit 10 (maybe 11) bytes, and it will still scan successfully.
  • Level M – You can alter up to 15% of the code.
  • Level Q – You can alter up to 25% of the code.
  • Level H – You can alter as much as 30% of your code.

So now you should be able to do the following:

–          Generate a QR code

–          Identify the No-Zones

–          Figure out the placement of the bytes

–          Figure out how many bytes you can edit

Now that you know just about everything involved in creating and understanding a QR code let’s dive into how to turn it into a unique piece of graphic (or even hand-drawn) art.

Ready, Set…

At this point, it all comes down to asking yourself “what if” and then finding the answer to that question. Look at your QR code, figure out which bytes you want to try to change, and then change them. Scan it to see if it still works. If it still works, make another change. If not, go back and figure out why. I’ll show you an example of what this process might look like.

I started with a regular QR code, isolated which bytes I wanted to play around with, and outlined them in red (top left). First, I scrambled all the modules within the red border (top right). It still scanned. Then, I took out all the modules completely (bottom left). It still scanned. Lastly, I filled the red border with a portrait of one of the most influential aliens from my childhood.



It’s a matter of experimentation. Think of an idea, try it and scan it. Then work from there. Go online and look for other creative QR code graphic art to see what boundaries other people are pushing. Pretty soon, you’ll end up doing something like this:



 ryan-bayron    About the Author

Ryan Bayron is an SEO intern at online marketing agency WrightIMC. He has found his niche within the company as the resident graphic designer, primarily focused on infographics and PPC landing pages for clients. Currently pursuing a BFA at the University of Texas at Arlington, he is passionate about animation and has experience producing live-action and animated short films. He also teaches private music lessons to support his wife, pursuing her high school English teaching career. Check his site here.