Picture this. You have a great web page that you want to promote to mobile devices using a QR code. Great! You create the code, send it off to your graphic artist, and check out all the cool tshirts, flyers, and postcards you get back from your oh-so-speedy online printer.
You might even break out that smart phone and try scanning the code. Hm. It worked fine on the computer screen, and even worked on the proofs. But for some reason the smaller version on the t-shirt doesn't work at all, or you find yourself trying to orient the phone “just so” in order to get it to scan.
Well, it turns out that there is one thing you can do to make your QR codes work WAAAAY better. Simply use a URL shortener like bit.ly or goo.gl to create a shorter version of your URL. In fact, you can just use a one-stop-shop like qr.net to create your QR code and shorten your URL in one shot.
The URL of this page is relatively "short" already since the site employs a short URL scheme for dynamic pages. But it's still not THAT short. Let's compare QR codes generated from the raw URL with those generated using a couple of popular URL shorteners (click the image to view it full size).
I've sized them so that a single 10x10 pixel element (in the full sized image) of the QR code is the same for all three codes. The difference is pretty dramatic, but it's even more dramatic with an original URL that is pretty long to begin with.
Here are two QR codes that point to the same page on CNN.com (these stories make me happy I live in CA now):
Essentially, the longer the string that needs to be encoded, the more complicated the QR code must be to accommodate the additional information. Shortening the URL allows for a smaller QR code, or a QR code with larger dots in it that can be scanned from a greater distance. Using the example above, if you use the URL shortened version of the QR code, your users will be able to scan the code from about 40% farther away than the unshortened version, or you can reliably print the code 40% smaller.
A quick comparison you can do is count the number of dots or "modules" (the technical term) in the row and column outlined in the image below.
This is a timing pattern that is the same on all QR codes, regardless of the data contained in the code. Five modules, and you are doing about as well as you're going to do for a URL. Seven is okay, but if you're up at nine or more, you need to consider putting that URL on a serious diet.
Now you have no excuse for making hard-to-scan, poorly reproducible QR codes.
If you're wondering how I generated the QR codes in this post, use this link and just paste in the thing you want to encode at the end after the "=" sign: https://chart.googleapis.com/chart?chs=270x270&cht=qr&chl=.
Technically speaking, you want to keep your QR code as a Version 1 or Version 2 code, which means you need to keep the number of alphanumeric characters to 47 or less (depending on the level of error correction used). See this link on Wikipedia for more info.
Not all QR code generators will spit out the same results. Many are perfectly valid, but you should never have to pay anyone to generate QR codes for you. Also, some QR code generators will embed trackers (well, it just redirects through their server, similar to a URL shortener), so be careful. Here are couple of generator sites that seem pretty reliable: