top

U.S. "Section 508" Guidelines: Summary

HTML_CodeSniffer provides a set of sniffs for testing pages against the U.S. "Section 508" accessibility guidelines. Section 508 is a reference to the relevant section of the U.S. federal Rehabilitation Act of 1973 (as amended), and requires that electronic and information technology procured by federal government agencies (with some exceptions) be accessible at "comparable" levels to government employees and members of the public with a disability.

Section 508 is composed of several paragraphs which describe requirements as they apply to computer hardware and software, electronic content, telecommunications products, and so on. The applicable standard for web pages is paragraph 1194.22, "Web-based intranet and internet information and applications," and outlines 16 rules that Web content must fulfil. Some of the rules are listed as having corresponding checkpoints in WCAG 1.0. Others have no equivalent to WCAG 1.0, but some success criteria in WCAG 2.0 cover them.

Web-based applications may also have to comply with paragraph 1194.21, "Software applications and operating systems," but this is currently outside of the scope of HTML_CodeSniffer except where they overlap with paragraph 1194.22.

A refresh of the Section 508 guidelines is currently in progress, and the latest (2011) draft rule proposes a new target for electronic media content to meet, based on Level AA conformance with WCAG 2.0. It would be prudent to also check and correct errors associated with the WCAG 2.0 AA standard for this reason, so your site conforms with any future updates to Section 508.

Section 508 Rules

A summary of the sixteen Section 508 rules, a brief discussion with pointers to equivalents in WCAG 1.0 and 2.0, and a list of messages emitted by HTML_CodeSniffer for that rule. Although the current Section 508 was aligned with parts of WCAG 1.0, many messages emitted by HTML\_CodeSniffer will be aligned with the wording used in its WCAG 2.0 standard set.

Anything that is not marked as an Error should be manually tested:

(a) A text equivalent for every non-text element shall be provided (e.g., via "alt", "longdesc", or in element content).

Equivalent in wording to WCAG 1.0 checkpoint 1.1.

WCAG 2.0 equivalents are Success Criterion 1.1.1 (Non-text Content), and also portions of Guideline 1.2 relating to audio-only or video-only content (requiring a text transcript or audio description respectively). These are not considered "multimedia" according to the Section 508 (or WCAG 1.0) standard.

Message Name Applies To

Notice: For multimedia containing audio only, ensure an alternative is available, such as a full text transcript.

Section508.A.Audio

Elements that may contain audio only.

Error: Img element is the only content of the link, but is missing alt text. The alt text should describe the purpose of the link.

Section508.A.Img.EmptyAltInLink

Img elements that are the only text content of their link (white space does not count), but do not contain alt text.

Error: Img element with empty alt text must have absent or empty title attribute.

Section508.A.Img.NullAltWithTitle

Img elements that contain empty alt text (suggesting they be ignored), but nonetheless have a title attribute.

Warning: Img element is marked so that it is ignored by Assistive Technology.

Section508.A.Img.Ignored

Img elements that contain empty alt text and empty or omitted title text, suggesting they are purely decorative and therefore should be ignored.

Error: Img element missing an alt attribute. Use the alt attribute to specify a short text alternative.

Section508.A.Img.MissingAlt

Img elements that do not contain an alt attribute at all. The behaviour of an omitted alt attribute is undefined - to ignore an img element, provide an empty alt attribute.

Notice: Ensure that the img element's alt text serves the same purpose and presents the same information as the image.

Section508.A.Img.GeneralAlt

Img elements that contain a validly filled alt attribute.

Error: Image submit button missing an alt attribute. Specify a text alternative that describes the button's function, using the alt attribute.

Section508.A.InputImage.MissingAlt

Image submit buttons that do not contain an alt attribute, or has one that is empty. These buttons cannot be ignored, as they perform a function.

Notice: Ensure that the image submit button's alt text identifies the purpose of the button.

Section508.A.InputImage.GeneralAlt

Image submit button with validly filled alt text. As an image submit button is functional, it should contain alt text that describes the function of the button.

Error: Area element in an image map missing an alt attribute. Each area element must have a text alternative that describes the function of the image map area.

Section508.A.Area.MissingAlt

Area elements that do not have an alt attribute.

Notice: Ensure that the area element's text alternative serves the same purpose as the part of image map image it references.

