Xenotar Software's Blog


Generating license or serial keys

The user experience for your licensing scheme includes the keys we generate to unlock our software for paying customers. You have to think about it carefully before you just create a bunch of random characters.

Jeff Atwood explains perfectly the shortcomings of license keys that some ISVs generate in his Software Registration Keys post:

Here are some things that I've seen vendors get wrong with their registration key process:

  1. Using commonly mistaken characters in the key

    Quick! Is that an 'O' or an '0'? A '6' or a 'G'? An 'I' or an 'l'? A 'B' or an '8'? At least have the courtesy to scour your registration key character set of those characters that are commonly mistaken for other characters. And please print the key in a font that minimizes the chances of confusion.

  2. Excessively long keys

    The most rudimentary grasp of mathematics tells us that a conservative 10 character alphanumeric registration key is good for 197 trillion unique users. Even factoring in the pigeonhole principle, we can estimate about 14 million random registration key combinations before we have a 50 percent risk of a collision. So why, then, do software developers insist on 20+ character registration keys? It's ridiculous. Are they planning to sell licenses to every grain of sand on every beach?

  3. Not separating the key into blocks

    Rather than smashing your key into one long string, make it a group of small 4 to 5 characters, separated by a delimiter. It's the same reason phone numbers are listed as 404-555-1212 and not 4045551212: People have an easier time handling and remembering small chunks of information.

  4. Making it difficult to enter the key

    Short of providing every customer a handy USB barcode scanner, at least make the registration key entry form as user friendly as possible:

    • Let the user enter the key in any format. With dashes, without dashes, using spaces, whatever. Be flexible. Accept a variety of formats.
    • Do not provide five input boxes that require us to tab through each one to enter the key. It's death by a thousand tiny textboxes.
    • Tell me as soon as I've entered a bad value in the key. Why should I have to go back and pore over my entry to figure out which letter or number I've screwed up? You're the computer, remember? This is what you're good at.
    • Accept pasting from the clipboard. Once we've installed the software, we'll probably install it again, and nobody likes keying these annoying registration keys in more than once. I've seen some clever software that proactively checks the clipboard and enters the key automatically if it finds it there. (Kudos to you, Beyond Compare.)
    • Don't passively-aggressively inform me that "the key you entered appears to be valid." Is it? Or isn't it? What's the point of unique registration keys if you can't be sure? I guess paying customers can't be trusted.
  5. Where's the %*@# key?

    The key is important. Without it we can't install or use the software. So why is it buried in the back of the manual, or on an easy-to-overlook interior edge of the package? Make it easy to find-- and difficult to lose. Provide multiple copies of the key in different locations, maybe even as a peelable sticker we can place somewhere useful. And if the software was delivered digitally, please keep track of our key for us. We're forgetful.

I know these days that most license keys get sent via email and that keys on packaging are not so common, but that does not mean that every user knows how to copy and paste the key from their email to the unlocking dialog window of your software product. Because a user does not know how to use copy and paste, does not mean you should give that kind of user a bad user experience.

If you are using or planning on using license keys to unlock your software product, you must keep in mind on making it as simple as possible for the paying customer even if it makes your software more vulnerable to piracy.

“What you heard from me, keep as the pattern of sound teaching, with faith and love in Christ Jesus. Guard the good deposit that was entrusted to you—guard it with the help of the Holy Spirit who lives in us.” – 2 Timothy 1:13-14

Software licensing schemes and user experience

license-plate-holes It has now been proven over and over again that software with a better user experience goes a long way over software that has a poor user experience. And sometimes if not almost always software registration is the first experience of our software solutions.

To protect our software from piracy we need to implement these necessary evil schemes in our software and it is going to require user intervention. It would be great if a user can buy a license and boom his installed copy works now without the nagging screen. Unfortunately this is not possible yet, and we as software vendors must give the user the best experience in getting their software licensed. Every ISV must realize that user experience is more important than to try protect your software from piracy, but that is another blog post in itself.

The whole licensing scheme experience starts right from the beginning of downloading the software, ordering the software, receiving the license and re-installing the software later again. When a user downloads your trial period software he is most probably going to see a nagging screen every time he runs the application, this nagging screen should also have a good user experience. You might ask “Is nagging screens then not suppose to be nagging?”. For sure, but I am referring to the user experience to get this nagging screen to go away. At least have a button on that screen for the user to direct him to a purchase webpage.

Software vendors must put careful thought into how and what they deliver for a software license and how it impacts on the user’s experience registering the software. If you going to send license keys via email and the email is marked as spam how does this influence the experience? If you have a 50 character license key that a user needs to type in how does this influence the experience? If you deliver a license file how easy is it for a user to import that license into the application? Have you ever thought about that the user is going to need to keep track of all his software licenses? When he re-installs his machine or upgrade to a new machine he is going to need to re-install and register all his applications again, how is the experience going to be?

You want to make sure that this experience of registering your software goes smoothly and quickly, because the more time the user have to spend on registering your software the worst the experience gets.

We all have registered software before and we know which experience was good and which ones was not so good. Unless you can figure out a way of automatically registering a software product when it is purchased, you should stick to proven schemes that work, but if you still want to change the way software is registered you will have to keep the user experience in mind all the way through the process.