How to create a business card QR code

by mikepk on April 2, 2010

Generally there are two ways to create QR codes for business cards. The first involves putting the information directly into the barcode. The other usually uses a web address to act as either a landing page filled with the contact information (say your linkedin profile) or as an indirect way of pointing to your contact information. Each method has its pros and cons and I’ll go over each.

The Direct Method

QR codes are designed to store text. Over time, many barcode readers have evolved to understand that when the text is formatted in special ways, that they should do “smart” things with the information. Adding contact information with these formats, in many cases, allows them to be acted upon, say dialing an embedded phone number or possibly rapidly importing a contact into an address book.

One such format is vCard. vCards are fairly common, you may have seen vCards attached to emails with people’s contact information. Unfortunately, there are different versions of the vCard format, so usually only the simplest (first vCard version) is understood by most barcode decoders. While many address book applications can output vCards, just exporting a vCard from your address book application will usually not work and result in confused barcode readers.

There are a couple of benefits to adding contact information directly to the barcode. The first is that the information can be read without a data connection, all of the information is in the code itself. Another, related, benefit is that there is no reliance on a third party to connect you to your contact information. Most indirect methods rely on an intermediary to direct you to the actual contact information which can present privacy and dependency issues.

One drawback of putting the information inside the barcode, especially if you’re using more complex formats, is that not all barcode readers treat the formats the same way. There’s no official standard for storing contact information, so there’s no guarantee the barcode reader will identify it and do the right (or expected) thing with the data.

Another problem is that if you ever want to change the contact information in the code, you can’t. With the direct method, whatever is in the code at print time is now immutable.

The last drawback of the direct method is that the QR code becomes more complex, “busier”, the more information you store in it. This has direct implications for how easy it is to decode, especially with cell phone cameras. Simpler codes are easier to read. This puts a practical upper limit on what you can store in a QR code printed on something small like a business card.

The Indirect Method

The other method of storing contact information, the one used by SnapMyInfo, is to use a web url to act as a “pointer” to the contact information. This means that the actual contact details are not stored in the code itself, but rather they’re stored online somewhere that can be accessed by the link.

In the case of SnapMyInfo, each user’s contact card is assigned an address. Here’s an example of what’s actually stored inside a SnapMyinfo QR code:

http://snpmy.com/9WDu17f29WQYoe

This link results in a QR code that looks like this (this is the one that stores contact info for SnapMyInfo itself).

These addresses currently turn into an email “mailto” link. If you follow them, your email program should open pointing at SnapMyInfo’s email decoder, send that email and you get contact information in a response. After a lot of trial and error, it turned out that most phone devices seemed to accept maito links and handled the resultant contact data more easily if it was attached to an email. (As an example, redirecting the link to download a contact directly fails on the iPhone. Mobile Safari currently doesn’t understand how to download contact information from the web). One of the nice things about using these kinds of addresses is that their behavior can be altered. A feature I’m planning to add is the ability for users to change what their SnapMyInfo address redirects to on the fly.

Obviously, you don’t have to use SnapMyInfo to use the indirect method. There are other services that are using a similar technique. Also, using a link to something like your LinkedIn profile accomplishes much the same thing, creating a pointer to where you can find your latest information (assuming you keep LinkedIn up to date of course).

The benefits and drawbacks of the indirect method are the inverse of the direct method. Storing a pointer means that you can update and change your contact information over time, and all the barcodes you may have printed remain valid and up-to-date. The indirect method also means that you can store a lot more information “behind” the QR code, the code itself never increases in complexity since the barcode only contains a fixed size web address. This means contact information that comes out can be richer, like the inclusion of contact photos in the contacts that come out of SnapMyInfo.

Using the indirect method, however, also means that the decoder needs to have a network connection to be able to access the data. It also means that the contact information is dependent on the intermediary being there, such as SnapMyInfo.