Section508.A.Area.GeneralAlt

Area elements that pass the requirement for an alt attribute.

Error: Object elements must contain a text alternative after all other alternatives are exhausted.

Section508.A.Object.MissingBody

Object elements that do not contain body text, or another object element.

Notice: Check that short (and if appropriate, long) text alternatives are available for non-text content that serve the same purpose and present the same information.

Section508.A.Object.GeneralAlt

Object elements that contain body text.

Error: Applet elements must contain a text alternative in the element's body, for browsers without support for the applet element.

Section508.A.Applet.MissingBody

Applet elements that do not contain body text.

Error: Applet elements must contain an alt attribute, to provide a text alternative to browsers supporting the element but are unable to load the applet.

Section508.A.Applet.MissingAlt

Applet elements that do not contain an alt attribute.

Notice: Check that short (and if appropriate, long) text alternatives are available for non-text content that serve the same purpose and present the same information.

Section508.A.Applet.GeneralAlt

Applet elements that contain an alt attribute and body text.

(b) Equivalent alternatives for any multimedia presentation shall be synchronized with the presentation.

Equivalent to WCAG 1.0 checkpoint 1.4, but that provides slightly more description, suggesting "captions or [audio description]" as equivalent alternatives for the audio or video portions, respectively.

The portions of WCAG 2.0 relevant to this rule are the sections of Guideline 1.2 that apply to "synchronised media". Audio-only or video-only media do require a text alternative as per rule (a), but are not considered "multimedia" in the context of Section 508.

Providing an audio description to a video-only media would likely make it "multimedia" and subject to the sync requirement, which makes sense. It is also required for certain types of videos as specified in Paragraph 1194.24 (on Video and Multimedia Products) of Section 508.

Otherwise, a text description can be provided where appropriate, such as for slides in a silent presentation. This is contrary to WCAG 1.0 (Checkpoint 1.3), although for WCAG 2.0 this is permitted (Success Criterion 1.2.1).

Message Name Applies To

Notice: For multimedia containing video, ensure a synchronised audio description or text alternative for the video portion is provided.

Section508.B.Video

Elements that may contain video.

Notice: For multimedia containing synchronised audio and video, ensure synchronised captions are provided for the audio portion.

Section508.B.Captions

Elements that may contain synchronised media.

(c) Web pages shall be designed so that all information conveyed with color is also available without color, for example from context or markup.

Equivalent in wording to WCAG 1.0 checkpoint 2.1, and in spirit to WCAG 2.0 Success Criterion 1.4.1 (Use of Colour).

Message Name Applies To

Notice: Ensure that any information conveyed using colour alone is also available without colour, such as through context or markup.

Section508.C.Colour

Root element being tested.

(d) Documents shall be organized so they are readable without requiring an associated style sheet.

Equivalent in wording to WCAG 1.0 checkpoint 6.1. The primary intention appears to be to accommodate users that require a default stylesheet to be turned off, to read the raw document or to replace it with their own stylesheet.

The WCAG 2.0 recommendation is not as specific in terms of requiring stylesheets be optional to read the document. However, Guideline 1.3 is similar in spirit, advising web pages should be "adaptable" to alternative views "without losing information or structure". This includes:

The first two should improve the suitability of a page to be read without its style sheet (or with an alternative user-provided style sheet). The latter point is important not just for users with disabilities that reduce their ability to sense size, shape or colour, but also minimises confusion where such sensory characteristics are removed or replaced. For instance, "Press the red button to the right of screen" may be confusing when the button is either actually below it because CSS positioning information has been removed, or if the button is actually another colour through use of, say, a high-contrast colour scheme.

Message Name Applies To

Notice: Ensure that content is ordered in a meaningful sequence when linearised, such as when style sheets are disabled.

Section508.D.Linearised

Root element being tested.

Notice: If content is hidden and made visible using scripting (such as "click to expand" sections), ensure this content is readable when scripts and style sheets are disabled.

Section508.D.HiddenText

Root element being tested.

Warning: Semantic markup should be used to mark emphasised or special text so that it can be programmatically determined.

Section508.D.[msgCode]

Elements that may be considered presentational, including tags that use the align attribute.

