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 own 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 so 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 ones will still allow it to be scanned? The question you should be asking is “what can’t I edit?”
QR codes are made up of black squares and white squares. Each of these squares is called a module. In every QR code, there are certain modules that 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 acts as a reference point for the scanner, making sure everything lines up properly. 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 of these.
- The modules highlighted in blue represent the version number. Basically, 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, the version does not need to be defined here because the scanner can literally count the modules and determine the version on its own.
So now that you know what you can’t edit, that means everything else is 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:
Now, when a smartphone or scanner reads a QR code, each byte is determined to be either completely readable or completely un-readable. 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 un-readable. At first, that sounds like a bad thing, but it actually makes things a lot easier. 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. In spite of the fact that some of the code is covered up, it is still fully scan-able. This is because of the Reed Solomon error correction method. Basically, 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 “http://www.your-awesome-website.com”, that would be 35 characters).
The table will give you a letter that represents the level of error-correction contained in your code. Here’s what these letters mean:
- Level L – You can alter up to 7% of the code without ruining its scan-ability. 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:
– 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.
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 out with a regular QR code, isolated which bytes I wanted to play around with, and outlined them in red (top left). First, I just 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: