About this site


Skip navigation.

Site search

Site navigation

More information

Site history

This site was created in 2001, as a way of remembering all the parts of Web development that I was learning, and passing them onto my friends. The first downloadable script was included at the same time. The site was moved onto its current domain name in 2002, ready for public use.

In June 2003, the tutorials, libraries and general information sections of the site were redesigned to use W3C recommended accessible site design, instead of tables. The amount of traffic was too much for the hosting service I was using, so the site was moved onto a much faster and more reliable server. The tutorials and scripts had grown significantly, and a few short articles had emerged. These expanded over the next couple of years, and I wrote my most popular article; the browser speed tests.

In 2006, my good friend Moose kindly made a professional new style for the site. In line with this, the tutorials and articles were changed so that they would validate and use better semantics. The tutorials and script downloads were also changed to use more human readable links.

Site markup and style

The majority of this site is written using W3C recommended markup and styling. It is designed to display correctly on all major browsers, while degrading to remain readable on older browsers. It may not look identical in each browser, as their support for these standards differs. This is expected, and has been done deliberately to ensure that the site is still accessible in older browsers, even if they cannot handle the advanced CSS used by newer browsers. The styles are all lightweight, and do not require many images.

The markup is designed to be semantic, so that even if the browser supports no styling at all, it should still make sense. What this means is that the site will display better on PDA browsers, as well as browsers for people with accessibility problems. The pages also require slightly less download time, and make use of external stylesheets so your browser can use its cache to improve performance.

The styles offer support for different media types, so that pages can be viewed on normal screens or handheld devices, as well as having a layout for printing; the navigation panel will not be printed, code snippets will not have scrollbars, and it will not waste ink with shaded backgrounds. Prince will also be able to make a nice table of contents for combined page views of the tutorials.

Most pages will offer a variety of styles, including Moose's new style, and some styles representing the older themes I have used on various parts of the site. If your browser is capable of switching styles on its own, these will usually be available in your browser's View menu. If your browser supports a high enough level of scripting, a menu will appear in the navigation panel on relevant pages, allowing you to select a style.

Alternatively, if your browser supports user stylesheets, you can use your own style to redesign this site. Get more information about creating your own user stylesheets.

To aid your navigation around this site, I have a built-in search engine. A search field will appear on the navigation panel on all pages where it is appropriate, that will search relevant parts of the site. In addition, each tutorial makes use of LINK tags so your browser can automatically provide you with quick links through the tutorials. Other parts of the site will also use them to provide quick access to the home, index and search pages. For more details, see the webcoder link bar reference page.

I do not, and will not, use access keys on this site. Each browser has its own set of keyboard shortcuts, and it is impossible for me to pick keys that do not conflict with at least one popular browser. Currently, only one popular browser (Opera) has a way to prevent conflicts, and only two browsers (Opera and iCab) have a way to list all available access keys. No browser allows you to remap access keys if your keyboard does not have those keys available (such as non-Latin keyboards), or if they conflict with your browser's own shortcuts. I am not going to risk annoying my visitors, most of whome do not use access keys, by replacing their keyboard shortcuts.

On top of that, there is no global standard or recognised set of access keys. Even if you do use access keys, you are not going to be able to remember the ones on all the different sites you visit. Some government sites use a specific set (and remember that no two governments use the same set), but I have looked at these, and none of them are appropriate for this site. Some sites like to use numbers because they think they may be possible to use on mobiles. Well, I have tested plenty of device browsers, and they use those numbers for their own shortcuts, and don't support access keys.

Access keys were a noble idea, but so far, there have only been bad implementations. So if you still want access keys, I suggest you get a browser that has user scripting capabilities (like Opera), and build your own script that makes access keys available. I am afraid I have too many other readers that would get annoyed by them.

Saving, printing and translations

I am happy for you to save copies of my pages for private or educational use (please do not put them on any public Web sites). See details of what browsers are the best for saving pages. This site also has many scripts and resources that can be downloaded for use on public Web sites. These are covered by their own license.