Error: The heading structure is not logically nested. This [Node name, eg. h2] element appears to be the primary document heading, so should be an h1 element.

Section508.D.HeadingOrder

Any subordinate heading element (h2 to h6) that is the first heading element in the document order.

Error: The heading structure is not logically nested. This [Node name, eg. h4] element should be an [Expected heading node name, eg. h2] to be properly nested.

Section508.D.HeadingOrder

Any subordinate heading element (h2 to h6) that is more than one level below the previous heading. For instance, a h4 following a h1.

(e) Redundant text links shall be provided for each active region of a server-side image map.

Equivalent in wording to WCAG 1.0 checkpoint 1.2. It can be argued that, if server-side image maps are not necessary to fulfil rule (f), then rule (e) becomes ineffective.

No direct reference to image maps in WCAG 2.0. However, if absolutely necessary, server-side image maps on their own would not fulfil Success Criterion 2.1.1 (requiring functionality to be available from the keyboard), as no hints to possible links are available from an image map processed on the server side (as the client only provides coordinates). Therefore, implementing this rule would go toward satisfying this Success Criterion.

(f) Client-side image maps shall be provided instead of server-side image maps except where the regions cannot be defined with an available geometric shape.

Equivalent in wording to WCAG 1.0 checkpoint 9.1. It can be argued that with the "poly" image map area type, all possible geometric shapes can be drawn.

(g) Row and column headers shall be identified for data tables.

Equivalent in wording to WCAG 1.0 checkpoint 5.1.

Message Name Applies To

Notice: This table has no headers. If this is a data table, ensure row and column headers are identified using th elements.

Section508.G.TableHeaders

Table that does not contain th elements, and thus is identified as a layout table.

(h) Markup shall be used to associate data cells and header cells for data tables that have two or more logical levels of row or column headers.

Equivalent in wording to WCAG 1.0 checkpoint 5.2.

In WCAG 2.0, this would be required under Success Criterion 1.3.1 (Info and Relationships), notably technique H43.

Message Name Applies To

Error: Incorrect headers attribute on this td element. Expected "[Expected list of IDs]" but found "[Actual list of IDs]".

Section508.H.IncorrectHeadersAttr

A td element that contains a headers attribute that does not match the expected list of IDs that HTML_CodeSniffer calculates it should have based on its applicable th elements. The list can be matched in any order.

Error: The relationship between td elements and their associated th elements is not defined. As this table has multiple levels of th elements, you must use the headers attribute on td elements.

Section508.H.MissingHeadersAttrs

Table that requires headers attributes to associate multiple-level headers, but no attempt has been made to associate table headers with data cells.

Error: Not all th elements in this table contain an id attribute. These cells should contain ids so that they may be referenced by td elements headers attributes.'

Section508.H.MissingHeaderIds

Table that requires headers attributes to associate multiple-level headers, but where not all th elements (table header cells) contain an id attribute with which to associate them.

Error: Not all td elements in this table contain a headers attribute. Each headers attribute should list the ids of all th elements associated with that cell.

Section508.H.IncompleteHeadersAttrs

Table that requires headers attributes to associate multiple-level headers, but where not all td elements (table data cells) contain a headers attribute.

(i) Frames shall be titled with text that facilitates frame identification and navigation.

Equivalent in wording to WCAG 1.0 checkpoint 12.1.

In WCAG 2.0, this is still available as a sufficient technique (H64), to satisfy Success Criterion 2.4.1 (Bypass Blocks).

Message Name Applies To

Error: This [Node Name] element is missing title text. Frames should be titled with text that facilitates frame identification and navigation.

Section508.I.Frames

Frame or iframe elements without a title attribute.

(j) Pages shall be designed to avoid causing the screen to flicker with a frequency greater than 2 Hz and lower than 55 Hz.

Equivalent in spirit to WCAG 1.0 checkpoint 7.1. The WCAG 1.0 definition has an "Until user agents..." rider on being able to control flicker, and a different range to that stated in Section 508: "seizures can be triggered by flickering or flashing in the 4 to 59 [Hz] range".

In WCAG 2.0, flashing should be kept to below 3 Hz. At Level A, an exception exists for flashing an area of the screen smaller than a certain size. At Level AAA, size exceptions do not apply.

Message Name Applies To

