Bad but passes validation

This page uses the Check list provided by the W3C website.

Priority 1 checkpoints

In General

1.1 Provide a text equivalent for every non-text element.

Abusing a feature of the automated validators, we can easily pass this one... the theory is that images which are used for decoration should have an empty alt tag.

2.1 Ensure that all information conveyed with colour is also available without colour.

See below for the fake server status, those in red show that the server is not responding:

This isn't useful for a screen reader, which cannot really look at the hex codes (#F00) for colour information... or for those who are red/green colour blind.

4.1 Clearly identify changes in the natural language.

Without complex analysis of the words in a document, how does an automated test know that "bonjour" is a change in language.

6.1 Organise documents so they may be read without style sheets.

A simple trick is to use is the long, complicated (fake) word:


Which uses CSS padding on the HTML <span>'s to show the word boundaries, without the CSS applied, it looks like:


6.2 Ensure that equivalents for dynamic content are updated when the dynamic content changes.

As an example of dynamic content is a Flash animation... as the automated test wont be able to understand this dynamic content, how can it compare it against the equivalent.

7.1 Until user agents allow users to control flickering, avoid causing the screen to flicker.

A little bit of JavaScript can easily fool an automated test... this is because the tests don't go though the complex procedure of executing every bit of JavaScript on the page.

14.1 Use the clearest and simplest language appropriate for a site's content.

This is quite subjective... on a site like this, I should be able to say HTML without issue, but mention that on a shopping website, then it technically fails the guideline.

Images and image maps

1.2 Provide redundant text links for each active region of a server-side image map.

Taking a simple data entry form, the (visual) designer of the website may want to show their own designed submit button.

Now using the submit button below, in most browsers, it provides the x and y co-ordinates to the server. In this example, the automated test does not know two different actions can occur based on where the mouse "clicked".

9.1 Provide client-side image maps instead of server-side image maps except where the regions cannot be defined with an available geometric shape.

Same as above


5.1 For data tables, identify row and column headers.

This is easy to test for, but the accessibility validators tend to allow 'layout' tables... really with the existence of CSS, the 'layout' table should no longer be in use, however, while they are considered 'valid', it allows us to use:

  Column B Column C
Row 1 Data Data
Row 2 Data Data

5.2 For data tables that have two or more logical levels of row or column headers, use markup to associate data cells and header cells.

Same as above


12.1 Title each frame to facilitate frame identification and navigation.

Although the existence of a title on the frame can be tested, is it correct?

Applets and scripts

6.3 Ensure that pages are usable when scripts, applets, or other programmatic objects are turned off or not supported. If this is not possible, provide equivalent information on an alternative accessible page.

Again, how can an automated test check this?


1.3 Until user agents can automatically read aloud the text equivalent of a visual track, provide an auditory description of the important information of the visual track of a multimedia presentation.

Automated test don't really know if a Flash animation, for example, knows if its multimedia content.

1.4 For any time-based multimedia presentation (e.g., a movie or animation), synchronise equivalent alternatives (e.g., captions or auditory descriptions of the visual track) with the presentation.

Again, how can an automated test check this?

And if all else fails

11.4 If, after best efforts, you cannot create an accessible page, provide an alternative.

Very rarely does an alternative needs to be provided, but when it does, how can an automated test check they are equivalent?


If you have any ideas on how to improve this example page, please let me know, at