No one wants to use your website

There are a ton of exceptions, of course. But if you’re selling a product or a service, there’s a good chance your user has no desire to be there.

They aren’t excited to use your website, so stop trying to make them. They’re using your service because it reduces some headache and makes their life easier. The majority of your users are not power users. They don’t care about small tweaks and under-the-hood features and having tons of options and managing their accounts and all that. They just want to load up your site, do the thing your site helps them do, and then get on with their lives.

No one wants to register for an account.

The only reason they do is because you make them do it in order to continue using the site. Sometimes it’s necessary to have an account, and when it is, the process should be as simple as possible. Even things like email confirmations and typing passwords twice can often be eliminated—all they do is serve to raise the cost of entry into your site, and it’s another chance for your possible conversion to get annoyed or frustrated and turn away. You’re not a bank. You’re not the government. The user’s account really isn’t a big deal. You want their data; they want to continue using the service. Don’t make it any more complicated than that.

People hate forms.

Yes, they’re necessary, but not a single one of your users is going to be excited to sit down in front of your site and fill out a form. So place as much emphasis as you can on making it as painless as possible. Break it up into multiple sections to make it more digestible, eliminate as many fields as you can afford to, and give fields clear and accurate names (and, if the field needs it, a brief description). Validate inline wherever you can, autocomplete wherever you can (do you really need to know my timezone? Date().getTimezoneOffset(); is one line of javascript), and make sure required fields are clearly marked. Make it so your user can get through the form as quickly and effortlessly as they possibly can, because they don’t want to waste their time filling out your form. Your goal is to make them work as little as possible in order to continue using your product.

Perhaps most importantly, people hate thinking.

Yes, you want to cater to your power-users. Yes, you want to let people be as specific as they can. But the majority of users don’t care. And they don’t want to be forced into having to care. I signed up for a website the other day that asked me how I would prefer dates and times be formatted (dd-mm-yyyy, mm-dd-yyyy, mm/dd/yyyy &c.) and on the two page registration form I spent more time thinking about that one question than on any other part of the form. It’s nice to give your users options, but only when they ask for them. Default to what’s going to be best for the majority, and let the others change it later. Don’t force your users to make decisions that they don’t care about.

I’ve recently been doing UX revisions for University Niche with two non-technical co-founders. None of us have formal backgrounds in UI/UX, but we’ve made it our philosophy when working on the site to imagine our “ideal user” as someone who doesn’t care about the site and has no desire to be there. The only reason they’re using it because they have to use it; because it’s the best service out there to solve their specific problem (in this case, finding housing as a student or marketing properties to student renters). They’re not using it because they love looking for houses or because they love filling out details about the properties they have for rent. And designing with that in mind has really been an eye-opener for us.

So stop trying to force users to get excited about your site. They don’t want to be there, so make it as easy as possible for them to use it and then get on with their lives.

Update: The point I wanted to make with this is not that we should abandon login forms or universally rid the web of account systems. Rather, I wanted to address the issue where we, as designers, developers, and site owners, tend to fall into the pattern of thinking that our website is the greatest thing in the world, when in reality most of our users don’t give a shit about it. And sometimes it’s necessary to take a step back and remember that.

Follow me on twitter @seanthielen

BigUpload: Uploading really big files in the browser

Download BigUpload from GitHub

I’ve been working on a web application which requires that the user be able to upload files through their browser. Because of the context of the application, some of these files will be pretty large.

Previously, the only way to handle file uploads larger than a few megabytes was to use flash or some other ugly plugin.

But with the HTML5 FileReader class, we can do it right in the browser.

BigUpload Screenshot

To do this, I’ve made BigUpload, which consists of a Javascript class and accompanying PHP script. It also includes an example HTML page demonstrating the uploader.

BigUpload uses FileReader to split large files into manageable chunks, and then sends these chunks to the server one at a time using AJAX.

The PHP script then pieces these chunks together into one large file, and when the file is done uploading, moves and renames the finished file.

Because the chunks are all the same size, the script can calculate an accurate progress bar and report the time remaining with some accuracy. It can also easily pause, resume, or cancel in-progress uploads.

This tool is capable of handling file uploads of up to 2GB in size, without the need to tweak the max_upload and timeout variables for your server and without eating up all of your server’s memory trying to upload a 2GB file in one go.

It’s only supported on Chrome and Firefox, but falls back to a normal file upload form on other browsers.

Download BigUpload from GitHub