Monday, April 25, 2011

Custom QR-Codes

While I was in the process of creating a QR-Code for this blog, I stumbled upon some pretty cool techniques to make those standard black/white edgy QR-Codes a little more appealing. I want to show you how to create an QR-Code and how to add some visual tweaks to it. Most QR-Code generators work with a failure tolerance up to 30%. Meaning that if some parts of the image get corrupted, the QR-Code can still be functional. That's basically what we are about to do.

First, find a QR-Code generator online which generates the code for your content.
The generator from the ZXing (Zebra Crossing) project has a great set of features. The more basic generator from Kaywa will work just as fine.

Now that you have your generated QR-Code image, it's time to make some changes. First let's make the edgy fragments a bit smoother so that they are much more easy on the eyes. I show you how to do that with Gimp but any advanced graphic software will work just fine.

You have to follow several steps to round up those edgy fragments. First you might need to convert the black and white image to RGB mode to allow some filter algorithms to be applied.

Afterwards you need to blur the image with an gaussian filter to achieve an anti-aliasing effect.

A blur radius of 10 pixels produced a good result in my case.

To sharpen your blurry QR-Code you use a color curve adjustment.

Now you need to experiment with the settings to produce a sharp contrast. I used the settings depicted here to achieve a good result.

When you are done you end up with a QR-Code with really smooth fragments.

Much better but still not very eye catching. QR-Codes don't have to be so colorless. You can choose different colors for the background and foreground as long as you keep in mind that the foreground color has to have a stronger contrast color. So if you would choose to bright colors, your QR-Code can be difficult to identify. Let's change the foreground color of this QR-Code.

I chose a blueish color for the fragments, which still has a strong contrast to the white background.

Now we added some color to the QR-Code, but still there is more we can do. As I mentioned in the beginning, most QR-Codes have a failure tolerance of up to 30%. That means that we can add other graphics on top to make it more appealing, to describe the content of the code or to follow a corporate branding if you are a company. I just added my blogs logo on top as an example.

I found the center of the code to be a good place to add some graphics. Some side regions might work just as fine. Just remember to test your resulting QR-Code thoroughly as it might break if your graphics are in a sensible spot. I hope this small guide will help you produce more appealing QR-Codes so that we get rid of those unpersonal black and white default ones in the future. Let's be honest no one recognizes them anymore.


  1. Hi Mario,
    Thanks for this great guide, I tried it out and was surprised that it was as easy as you made it look. I am not a Gimp user, but used Paint.NET and it is pretty much the same as far as menu options. Once again thanks for making what as a non-designer I would have thought would be a very difficult task into an easy one

  2. I used Photoshop 5. Used Blur at 4.0 and then Filter > Sharpen > Smart Sharpen @ 500%