Top 13 Things Not to Do When Designing a Website

This is an older article that has become somewhat obsolete. You may want to read the updated 2014 version instead.

This is a compilation of things that have kept on annoying me during my years of internet experience. They are roughly sorted from most annoying to least. Mind that if you look well enough, you may find examples of some of these things on my very own site. Just keep in mind that my site has parts that go back to 1997 and I still haven't found the time to clean up everything, although I've been planning it for years. But at least I try hard not to sin when making new sites or pages.

My hope is that many people will read this and consider it when making or updating their websites. Or at least complain to webmasters if they encounter it in other sites. But the main purpose of this text is mostly to spit my bile and vent my (and many others') frustrations. This means it will contain a large amount of sarcasm, and may seem threatening or insulting to sensitive readers. Read it at your own risk and don't come complaining afterwards. It also means that it are my personal opinions and if you think you have good reasons to do any of the things mentioned here, just go ahead. After all, I'm not the Pope or anything.

Send incoming users always to the main page

This has made me want to actually go get a baseballbat and find the person who designed the site. You know what I mean: you search for something in a search engine, you find a page with the answer, you click on it, it loads… and then POOF! It vanishes into thin air and you get the main page shoved up your nose. Of course it's virtually impossible to find that specific page by starting from the main page. The only solution is to disable JavaScript, and go back. Now I really would want to know why people put this kind of nonsense in their sites. Is your main page really so neat that you want everyone to see it? Mostly, it isn't. Maybe you believe people will look at other parts of your site if you send them to the main page. Well, I personally tend to never want to see your site again if you deny me the viewing of a page without digging for it through your incomprehensible site structure.

The only reason why this could be justified, is to prevent ‘deep linking’, i.e. other sites linking directly to pages deep in your site, instead of your home page. Then again, what is wrong with that? You don't make your pages in such a way that it's not obvious they belong to your site, even if embedded in another site, do you? And you didn't forget clearly visible links to your main page on every page, did you?
This technique is also often used in sites with frames (see below), where a user arriving through a link doesn't see the navigation frames. This is annoying, but the lazy solution of dumping the user on the main page is a lot more annoying. With some simple extra javaScripting, you can actually first load the frameset, and then re-load the page on which the user was inside the frameset. Please do this tiny bit of extra scripting effort!

Resize the window upon loading the page

Imagine you're cozily surfing the web, with your desktop neatly arranged, and your browser window perfectly tuned so you can see enough of the websites while still keeping an eye on other windows next to the browser. Then suddenly you enter a site and POP! It blows up the browser to full screen, literally making it explode in your face. I really, really, can't think of any reason why anyone should do this. Except maybe, to express: “hey, my site is so great that I'm sure you'll want to view it full screen, so I'm making it full screen for you!” Well, unfortunately all the sites that I encountered that did this, sucked. Moreover, I like to decide myself how large my browser window should be. If your site only looks good in full screen, then it sucks from the start.
So please, don't use this silly JavaScript trick to emphasize that your site sucks. It should only be used where it could actually be useful, and where the user really wants it, i.e. in a button which is clearly marked “clicking here will resize your browser window.” The ‘onLoad’ property of a webpage is not where the user wants it!

Use anything that only works on a certain operating system and/or browser

Actually I could just tell it like it is, the ‘certain operating system’ is Windows. The amount of sites whose main content is only usable in Mac OS or Linux is negligible, if not non-existant. But if they exist, they suck just as hard. It just happens to be that Bill Gates had this brilliant idea back in 1981 to force IBM to sell all their PC's with MS software pre-installed. This has led to the undeserved monopoly that they still have at the time of this writing, because in some way this license was also cloned to other manufacturers, together with the design of the IBM PC.
But this is not really what this point is all about. It's about the fact that when you're designing a website in such a way that it only works in operating system A with browser B, you're a bit like a virtual racist. Especially if you do it conspicously, and redirect people who don't use the über-software to a page that simply states they use the wrong system, without even giving them a chance to try it with their ‘inferior’ system. Many people choose to use something different than the software of the monopolist and that is their good right. Actually, different people using different stuff is a good thing in general, but I won't explain here why.

You don't even need to include the dreaded JavaScript that checks if the visitor is using the über-browser in the über-operating system. You can piss off visitors in more subtle ways, like only providing your essential video content in the oh-so-great ‘WMV’ format. When I see ‘WMV’, my previous experiences automatically make me think about moving puddles of puke, created by total amateurs, and also about the pain to get these lumps of proprietary technology playing in non-Windows environments. Do you really want your visitors to feel pain and think you're serving movies of convulsing puke? If not, you should at least provide one alternative format, more if possible. MPEG may be old and not so efficient, but it can be played about anywhere. Idem for QuickTime or AVI with a non-proprietary codec (if you can't tell the difference between QuickTime and Sorenson or MPEG, please go inform yourself).
The worst thing I've seen until now was a site which used Java applets to stream WMV video. Fat chance that this will ever work outside Windows, because it probably used Microsoft's idea of ‘Java’ (which boils down to: “let's make our own version of Java which sucks so people think our C# is better.”) There wasn't even any possibility to fetch the videos in some other way, so anyone who couldn't get this construction to work, could see nothing at all.

Imagine you have a shop and 100 potential customers. You pick out 10 of those customers, based on the fact that they wear shoes of a certain brand. And you put two bodyguards at the entrance, with the order to prevent those people from entering your store at all cost, even though your very best customers might be among those 10. Does that make sense? As much as taking 10% of your income in the form of paper money, and eating it. Or dancing naked in a town square, holding a fresh herring in each hand.

Making your site cross-browser, cross-platform isn't as hard as you may think, and makes much more sense than locking out a group of people because they prefer to use a different system than you. Putting a label “Designed for / Best viewed with browser B” on your site is nothing more than telling “I'm a moron who is too lazy or incompetent to make my site work for everyone” or “I believe we're still in the year 1997”.

With the advent of CSS, the possibility to use “text-decoration: none” arose. This means that people can actually turn off the default underline for hyperlinks. This is not bad as such, as it allows to tailor the appearance of links to your custom web design. However, many people like to use this to make the links totally identical to the surrounding text. Only when the user hovers over them with the mouse they become visible, and sometimes even that has been disabled! The only pointer that the word is clickable in the latter case, is the cursor changing to a hand icon.
Now tell me, do you believe anyone wants to scan every word in every webpage with the mouse, in order to detect where the wonderfully hidden links are? No! Links must be visible at first glance. Whether with an underline, different style, colour, or whatever. The underline is burned so deeply into the common knowledge of people, that it's always a good way to indicate links. This also means that you should never use underlines for anything else, unless the meaning of the underline is clearly explained. Only if you have a real good reason, you may remove the underline – and replace it with something else. But there is never a good reason to make links invisible, except in a game “find the hidden links”. There's one hidden link in this very paragraph. Did you find it?

Use a flash intro without ‘skip intro’

Flash intros are annoying enough on their own already. Please don't torture the viewers of your site by forcing them to sit through your entire piece of ju… eh, art. A ‘skip intro’ button should be the first thing that loads in the flash file, not the last. When I taste a meal and it tastes bad, I never swallow all of it first, only to puke it out when I'm ready. I just skip it immediately. So, don't make me puke out your flash intro!

Make the rendering of the pages dependent on the loading of non-essential content like ads

Many sites somehow manage to include banner ads that are implemented so badly, that browsers are unable to render the page before the ad has been loaded. Of course, the servers on which those ads reside, obey Murphy's law and have the tendency to crash a lot. This means that the user sees nothing, until (s)he waits for the ad to timeout. Even if the ‘stop’ button is pressed, often the page stays blank. I wonder how you guys do that. Hours of research must have been spent to achieve this totally useless and annoying behavior.
Face it: only 1% of visitors will ever click a banner (and that's a very optimistic estimate). I think I clicked three or so image- or Flash-based ads in the first ten years that I used the internet. And I never bought anything through a banner ad. (As a side note: I did click on many of the unobtrusive Google ads, and actually bought stuff through them.) Therefore I find them pure noise. And I don't like it if the noise prevents me from looking at the real content of a site. Mostly I just give up and go to another site if I can't see anything within reasonable time, and most other people will do the same. So whether you do this ‘no content until the ad has loaded’ stuff on purpose or it's just due to incompetence, you're always shooting yourself in the foot. I don't care about those useless ads sitting on my screen so I don't ask to remove them. I just ask to prevent them from interfering with the real site content.

Use Java/Flash applets for key navigational parts in your site

Before the time of JavaScript and CSS, there was already a trick to create buttons that changed colour when the user moused over them. The trick was to use a separate Java applet for each button. That's right, an entire Java applet for a simple stupid button. Often there were dozens of these buttons, crammed into a navigation frame, so this means dozens of java applets eating memory and increasing the probability of your browser crashing. Some sites are slightly more modern and have replaced the set of java applets by a set of Flash objects, which is equally bad.
Here's an example of what these buttons often look like. This is a simulation with the most braindead JavaScript implementation possible, not an actual applet. It does exactly the same without all the extra annoyance.

Fake applet button

Nowadays, one can use pure CSS to achieve the same effect (and much more). This is faster, safer, cleaner, easier to modify, and makes your site much easier to navigate both by people and search engines. If you look in this page's source, you'll see that the button below actually is a plain hyperlink of a certain class, defined in the style sheet.

Sitemap

There is absolutely no reason at all to use those horrendous applet buttons anymore, except to piss off visitors and show what kind of an amateur you are. Yet, there still are lots of sites that use them. These sites should be burned, pulverized in a blender, and then encapsulated into concrete and dumped into the Tonga trench.

Similarly, there are also applets that provide a complete navigation system that transforms as the user browses through the site. This may look neat, but it's a lot of hassle for something that you could as well have put statically into each page, or you could use PHP for this. Moreover, to make this work, you're forced to use frames, which is not a good idea (see below). And again, search engines and people with special browsers will grind to a halt upon encountering your unreadable applet. So, please use a more modern alternative for this. Java applets can be put to good use to run a little program to illustrate something, but they should never be used as an essential part of your site.

Put frantically flashing or shaking things on your site

I wonder how many rotting corpses of dead epilepsy patients are lying behind computer monitors right now, with an ad still flashing: “you are the 10000th visitor of this site!” There's also variation where “you are the 999999th visitor”, and the ad is throbbing and shaking as if it's being held in the hands of someone who drank ten too many cups of coffee. Of course everyone is the ‘10000th’ or ‘999999th’ visitor of that site, but that doesn't matter now. What matters, is that flashing and shaking things are an ideal visitor repellant, and the repulsion force is proportional to the area and frequency of the flashing thing (up to the point where the eye can't follow anymore and it becomes a blur). Especially on pages where the user is supposed to read even a small piece of text, fast moving and flashing things are not done. If there's nothing else of any importance on a page, and the page is only to be seen during 3 seconds, then it may be OK to put something flashing on it. But please, no flashing junk on any page with more than 2 sentences of text!

Make all kinds of junk follow the cursor

Ahh, another JavaScript classic! You probably know them: the sites where a swirling and rotating heap of garbage stubbornly follows the cursor. It's as if the mouse has been dipped into a hot steaming pile of excrement, causing a swarm of flies to keep on following it. This is a certain way of screaming out: “hey, I'm a beginning amateuristic webmaster who just pastes together all the supercool scripts I can find, without thinking 2 seconds about it.” And it is also a certain way to make it a nuisance to browse your site. Just imagine that whatever you are doing the whole day, a random pile of junk is constantly orbiting your hands. People would get a mental breakdown for less.

Don't provide ‘index.html’ files in every subdirectory

This is very, very common. Way too common. I enter a website through a hyperlink or a search engine, but it's in a too deep level, e.g.
www.site.com/products/rubberduckies/yellow/aggressive/model2.html.
Now imagine I want to see all rubber duckies, but I can't immediately find a navigation link to go to that higher level. The logical thing to do, is to cut off all the parts of the URL after ‘rubberduckies’. In other words, go to www.site.com/products/rubberduckies/. In a well designed website, I would then arrive at the page with the overview of all rubber duckies. But in most cases I get ‘permission denied’, although I'm pretty certain that I have permission to see all rubber duckies. This forces me to go back all the way to the main page and re-traverse the navigation structure. That sucks. To prevent this, my dear people, it's as simple as naming the main page of each subdirectory ‘index.html’ (or ‘index.htm’ or ‘index.php’), or at least making a simple redirect page with that name, pointing to the actual page.

Build your entire site in Flash

Yes, I know Flash can be neat and… flashy. But some people believe that Flash is the ultimate platform for creating entire websites. I don't. A website in Flash is a monolithic block of encrypted binary junk that is rendered through a proprietary plug-in. If this plug-in is not installed or not fully operational (or even unavailable like it was for an awfully long time on 64-bit operating systems, or more recently the iPhone and iPad), or your server chokes on a large amount of visitors trying to download the huge file simultaneously, then your visitors see no website — only a big vacuum. Flash is like the TV of the internet: it's disposable and volatile. Once the server goes down, the site is gone because it's mostly impossible to download for offline viewing. Sites like archive.org or the Google or Coral caches won't bother to make an archive of your huge chunk of binary data, so nobody in the future will be able to see what your site looked like, or visit the cache when your server is offline. Maybe you don't care about this, but people won't care about your site either if they can't visit it.

Also, despite all the efforts that have recently been done, flash sites are still a pain in the ass to navigate properly. They are mostly impossible to resize like a normal webpage. One can't bookmark inside them. Searching or copying text, or printing stuff, is a whole endeavour which often ends in a frustrating failure. I've seen flash sites which contained mostly text which would have been perfectly rendered in the most plain HTML page. Why, oh why? Were they Macromedia/Adobe shareholders or what?

Moreover, Flash sites are near to impossible to index by search engines unless the designer has taken great care to allow this. This means that people have a hard time finding your site through Google & friends. In practice this means you're back in 1994, where people had to rely on links from other sites. Even if you have taken precautions to make your site indexable, it's still impossible for people to go immediately to the right page in your site through a search engine hit. See one of my other points why this is horribly annoying. It may be possible to fix that too through precarious scripting, but remember that if you write everything in standard HTML, your site is automatically indexable and searchable with zero extra effort from your part.

And finally, you don't want to meet a visually impaired person who tried to navigate your flash site. Even though (s)he doesn't see well or at all, (s)he will probably be amply motivated to properly beat you up with a baseballbat.

A site built entirely in Flash may be OK if it only has content that justifies the use of Flash, like a collection of animations that nobody will want to download to view again in a few years (if this sounds like “forgettable junk”, well, I can't help it). But as soon as the site contains a considerable amount of text and/or still images, you should either provide a pure HTML alternative, or better: build the entire site in HTML with the Flash parts embedded where needed. I've encountered quite a lot of sites which were Flash only, but offered nothing that couldn't be achieved with standard HTML and CSS. That's like writing a book and selling it as scrolling text on a VHS tape glued into a dedicated VCR which can only be connected to a TV set of a certain manufacturer.

Prevent right-clicking

During the height of the famous Browser Wars, some genius at Netscape or Microsoft (I assume the latter, based on the degree of ingeniousness) invented a way to disable right-clicking on webpages by using JavaScript. Maybe that was not the original intention of the mechanism to intercept right-clicks, but many people use it that way. There can be only one real reason to do such a thing, and that is to make people angry. The motivation is often to prevent people from right-clicking on images, so they can't be downloaded.

First of all, the image has already been downloaded, otherwise the user wouldn't see it. By right-clicking and choosing ‘save as’, the user just moves the already downloaded copy somewhere else. You can't forbid that, you can only forbid the user to do anything else with this copy than viewing it. A visible watermark on the image will remember the user of this restriction and an invisible watermark may help if anyone is stupid enough to plagiarize your copyrighted work.
Second, if you try to restrict what your viewers can do by using a silly workaround like this, you insult them by making them feel like little children who wouldn't understand a warning like “it is forbidden to use images on this site for any other purpose than personal viewing.” Even if you have such a warning on each page and a copyright watermark on each image, there's still no reason to use this JavaScript atrocity. Saving the image somewhere to be able to view it offline or when your site will be long gone, is still personal viewing and is a fair right.
Third, this silly ‘protection’ is disabled very easily, so anyone who really wants to download the image or view your page's source, will eventually do it anyway. You're only fooling yourself by using this trick.

Especially since the advent of ‘tabs’ inside browsers, right-clicking is used for many other things than saving images. People may want to open specific links in a new tab, or bookmark them, without having to look up the keyboard shortcuts for those tasks. I have seen anti-right click scripts on sites where it really didn't make any sense at all. There were no copyrighted photos, and no reason whatsoever to prevent right-clicking (as if there can be a reason at all). Maybe they wanted to make it harder for people to look at their crappy HTML source mostly stolen from other sites? Then again, this can also be done from any browser's main menu.

Use frames

When frames were first introduced back in the days when animals could still speak, they were cool. They actually were a nice alternative to designing websites with tables, which kinda sucked. However, it immediately became apparent that frames had their degree of annoyance too. If you bookmarked the page, you actually bookmarked the top frame, i.o.w. the main page, again and again. Also, searching was confusing because you never knew in what frame you were searching. And printing… please don't remind me of that. Moreover, if you entered such a site through a search engine, you mostly had no means at all to navigate the site, because the navigation frame was missing (see above).

Nowadays, one can use CSS to get a frames-like layout without needing table tags. With JavaScript, PHP or web design tools, you can synchronize navigation blocks across webpages. This gets rid of all the problems above. Frames are prehistoric, don't make your site look prehistoric.

©2005-2010 Alexander Thomas. This text may be reproduced if the author's name is mentioned and the text is unmodified.