Notice: Check that no component of the content flickers at a rate of greater than 2 and less than 55 times per second.

Section508.J.Flicker

Root element being tested.

(k) A text-only page, with equivalent information or functionality, shall be provided to make a web site comply with the provisions of this part, when compliance cannot be accomplished in any other way. The content of the text-only page shall be updated whenever the primary page changes.

Equivalent to WCAG 1.0 checkpoint 11.4. The WCAG 1.0 definition states that an accessible page should only be offered "after best efforts" to make the primary page accessible.

In WCAG 2.0, the requirement for a conforming alternate version is part of Conformance Requirement 1, rather than as any Success Criterion.

Message Name Applies To

Notice: If this page cannot be made compliant, a text-only page with equivalent information or functionality should be provided. The alternative page needs to be updated in line with this page's content.

Section508.K.AltVersion

Root element being tested.

(l) When pages utilize scripting languages to display content, or to create interface elements, the information provided by the script shall be identified with functional text that can be read by assistive technology.

The closest equivalent in WCAG 1.0 is Checkpoint 8.1, which states scripting must be "directly accessible or compatible with assistive technologies". However, Checkpoint 6.3 also states that sites must be usable without scripts and plugins turned on, or the information must be available on an alternative page.

Section 508 instead permits scripts but that they must provide "functional text" that is available to assistive technology. The definition of "functional text" is provided elsewhere as:

"Text that when read conveys an accurate message as to what is being displayed by the script or that describes what action will be performed."

- U.S. General Services Administration: BuyAccessible.gov: Glossary

This appears to state that content produced by the script, or runnable from a script, should be made accessible using common techniques such as alt and title text where appropriate.

Therefore, most of the tests in rule (a) relating to non-text content apply here with script-generated content too. Some of the other techniques that can be used:

However, HTML_CodeSniffer can only test the DOM as it appears to it at the time of running. If your page can generate content through a script - whether through DOM manipulation, inserting contents through an Ajax request, or other means - do not rely on a single run of HTML_CodeSniffer to certify your site as accessible. You can re-open the Accessibility Auditor (return to the home screen) to re-run the test and take action upon any new messages that appear.

Message Name Applies To

Error: Anchor element found with no link content and no name and/or ID attribute.

Section508.L.EmptyAnchorNoId

Anchor (a) element that is completely empty.

Warning: Anchor element found with link content, but no href, ID or name attribute has been supplied.

Section508.L.PlaceholderAnchor

Anchor (a) element that contains text, but has no source or destination anchor information.

Error: Anchor element found with a valid href attribute, but no link content has been supplied.

Section508.L.NoContentAnchor

Anchor (a) element that has a href, but no link text.

Warning: Ensure the functionality provided by double-clicking on this element is available through the keyboard.

Section508.L.DblClick

Elements with an ondblclick attribute.

Warning: Ensure the functionality provided by mousing over this element is available through the keyboard; for instance, using the focus event.

Section508.L.MouseOver

Elements with an onmouseover attribute.

Warning: Ensure the functionality provided by mousing out of this element is available through the keyboard; for instance, using the blur event.

Section508.L.MouseOut

Elements with an onmouseout attribute.

Warning: Ensure the functionality provided by moving the mouse on this element is available through the keyboard.

Section508.L.MouseMove

Elements with an onmousemove attribute.

Warning: Ensure the functionality provided by mousing down on this element is available through the keyboard; for instance, using the keydown event.

Section508.L.MouseDown

Elements with an onmousedown attribute.

Warning: Ensure the functionality provided by mousing up on this element is available through the keyboard; for instance, using the keyup event.

Section508.L.MouseUp

Elements with an onmouseup attribute.

(m) When a web page requires that an applet, plug-in or other application be present on the client system to interpret page content, the page must provide a link to a plug-in or applet that complies with [paragraph] 1194.21(a) through (l).

Has no equivalent in WCAG 1.0: Checkpoint 11.1 requires users to use W3C technologies where available. One possible reading of this would suggest that plugins should be avoided where an alternative method of expressing such files as a W3C file type is available. For instance, PDF files would need to be expressed as HTML instead.

WCAG 2.0 does not deal with plugins directly, but it would be expected that such external documents used accessibility-supported technologies that made such documents themselves conforming to WCAG 2.0, and not to interfere with the remainder of the page (Conformance Requirement 5) if displayed inline.

