mikepk.com about current projects contact

Overcoming the Limitations of QR Codes as Business Cards

March 18, 2010

big_snapmyinfo_logo3.png Seems like sharing your contact information using QR barcodes has become a popular topic of conversation. Appearing at SXSW on attendee badges and briefly as an apparent prelude to Facebook launching QR codes for profiles, people are abuzz with the idea.

Sharing information using QR codes is a great idea but it's not without its limitations. I've been working on SnapMyInfo for several months now and thought I'd share my experiences with sharing contact information in this way. As I've explored the limitations of QR "business cards" I've come up with several solutions that I've incorporated into SnapMyInfo.

Smart phones and barcode readers not ubiquitous... yet

When I started SnapMyInfo, the original concept was to make QR codes more accessible to more people. The theory is, if more people can decode these symbols then the symbols themselves become more useful. Creating a positive feedback loop in this way could possibly lead to more people using them.

Traditionally the only way to read what’s in a QR barcode is to use a smart phone and a barcode reader. While SnapMyInfo barcodes work with standard barcode readers, SnapMyInfo also has an email based qr decoder that works without installing an application. As long as a phone has a camera and access to email or MMS, they can decode QR codes.

Barcode readers treat data differently

There are lots of different applications for reading QR codes. These symbols have been around for a long time and are an open standard. Over time, these different applications have evolved to read the embedded data in slightly different ways. QR codes store text but if the text is formatted in special ways it signals to some (but not all) barcode readers to take certain actions when the code is scanned (store a contact vcard, open a map, open a browser, etc...).

There's no official way to store contact information in a QR code. Some common formats include vcard, mecard, and plain text information. If the barcode reader, however, doesn't understand the format, it may just present you with a screen full of nearly-illegible markup (if it does anything at all).

The one format that nearly all barcode readers seem to honor is that of the humble link. If the text inside the barcode consists of nothing but a hyperlink e.g. http://snapmyinfo.com, the reader application will almost always open a browser to that link (or present the option to do so).

By standardizing all contact sharing using links, SnapMyInfo avoids this uncertainty when sharing contacts. The links used by SnapMyInfo are "smart". They understand the capabilities of the device that is accessing the link and present the best options for that device. The default on most handsets (for now) is to open up the mail program on the phone to send an email to SnapMyInfo. That email is special in that it will let the system know a connection has been made and reply with the vcard of the scanned user. This means that anyone can scan a snapmyinfo barcode and receive contact information without signing up for the site. Using email for the vcard works across more handsets because most email applications understand attached vcards (even if the mobile browser does not).

SnapMyInfo application links also allow the potential addition of new features to the contact exchange. This includes features like allowing automatic Google Contacts integration for Android handsets as well as allowing users to specify exactly how they want contact share links handled. Dynamically altering the behavior of these links could allow users to create "situational" SnapMyInfo codes that behave differently based on location and time.

Contacts are a two-way street

The organizers of SXSW understood some of the issues I've highlighted and decided to use QR code links to link people together. They had some problems, however, because following a link is a "one way" behavior. To address this issue, they created a site you had to log into to complete the "receiver" end of the contact sharing process. This led to a lot of confusion and increased, rather than decreased, the friction for the sharing of contacts.

SnapMyInfo uses email as the way to verify the receiver of the contact for non-logged-in users. Without substantially increasing the friction (just hit "send" on the email) the contact sharing becomes a two way process and doesn't require any authentication to get in the way of the share. Since the links are dynamic, logged in users can access more features and behaviors, but basic contact sharing doesn't require either party to be logged into snapmyinfo.com.

Camera phones, not quite blind as a bat

The quality and resolution of the camera on many camera phones (especially so-called "feature" phones) is not great. The barcode reader usually needs a fairly good picture of the symbol to decode these barcodes. Unlike some other barcodes, QR codes can store a large amount of data and grow in size and complexity relative to the amount of data stored.

In addition, there's also a certain amount of "error correction" that can be added to the barcode. This error correction means that if part of the symbol is damaged, you can still recover the original data. The downside of error correction, however, is that it makes the symbol even bigger and more complex.

The bigger and more complex the QR barcode is, the better picture you need to decode it.

The first way SnapMyInfo deals with this issue is by using links for contact sharing. Something like a vcard, stored directly, results in a fairly large and complex barcode. Even links, however, can result in substantially different levels of complexity in QR codes dues to the variable length and size of links.

http://snapmyinfo.com/blog/facebook-and-the-coming-wave-of-qr-codes/ vs. http://bit.ly/cfITeW

If I encode a link to the snapmyinfo blog and compare it to the same link that's been shortened by bit.ly, you can see that at the same relative barcode size, the bitly barcode is less complex and has larger features. This makes the barcode on the right easier to decode with less than ideal pictures.

SnapMyInfo does something similar, by internally using a link redirector. You can think of it kind of like a url shortener, except that the thing linked-to can change depending on the device, situation and user settings. This allows SnapMyInfo barcodes to be a standard size and complexity while still linking to a large amount of data. This also allows SnapMyInfo barcodes to contain a higher amount of error correction.

Please wait, "scanning"...

As I've tested using QR codes as my "business card" there's one situation that has come up often as a limitation of using them in this way. At conferences and networking events, if you're connecting with a lot of people in a short period of time, it can be cumbersome to have them each scan your code in succession, especially if everyone does not have a barcode scanner or some understanding of QR codes already.

SnapMyInfo has added an augmented reality decoder to the set of technologies that can be used to decode these same barcodes. Having a setup like this can enable very high speed connection sharing while giving the people sharing their information immediate visual feedback. This also makes it easier for people to understand what the barcodes represent and hopefully will help popularize their use even more.

It's not completely obvious what to do with this crazy black and white checkerboard symbol

Probably the biggest issue I've come across is the lack of awareness regarding QR codes. This is changing now with big players, like Google, coming on the scene to push the concept. More and more people seem to be recognizing the utility of these physical hyperlinks.

I think with the coming wave of QR codes, this issue should start to resolve itself.