Some of you like to use parts of my pages as references in articles or research. I am always happy for you to do this, but I must place a few restrictions on this type of use. While I am happy for you to quote small sections of my articles, please do so fairly, and do not reproduce large parts of my articles within your own pages, with or without modifications. In general, a few paragraphs of text is OK (please include a link to the source article on my site), but if you want to quote any more than that, please just link to my article instead. The same applies to printed articles (such as in magazines); please provide the address of the page on this site, and do not quote more than a few paragraphs.

If you wish to quote parts of my scripts in your own articles or research, with or without their related article, please restrict this use to quoting relevant parts of the script where you discuss the algorithms or techniques. Please do not simply copy the entire script with or without your own comments. Note that if you quote part of any of my downloadable scripts, please link to the script information page (such as the ones listed on the JavaScript libraries page). In all cases, please also state that my scripts have their own license, and link to the license terms of use page.

Note that my site newsfeeds are not for republication, in whole or in part. Users of this site can use their own feed aggregators to subscribe to the feeds if they are interested in the content.


People occasionally ask me if I intend to write a book about Web development. The simple answer is 'no'. I know many of you like to use books for reference, but Web development progresses very quickly, and books go out of date within months or even weeks of their publishing date. Most of the popular Web development books are badly out of date, and fail to cover current browsers. Web developers that use them often produce incompatible and badly written pages. I do not intend to contribute to that mess. This site is my book, and I can update it as often as I need to.

However, I am happy for you to print pages from this site for your own use, for private use, or for educational use. Just remember that I can keep this site up to date, but I cannot update your printed copies for you. You may not sell copies of the pages on this site for any reason. This means that if you intend to use parts of this site as educational material, you may do so, but you may not charge anyone money for the information provided by this site. As an example, if you wish to use one of the tutorials as educational material for a university course, and you want to give printed copies of the tutorial to your students, you may do so, but you may only charge them the cost of the printing materials (or better yet, do it for free - people pay enough for education as it is).

If you use any pages on this site for educational purposes, you must ensure that all users of the material are given the address of this Web site, so they can locate the original source of the content. You should always try to obtain as recent a copy as possible of the page.

Note that the tutorials all offer a link on their navigation panel that allows you to view and print the entire tutorial as a single document, instead of multiple chapters. If you print that page with Prince, you will also get a nice table of contents.

Languages and translations

This site is available only in English, as it is the most widespread language, and the most commonly used language on the Internet. It is not perfect, but it does make it accessible to the majority of Web developers.

I do not understand any other languages well enough to produce my own translations. Unfortunately, I also cannot authorise any translations for any pages on this site.

If you want to make any article content available to readers who do not understand English, you may summarise what my article is talking about, but do not translate the entire article, or significantly large parts of it. Sorry if this causes any inconvenience to your readers, but I ask you to abide by it anyway, for the reasons I outlined above.

A note to Mozilla/Firefox/Gecko users

I provide navigation links on the tutorials, so that the people who read the tutorials end-to-end can easily jump to the next page. Unfortunately, your browser seems to think that me being helpful is an excuse for it to waste my bandwidth, and it preloads each page, even though most of you never read more than one page at a time. If that is not bad enough, it often chooses to reload the next page (if you visit it), instead of using the cached version. So it wastes my bandwidth no matter what you do. Great.

The feature is broken, and provides no proper way for me to control it. As a result, I am simply denying all requests to precache a page. If this causes you problems (for example, if 'next' pages fail to load when you are viewing the tutorials), please let me know, and I will try to see if I can find a better solution. In the mean time, do Web developers a favour and disable the feature; set 'network.prefetch-next' to 'false' in about:config.


This site is run entirely on my own time, and does not receive any funding or sponsorship. It is intentionally run as a free resource for everyone. The running costs are nothing that I cannot afford, so thankyou to everyone who has offered to donate; I appreciate the offers, but it really is not needed. Please, enjoy the site.


Please thank Tim Jackson for the awesome amount of help he has given me, in teaching me about the Web in the first place, setting up hosting for me, and allowing me to use his (personal) server. Thanks Tim, the site could not be online without you!

Equally, please thank Moose for the new style and theme. Its quality speaks for itself.

This site was created by Mark "Tarquin" Wilton-Jones.
Don't click this link unless you want to be banned from our site.