Message Name Applies To

Notice: If external media requires a plugin or application to view, ensure a link is provided to a plugin or application that complies with Section 508 accessibility requirements for applications.

Section508.M.PluginLink

Elements that may require plugins to load (eg. object, applet, embed, audio, video, bgsound).

(n) When electronic forms are designed to be completed on-line, the form shall allow people using assistive technology to access the information, field elements, and functionality required for completion and submission of the form, including all directions and cues.

Has no single equivalent in WCAG 1.0. Checkpoints 10.2 and 12.4, both Priority 2 (Level AA), cover the cases of label positioning and explicit association.

In WCAG 2.0, this is covered by a number of Success Criteria, including the requirement for labels for form fields (in 1.3.1), and the criteria in Guideline 3.3 (Input Assistance) regarding instructions and error identification and correction.

Note that in the cases of check boxes and radio buttons, the two versions of WCAG differ in their expectation of where the label should appear. WCAG 1.0 states that labels must always appear before the control, either on the same line or before it. WCAG 2.0's general sufficient technique relating to labels (G162) states check boxes and radio buttons should have their label after the control - as it is the "most predictable" place for them. Placing labels for these fields after the control also allows the inputs to be aligned in a list as well as the labels, which is seen as an advantage as they have a fixed size (compared to text fields which can be of variable lengths).

Message Name Applies To

Notice: If an input error is automatically detected in this form, check that the item(s) in error are identified and the error(s) are described to the user in text.

Section508.N.Errors

Form elements.

Notice: Check that descriptive labels or instructions (including for required fields) are provided for user input in this form.

Section508.N.Labels

Form elements.

Notice: Ensure that this form can be navigated using the keyboard and other accessibility tools.

Section508.N.KeyboardNav

Form elements.

(o) A method shall be provided that permits users to skip repetitive navigation links.

The closest equivalent in WCAG 1.0 is a Priority 3 (Level AAA) checkpoint (13.6) on being able to group related links and provide a method to bypass the group, for instance, by using a "Skip to content" link.

In WCAG 2.0, this is roughly equivalent to Success Criterion 2.4.1 (Bypass Blocks), which is a Level A criterion.

Message Name Applies To

Notice: Ensure that any common navigation elements can be bypassed; for instance, by use of skip links, header elements, or ARIA landmark roles.

Section508.O.SkipLinks

Root element being tested.

Error: This link points to a named anchor [ID] within the document, but no anchor exists with that name.

Section508.O.NoSuchID

Anchor (a) element that points to a named anchor (or element with an ID) in the same document, but that name does not exist in the ID/name namespace.

Warning: This link points to a named anchor [ID] within the document, but no anchor exists with that name in the fragment tested.

Section508.O.NoSuchIDFragment

Anchor (a) element that points to a named anchor (or element with an ID) in the same document, but that name does not exist in the ID/name namespace. Thrown as a warning because without the context of a full document, such test cannot be authoritative.

(p) When a timed response is required, the user shall be alerted and given sufficient time to indicate more time is required.

In WCAG 1.0, there is no fully equivalent checkpoint, however Checkpoints 7.4 and 7.5 (both Priority 2, or AA level) relate to the use of client-side redirects and refreshes, particularly using the Meta "refresh" element.

In WCAG 2.0, this is equivalent to Success Criterion 2.2.1 (Timing Adjustable). The Section 508 requirement is equivalent to the "Extend" option, but being able to turn off the timeout period would also be acceptable.

Message Name Applies To

Notice: If a timed response is required on this page, alert the user and provide sufficient time to allow them to indicate that more time is required.

Section508.P.TimeLimit

Root element being tested.

Error: Meta refresh tag used to redirect to another page, with a time limit that is not zero. Users cannot control this time limit.

Section508.P.MetaRedirect

Meta refresh tag with a time limit that is not 0 seconds, and contains a URL to redirect to.

Error: Meta refresh tag used to refresh the current page. Users cannot control the time limit for this refresh.

Section508.P.MetaRefresh

Meta refresh tag with a time limit that is not 0 seconds, and does not contain a redirect URL, therefore meaning it would refresh the page automatically.