Image alternative text is not present.
Each image must have an alt attribute. Without alternative text, the content of an image will not be available to screen reader users or when the image is unavailable.
Add an alt attribute to the image. The attribute value should accurately and succinctly present the content and function of the image. If the content of the image is conveyed in the context or surroundings of the image, or if the image does not convey content or have a function, it should be given empty/null alternative text (alt="").
An image does not have an alt attribute.
An image without alternative text results in an empty link.
Images that are the only thing within a link must have descriptive alternative text. If an image is within a link that contains no text and that image does not provide alternative text, a screen reader has no content to present to the user regarding the function of the link.
Add appropriate alternative text that presents the content of the image and/or the function of the link.
An image without alternative text (missing alt attribute or an alt value that is null/empty or only space characters) or that is hidden is within a link that does not contain text or an image with alternative text.
A layout spacer image (which should have null/empty alternative text) does not have an alt attribute.
Spacer images are used to maintain layout. They do not convey content and should be given null/empty alternative text (alt="") so they are not presented to users and are ignored by screen readers.
If the image is a spacer image, give the image null/empty alternative text (alt=""). Alternatively, consider using CSS instead of spacer images to control positioning and layout.
An image is missing an alt attribute and has a width or height of 3 pixels or less or has a file name starting with "spacer.*", "space.*", or "blank.*".
Alternative text is not present for a form image button.
Image buttons provide important functionality that must be presented in alternative text. Without alternative text, the function of an image button is not made available to screen reader users or when images are disabled or unavailable.
Add appropriate alternative text that presents the function of the image button (e.g., <input src="button.gif" type="image" alt="Submit search">).
An image button (<input type="image">) does not have an alt attribute or has an alt value that is null/empty (alt="") or only space characters.
Alternative text is not present for an image map area (hot spot).
Image map areas or clickable hot spots provide important functionality that must be provided in alternative text. Without alternative text, the function of the area is not made available to screen reader users or when images are unavailable.
Add a descriptive alt attribute value to each area element. Additionally, ensure that the area elements are listed in the code in a logical, intuitive order (e.g., matching the visual order, alphabetically, etc.).
An area element does not have the alt attribute or has an alt value that is null/empty (alt="") or only space characters.
An image that has hot spots does not have an alt attribute.
Any content or function of an image that uses an image map (hot spots) and does not have an alt attribute will not be available to screen reader users or if the image is unavailable.
Add an alt attribute to the image. Ensure the alt attribute value for the image map image is appropriate. The alternative text is typically null/empty (alt=""), unless the image conveys content not conveyed in the hot spot areas (e.g., "Map of the United States").
An image element has the usemap attribute and no alt attribute.
The longdesc attribute is not a URL.
The longdesc attribute of an image must be a valid URL of a page that contains a description of the image content. A longdesc value that contains image description text will not provide any accessibility information. Due to poor support, a link to the long description content should be used instead of longdesc.
Remove the longdesc attribute and provide a link to the long description content. If the longdesc attribute is maintained, ensure the attribute value is a valid URL/filename.
The longdesc attribute value:
A form control does not have a corresponding label.
If a form control does not have a properly associated text label, the function or purpose of that form control may not be presented to screen reader users. Form labels also provide visible descriptions and larger clickable targets for form controls.
If a text label for a form control is visible, use the <label> element to associate it with its respective form control. If there is no visible label, either provide an associated label, add a descriptive title attribute to the form control, or reference the label(s) using aria-labelledby. Labels are not required for image, submit, reset, button, or hidden form controls.
An <input> (except types of image, submit, reset, button, or hidden), <select>, or <textarea> does not have a properly associated label. A properly associated label is:
A form label is present, but does not contain any content.
A <label> element that is associated to a form control but does not contain text will not present any information about the form control to the user.
Ensure that the form label contains text that describes the function of the associated form control. Labels are not required for image, submit, reset, button, or hidden form controls. If a label is not necessary visually, a descriptive title attribute may be added to the form control.
A form label is present and associated with an existing form control (using for/id or surrounds the form control), but does not contain any text or images with alternative text.
A form control has more than one label associated with it.
A form control should have at most one associated label element. If more than one label element is associated to the control, assistive technology may not read the appropriate label.
Ensure that at most one label element is associated to the form control. If multiple form labels are necessary, use aria-labelledby.
Two or more <label>s are associated to a single <input> (except types of image, submit, reset, button, or hidden), <select>, or <textarea>.
An aria-labelledby or aria-describedby reference exists, but the target for the reference does not exist.
ARIA labels and descriptions will not be presented if the element referenced does not exist in the page.
Ensure the element referenced in the aria-labelledby or aria-describedby attribute value is present within the page and presents a proper label or description.
An element has an aria-labelledby or aria-describedby value that does not match the id attribute value of another element in the page.
An ARIA menu does not contain required menu items.
ARIA menus are application menus (like those used in software menu) with a specific keyboard interactions. They are NOT for navigation links on a web site and must contain at least one menuitem, menuitemcheckbox, or menuitemradio element.
Ensure that the menu is an application menu and has the appropriate keyboard interactions (menu items are navigated via the arrow keys, not via the Tab key) and internal menu items, otherwise remove the menu role.
An element with role="menu" does not contain at least one element with role="menuitem", role="menuitemcheckbox", or role="menuitemradio".
The page title is missing or not descriptive.
A descriptive title helps users understand a page's purpose or content. Without a proper title, many users (especially those using screen readers or other assistive technology) may have difficulty orienting themselves to the page.
Add a brief, descriptive page title.
The page title is missing, empty, contains only whitespace characters, or begins with "untitled".
The language of the document is not identified or a lang attribute value is invalid.
Identifying the language of the page or page elements allows screen readers to read the content in the appropriate language. It also facilitates automatic translation of content.
Identify the document language using the <html lang> attribute with a valid value (e.g., <html lang="en">). Ensure that all lang attribute values are valid.
The <html lang> attribute is missing or is empty, or a lang attribute value is not a valid language identifier.
The page is set to automatically change location or refresh using a <meta> tag.
Pages that automatically change location or refresh pose significant usability issues, particularly for screen reader and keyboard users.
Remove the <meta> refresh and give the user control over time-sensitive content changes.
A <meta http-equiv="refresh"> tag is present.
A heading contains no content.
Some users, especially keyboard and screen reader users, often navigate by heading elements. An empty heading will present no information and may introduce confusion.
Ensure that all headings contain informative content.
A heading element is present that contains no text (or only spaces) and no images with alternative text.
A button is empty or has no value text.
When navigating to a button, descriptive text must be presented to screen reader users to indicate the function of the button.
Place text content within the <button> element or give the <input> element a value attribute.
A <button> element is present that contains no text content (or alternative text), or an <input type="submit">, <input type="button">, or <input type="reset"> has an empty or missing value attribute.
A link contains no text.
If a link contains no text, the function or purpose of the link will not be presented to the user. This can introduce confusion for keyboard and screen reader users.
Remove the empty link or provide text within the link that describes the functionality and/or target of that link.
An anchor element has an href attribute, but contains no text (or only spaces) and no images with alternative text.
A skip navigation link exists, but the target for the link does not exist or the link is not keyboard accessible.
A link to jump over navigation or jump to the main content of the page assists keyboard users only if the link is properly functioning and is keyboard accessible.
Ensure that the target for the link exists and that the link is not hidden with CSS display:none or visibility:hidden.
An in-page link contains the words "skip" or "jump" and is hidden with CSS display:none or visibility:hidden, or the link has an href attribute that does not match the id value of another element within the page or the name attribute value of an anchor element within the page.
A <th> (table header) contains no text.
The <th> element helps associate table cells with the correct row/column headers. A <th> that contains no text may result in cells with missing or incorrect header information.
If the table cell is a header, provide text within the cell that describes the column or row. If the cell is not a header or must remain empty (such as the top-left cell in a data table), make the cell a <td> rather than a <th>.
A <th> element does not contain any text (or contains only spaces) and no images with alternative text.
Blinking content is present.
Blinking content can be distracting and confusing to users, particularly those with certain cognitive disabilities.
Remove the blinking effect (<blink> element or text-decoration:blink style). Important text can be styled in other ways.
A non-empty <blink> element or other text has CSS text-decoration:blink styling.
A <marquee> element is present.
A marquee element presents scrolling text that the user cannot stop. Scrolling animated content can be distracting and confusing to users, particularly for those with certain cognitive disabilities.
Remove the marquee element. If content must scroll, use an alternative scrolling mechanism that allows the user to pause or stop the animation.
A <marquee> element is present.
Very low contrast between text and background colors.
Adequate contrast of text is necessary for all users, especially users with low vision.
Increase the contrast between the foreground (text) color and the background color. Large text (larger than 18 point or 14 point bold) does not require as much contrast as smaller text.
Text is present that has a contrast ratio less than 4.5:1, or large text (larger than 18 point or 14 point bold) has a contrast ratio less than 3:1. WCAG requires that page elements have both foreground AND background colors defined (or inherited) that provide sufficient contrast. When text is presented over a background image, the text must have a background color defined (typically in CSS) that provides adequate text contrast when the background image is disabled or unavailable. WAVE does not identify contrast issues in text with CSS transparency, gradients, or filters. WCAG Level AAA requires a contrast ratio of at least 7:1 for normal text and 4.5:1 for large text.
Alternative text is likely insufficient or contains extraneous information.
If the alternative text for an image does not provide the same content or information conveyed by the image, that content will not be available to screen reader users and when images are unavailable.
Ensure that the alternative text for the image or image input provides a succinct, yet equivalent alternative to the content and function of the image. Screen readers and browser presentation inform the user that the object is an image, so alternative text of "image of..." (and similar) should be avoided. If the image does not convey content or if the content is presented in nearby text (e.g., a caption), null/empty alternative text (alt="") is appropriate.
The alt text value of an image or image button:
The alternative text for an image is the same as nearby or adjacent text.
Alternative text that is the same as nearby or adjacent text will be presented multiple times to screen readers or when images are unavailable.
Change either the alternative text or the adjacent text to eliminate the redundancy. In most cases, you can give the image empty/null alternative text (alt="") because the content of the image is already provided in context through text. Linked images may often be combined with the adjacent text into one link, in which case the image may be given null/empty alternative text (alt="").
The alternative text is the same as text that is within 15 characters of the image.
Two images near each other have the same alternative text.
When two images have the same alternative text, this often causes redundancy or indicates incorrect alternative text.
Ensure that the alternative text for each image or image button is appropriate while removing unnecessary redundancy. If the content of the image is already conveyed elsewhere (through text or the alternative text of a nearby image) or if the image does not convey content, the image may generally be given empty/null alternative text (alt=""). Image buttons always convey a specific function, and thus cannot be given null alternative text.
The same alternative text (case insensitive, but not null/empty) is present for two images or image buttons (<input type='image'>) near each other (no more than 2 other images separate them).
An image has very long alternative text.
Alternative text should be succinct, yet descriptive of the content and function of an image. Lengthy alternative text (more than around 100 characters) often indicates that extraneous content or content that is not available to sighted users is being presented.
Ensure the alternative text is succinct, yet descriptive. Ensure that no content is being presented in alternative text that is not available to sighted users viewing the image. When possible, either shorten the alternative text or provide the text alternative via another method (e.g., in text near the image, through a separate description page, etc.).
The image's alt attribute value is more than 100 characters. Note that the 100 character limit is a rough and somewhat arbitrary length. For images that present complex content or lengthy text, alternative text longer than 100 characters may be appropriate.
The longdesc attribute is present.
Because of poor support, the longdesc attribute should not be used.
Because of poor browser support for longdesc, it should not be used to provide the description of complex images. The description may be provided:
An image has a longdesc attribute containing a valid URL.
An image has a title attribute value but no alt value.
The title attribute value for images that lack an alt attribute value will be presented to screen reader users. However, providing image content in the alt attribute typically provides better accessibility, and should be used in most cases. The title attribute will generate a mouse hover tooltip which may or may not be desired - this tooltip will not be presented to touch screen or keyboard users.
Ensure the title attribute value presents the content and function of the image. For better accessibility, the alt attribute should be used when possible.
An image is present that does not have an alt attribute or alt attribute value, but does have a title attribute value.
A form label is present, but it is not correctly associated with a form control.
An incorrectly associated label does not provide functionality or information about the form control to the user. It usually indicates a coding or other form labeling issues.
Properly associate the label with its corresponding form control. If there is no corresponding form control, remove the label. Labels are not appropriate for image, submit, reset, button, or hidden form controls.
A <label> element:
A form control does not have a label, but has a title.
The title attribute value for unlabeled form controls will be presented to screen reader users. However, a properly associated text label provides better usability and accessibility and should be used unless the purpose of the form control is intuitive without the label.
If a visible text label is available for the form control, associate the text label to the form control using the label element. This provides additional functionality for end users because if the label is clicked it will set focus to the form control. If the form control is intuitive without a <label>, the title attribute value may be used. Note that the title attribute value will not generally be read by a screen reader if the control has a label and may not be available to sighted users, particularly keyboard-only users.
An <input> (except types of image, submit, reset, button, or hidden), <textarea>, or <select> element has a non-empty title attribute value and is missing a label or valid aria-labelledby reference.
A select element does not have an associated label
<select> elements must provide descriptive text about their function. This is typically provided via associated label text. If visual label text is not present and if the default select option adequately presents the purpose of the select menu, then an associated label is not necessary.
Ensure that the default option of the select menu presents the purpose of the select menu. If visible label text is present, it is best to associate this text to the select menu.
A <select> element is present that does not have an associated label or ARIA label.
A group of check boxes or radio buttons is not enclosed in a fieldset.
A fieldset provides a visual and structural grouping of related form elements. It is typically necessary for groups of check boxes or radio buttons where a higher level description (called a legend) is necessary to understand the function of the check boxes or radio buttons. The description will be identified by a screen reader only if provided in a fieldset legend.
Determine whether the grouping of check boxes or radio buttons has or needs text that explains the purpose of the check boxes or radio button grouping. If so, mark up the group within a fieldset and put the group description in a legend element.
Two or more checkbox or radio input elements within a form have the same name value, but are not enclosed in a fieldset.
A fieldset does not have a legend.
A fieldset legend presents a description of the form elements within a fieldset and is especially useful to screen reader users. A legend should be provided when a higher level description is necessary for groups of check boxes, radio buttons, or other form controls.
If a higher level description is necessary for the user to understand the function or purpose of the controls within the fieldset, provide this description within the <legend>. If this description or grouping is not necessary, the fieldset should probably be removed. Note that the legend is repeated to screen reader users for each form control within the fieldset.
A fieldset does not have a legend or the legend is empty.
The page has no headings.
Headings (<h1>-<h6>) provide important document structure, outlines, and navigation functionality to assistive technology users.
Provide a clear, consistent heading structure, generally one <h1> and sub-headings as appropriate. Except for very simple pages, most web pages should have a heading structure.
No <h1>-<h6> elements are present in the page.
A page does not have a first level heading.
Headings facilitate page navigation for users of many assistive technologies. They also provide semantic and visual meaning and structure to the document. A first level heading (<h1>) should be present on nearly all pages. It should contain the most important heading on the page (generally the document title).
If the page presents a main heading, place it within an <h1> element. Add other sub-headings as necessary.
A page does not have an <h1> element.
No page regions or ARIA landmarks were found.
Regions and ARIA landmarks identify significant page areas. Most web pages should have regions defined, particularly for the main content area.
If the page has visual regions or significant page areas, ensure the regions are defined with header, nav, main, footer, etc. elements.
No header, nav, main, footer, or aside HTML regions, or banner, navigation, main, or contentinfo landmark roles were present in the page.
A heading level is skipped.
Headings provide document structure and facilitate keyboard navigation by users of assistive technology. These users may be confused or experience difficulty navigating when heading levels are skipped.
Restructure the document headings to ensure that heading levels are not skipped.
A heading level is skipped (e.g., an <h1> is followed by an <h3>, with no intermediate <h2>). Note that an <h1> is not required to be the first heading within the document.
Text appears to be a heading but is not a heading element.
Heading elements (<h1>-<h6>) provide important document structure, outlines, and navigation functionality to assistive technology users. If heading text is not a true heading, this information and functionality will not be available for that text.
If the paragraph is a section heading, use a heading element instead (<h1>-<h6>).
A <p> element contains less than 50 characters and is either:
A layout table is present.
Layout tables exist merely to position content visually - to create columns, insert spacing, or align content neatly for sighted users. Their content is not at all tabular in nature. Layout tables should not be used in HTML5. They can introduce reading and navigation order issues. Screen readers may interpret them as data tables (i.e., announcing column and row numbers), especially if they contain table header (<th>) cells. This introduces significant overhead on screen reader users.
In almost every case, layout tables can be replaced with other HTML elements and styled with CSS to achieve the desired visual presentation. If the table contains tabular data, provide appropriate header (<th>) cells. If the layout table remains, verify that the reading and navigation order of the table content (based on underlying source code order) is logical and ensure the table has role="presentation" so it is not identified as a table to screen reader users.
A <table> element is present that does not contain any header (<th>) cells.
Text appears to be a table caption, but is not a caption element.
A table caption should be associated with a table using the <caption> element so it will be read by a screen reader with the table content.
If the text is a description of the table, associate the text with the table using the <caption> element (<caption> should be the first element within the <table>).
A data table (has at least one table header) that does not already have a caption has: - A colspan attribute value of 3 or greater on the first cell of the table. - A <p> element immediately before the table that contains less than 50 characters or contains less than 100 characters and is bold and/or centered.
Text is structured like a list but lacks proper list semantics.
Ordered and unordered lists, when properly defined, provide useful information to users, such as an indication of the list type and number of list items. When text alone is used to present list structures and content, these benefits are lost.
If list content is presented, use <ul> or <ol> markup to semantically define the list.
Text is used to present list-type content, such as:
* text
1. text
a. text
1) text
a) text
- text
A link to another location within the page is present but does not have a corresponding target.
A link to jump to another position within the page assists users in navigating the web page, but only if the link target exists.
Ensure that the target for the link exists or remove the same-page link.
An in-page link has an href attribute (starting with a #), but does not match either the id value of another element or the name attribute value of an anchor element within the page.
Link text contains extraneous text or may not make sense out of context.
Links, which are often read out of context, should clearly describe the destination or function of the link. Ambiguous text, text that does not make sense out of context, and extraneous text (such as "click here") can cause confusion and should be avoided.
Where appropriate, reword the link text so that it is more descriptive of its destination when read out of context. Remove any extraneous text (such as "click here").
A link (including alt text of linked images) contains the phrase "click here" or "click", or the link text is "click here", "here", "more", "more...", "details", "more details", "link", "this page", "continue", "continue reading", "read more", or "button".
Adjacent links go to the same URL.
When adjacent links go to the same location (such as a linked product image and an adjacent linked product name that go to the same product page) this results in additional navigation and repetition for keyboard and screen reader users.
If possible, combine the redundant links into one link and remove any redundant text or alternative text (for example, if a product image and product name are in the same link, the image can usually be given alt="").
Two adjacent links go to the same URL.
A link to a Microsoft Word document is present.
Unless authored with accessibility in mind, Microsoft Word documents often have accessibility issues. Additionally, Word documents are typically viewed using a separate application, and can thus cause confusion and navigation difficulties.
Ensure that the Word document is natively accessible. Additionally, inform the user that the link will open a Word document. Because Word documents have limitations in accessibility (particularly for complex content) and require a separate program, HTML content should usually be used in place of or in addition to the Word document.
A link to a .doc or .docx file is present.
A link to a Microsoft Excel spreadsheet is present.
Unless authored with accessibility in mind, Microsoft Excel spreadsheets often have accessibility issues. Additionally, Excel documents are typically viewed using a separate application, and can thus cause confusion and navigation difficulties.
Ensure the Excel spreadsheet is natively accessible. Additionally, inform the user that the link will open an Excel spreadsheet. Because Excel spreadsheets have limitations in accessibility (particularly for complex content) and require a separate program, HTML content should usually be used in place of or in addition to the Excel spreadsheet.
A link to a .xls or .xlsx file is present.
A link to a Microsoft PowerPoint presentation is present.
Unless authored with accessibility in mind, PowerPoint documents often have accessibility issues. Additionally, PowerPoint documents are typically viewed using a separate application, and can thus cause confusion and navigation difficulties.
Ensure the PowerPoint presentation is natively accessible. Additionally, inform the user that the link will open a PowerPoint document. Because PowerPoint documents have limitations in accessibility (particularly for complex content) and require a separate program, HTML content or an alternative accessible version (e.g., tagged PDF) should usually be used in place of or in addition to the PowerPoint presentation.
A link to a .ppt, .pptx, .pps, or .ppsx file is present.
A link to a PDF document is present.
Unless authored with accessibility in mind, PDF documents often have accessibility issues. Additionally, PDF documents are typically viewed using a separate application or plug-in, and can thus cause confusion and navigation difficulties.
Ensure the PDF document is natively accessible. Additionally, inform the user that the link will open a PDF document. Because PDF documents may have limitations in accessibility (particularly for complex content) and require a separate program, HTML content should often be used in place of or in addition to the PDF document.
A link to a .pdf file is present.
A link to a non-HTML document is present.
Unless authored with accessibility in mind, documents that are not HTML often have accessibility issues. Additionally, these documents are typically viewed using a separate application, and can thus cause confusion and navigation difficulties.
Ensure the document is authored to be accessible, if possible. Additionally, inform the user that the link will open in a separate program. Because these documents have limitations in accessibility (particularly for complex content) and require a separate program, an accessible format should usually be used in place of or in addition to the document.
A link to a .rtf, .wpd, .ods, .odt, .odp, .sxw, .sxc, .sxd, .sxi, .pages, or .key file is present. Word, PowerPoint, Excel, and PDF are identified with separate icons.
An audio or video file or link is present.
Audio content must be presented in a text format to be fully accessible to users who are deaf and hard of hearing. Video content with audio must have synchronized captions and a transcript. Audio-only content must have a transcript.
For video content, ensure that synchronized captioning and a transcript is provided. For audio-only content, ensure that a transcript is provided.
An embedded QuickTime, Windows Media Player, or RealPlayer movie is present or a link is present to a file with one of the following extensions: 3gp, aif, aiff, asf, asx, avi, flv, m4a, m4p, mov, mp2, mp3, mp4, mpa, mpeg, mpeg2, mpg, mpv, ogg, ogv, qtl, ra, ram, smi, smil, wav, wax, webm, wma, wmp, wmv, or wmx.
A <video> or <audio> element is present.
<video> defines video, such as a movie clip or other video streams. <audio> defines sound, such as music or other audio streams. Audio content must be presented in a text format to be fully accessible to users who are deaf and hard of hearing. Video content with audio must have synchronized captions and a transcript. Audio-only content must have a transcript.
For video content with audio, ensure that synchronized captioning and a transcript is provided. For audio-only content, ensure that a transcript is provided.
A <video> or <audio> element is present. Note that WAVE does not analyze fall-back content within the <video> or <audio> element. This content should be accessible because it will be presented to the user if the video or audio content is not supported.
An embedded or linked YouTube video is present.
For video content with audio, ensure that synchronized captioning is available. While YouTube can auto-generate captions using voice recognition, these are typically not of sufficient quality to be considered equivalent.
Ensure that YouTube video presents equivalent, synchronized captions.
An embedded (within an iframe) YouTube video is present, or a link to a YouTube video is present.
Flash content is present.
Flash content, if not authored to be accessible, will typically introduce significant accessibility issues.
If the Flash object does not present content, hide it from screen readers. If content is presented, provide an HTML alternative and/or make the Flash object natively accessible, including providing captions/transcripts when necessary and ensuring that the Flash object is keyboard-accessible.
An <object> element is present that has a classid attribute value of "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" or a type attribute value of "application/x-shockwave-flash", or an <embed> element is present that has a src attribute value of a .swf file or a type attribute value of "application/x-shockwave-flash".
A Java applet is present.
Java applets will typically introduce significant accessibility issues.
Where possible, replace the Java content with a more accessible format. If Java is necessary, author the applet to support accessibility to the extent possible.
An <applet> element is present.
An unidentified plugin is present.
Plugins allow the introduction of non-HTML content, media players, etc. Because of limitations in non-HTML content, these often introduce accessibility issues.
Provide an HTML alternative or ensure the plugin content is accessible. Provide a link to download any required software.
An <object> or <embed> element is present that is not identified as Flash, Quicktime, RealPlayer, or Windows Media Player.
A <noscript> element is present.
Content within <noscript> is presented if JavaScript is disabled. Because nearly all users (including users of screen readers and other assistive technologies) have JavaScript enabled, <noscript> cannot be used to provide an accessible version of inaccessible scripted content.
Ensure that scripted content is accessible. The <noscript> content will be presented to very few users, but must be accessible if used.
A <noscript> element is present.
An event handler is present that may not be accessible.
The JavaScript events in use do not appear to be accessible to both mouse and keyboard users. To be fully accessible, critical JavaScript interaction should be device independent.
Ensure that critical functionality and content is accessible by using a device independent event handler (which responds to both keyboard and mouse) or by using both a mouse dependent and a keyboard dependent event handler.
One of the following is present:
A JavaScript jump menu may be present.
A JavaScript jump menu is a select element that triggers a new web page with the onchange event handler. When navigating with the keyboard, each change in the select menu triggers a page change in some web browsers, thus making navigation very difficult.
If the onchange event handler triggers a new web page, eliminate the JavaScript jump menu and allow the user to change the select menu, then activate an adjacent button to trigger the new page.
The onchange attribute is present on a <select> element.
An accesskey attribute is present.
Accesskey provides a way to define shortcut keys for web page elements. Accesskeys often conflict with user or assistive technology shortcut keys and should be avoided or implemented with care.
Remove the accesskey or be aware that the accesskey may conflict with user shortcut keys.
An element has an accesskey attribute.
A positive tabindex value is present.
Tabindex values of 1 or greater specify an explicit tab/navigation order for page elements. Because it modifies the default tab order, cause confusion, and result in decreased keyboard accessibility, it should be avoided.
If the natural tab order is already logical, remove the tabindex. Otherwise, consider restructuring the page so that tabindex is not needed. If tabindex is maintained, ensure that the resulting navigation is logical and complete.
A tabindex attribute is present and has a positive value.
Text is very small.
Text which is very small is difficult to read, particularly for those with low vision.
Increase the text to a more readable size.
Text is present that is sized 10 pixels or smaller.
Fully justified text is present.
Large blocks of justified text can negatively impact readability due to varying word/letter spacing and 'rivers of white' that flow through the text.
Remove the full justification from the text.
A <p>, <div>, or <td> element has more than 500 characters and is styled with text-align:justify.
Underlined text is present.
Underlines almost universally indicates linked text. Consider removing the underline from the non-link text. Other styling (e.g., bold or italics) can be used to differentiate the text.
Unless there is a distinct need for the underlined text, remove the underline from it.
A <u> element or element with text-decoration:underline styles is present.
Title attribute text is the same as text or alternative text.
The title attribute value is used to provide advisory information. It typically appears when the users hovers the mouse over an element. The advisory information presented should not be identical to or very similar to the element text or alternative text.
In most cases the title attribute can be removed, otherwise modify it to provide advisory, but not redundant information. Note that the title text may or may not be read by a screen reader and is typically inaccessible to sighted keyboard users.
A title attribute value is identical to element text or image alternative text.
Image alternative text is present.
Alternative text presents the content or function of an image to screen reader users or in other situations where images cannot be seen or are unavailable.
Ensure that the alternative text conveys the content and function of the image accurately and succinctly. The alt attribute should be equivalent, accurate, and succinct.
A non-empty alt attribute is present on an image.
Alternative text is null or empty (alt="").
If an image does not convey content or if the content of the image is conveyed elsewhere (such as in a caption or nearby text), the image should have empty/null alternative text (alt="") to ensure that it is ignored by a screen reader and is hidden when images are disabled or unavailable.
Ensure that the image does not convey content or that the content of the image is conveyed in nearby text (e.g., a caption).
An image has alt="".
Alternative text is null or empty (alt="") on a spacer image.
Spacer images are used to control layout or positioning. Because they do not convey content, they should be given empty/null alternative text (alt="") to ensure that the content is not presented to screen reader users and is hidden when images are disabled or unavailable.
Ensure that the image is a spacer image and that it does not convey content. Consider using CSS instead of spacer images for better control of positioning and layout.
An images with width and/or height of 3 pixels or less or file name of spacer.*, space.*, or blank.* has empty/null alt attribute value (alt="").
Alternative text is present for an image that is within a link.
Including appropriate alternative text on an image within a link ensures that the function and purpose of the link and the content of the image is available to screen reader users or when images are unavailable.
Ensure that the alternative text presents the content of the image and/or the function of the link. If the full content and function of the link is presented in text within the link (an image and a text caption both within the same link, for example), then the image should generally be given empty/null alternative text (alt="") to avoid redundancy.
An image element has non-empty alternative text, is within a link, and no other text (or images with alternative text) is present within the link.
Alternative text is present for an image input element.
Providing the functionality of image buttons in alternative text ensures that the button function is available to all users.
Ensure that the alt attribute value presents the content and function of the image input element. If the image presents text, typically this text should be provided in the alt attribute.
An <input type="image"> element has a non-empty alt attribute value.
An alt attribute is present for an image that has hot spots.
If an image that uses an image map provides content or a function that is not already available through the hot spots (and their respective alternative texts), that information must be in the image's alt attribute in order for it to be available to screen reader users or when images are disabled.
Ensure that the alternative text for the image map image is appropriate. The alternative text is typically empty (alt=""), unless the image conveys content not conveyed in the hot spot areas (e.g., "Map of the United States").
An <img> element has both usemap and alt attributes.
Alternative text is present for an image map area (hot spot).
Presenting the functionality of image map areas (hot spots) in the <area> element's alt attribute value ensures that this information is presented to screen reader users or when images are disabled or unavailable.
Ensure the alternative text for the area element describes the function of the image map hot spot. Additionally, ensure that the area elements are listed in the code in a logical, intuitive order (e.g., matching the visual order, alphabetically, etc.).
An image uses an image map containing an area element with a non-empty alt attribute value.
A figure is present.
A <figure> represents self-contained content, potentially with an optional <figcaption>. Non-text content, if present, must have alternative text.
Ensure the figure presents accessible content and, if appropriate, has a figcaption.
A figure element is present.
A form label is present and associated with a form control.
A properly associated form label is presented to a screen reader user when the form control is accessed. Additionally, a label can be clicked with the mouse to set focus to the form control.
Ensure that the label is accurate, descriptive, succinct, and that it is associated with the correct form control element.
A <label> element is present and properly associated to <input> (except types of image, submit, reset, button, or hidden), <textarea>, or <select> element.
A fieldset is present.
A fieldset provides a visual and structural grouping of related form elements. If present, a fieldset legend presents a description of the grouped form elements to screen reader users. A fieldset and legend are typically necessary for groups of check boxes or radio buttons.
Ensure that the fieldset encloses the proper form elements. Most fieldsets should have an accurate, descriptive, and succinct legend. Note that the legend is repeated to screen reader users for each form control within the fieldsets.
A fieldset element is present.
A link is present which allows users to skip over navigation or other content.
A link that provides functionality for the user to jump over navigation or other elements or jump to the main content of the page greatly assists keyboard users in navigating the web page.
Ensure that the link is functioning properly and that the link text adequately describes the link functionality. If the skip link is hidden from sighted users, it should be made visible within the page when it has keyboard focus and must be accessible via the keyboard (do not use CSS display:none or visibility:hidden).
An in-page link:
A target for a "skip" link is present.
A "skip" target identifies the location within the page where reading and navigation will resume after a "skip" link is activated.
Ensure that the element is at the appropriate place within the page.
An id value for any element or a name value for an anchor element matches the href value of a "skip" link within the page.
The language of the document or a page element is identified.
Identifying the language of the page or portion of page (if different from the page itself) allows screen readers to read the content appropriately.
Ensure the language is properly identified for the page (e.g., <html lang="en">). If content within the page is in a language different than the page's language, identify it using a valid lang attribute value (e.g., <p lang="fr">).
A document or an element has a valid lang attribute value.
A first level heading (<h1> element) is present.
Headings facilitate page navigation for users of assistive technologies. They also provide semantic and visual meaning and structure to the document. First level headings should contain the most important heading(s) on the page (generally the document title).
Ensure that the text in question is truly a heading and that it is structured correctly in the page outline.
An <h1> element is present.
A second level heading (<h2> element) is present.
Headings facilitate page navigation for users of assistive technologies. They also provide semantic and visual meaning and structure to the document.
Ensure that the text in question is truly a heading and that it is structured correctly in the page outline.
An <h2> element is present.
A third level heading (<h3> element) is present.
Headings facilitate page navigation for users of assistive technologies. They also provide semantic and visual meaning and structure to the document.
Ensure that the text in question is truly a heading and that it is structured correctly in the page outline.
An <h3> element is present.
A fourth level heading (<h4> element) is present.
Headings facilitate page navigation for users of assistive technologies. They also provide semantic and visual meaning and structure to the document.
Ensure that the text in question is truly a heading and that it is structured correctly in the page outline.
An <h4> element is present.
A fifth level heading (<h5> element) is present.
Headings facilitate page navigation for users of assistive technologies. They also provide semantic and visual meaning and structure to the document.
Ensure that the text in question is truly a heading and that it is structured correctly in the page outline.
An <h5> element is present.
A sixth level heading (<h6> element) is present.
Headings facilitate page navigation for users of assistive technologies. They also provide semantic and visual meaning and structure to the document.
Ensure that the text in question is truly a heading and that it is structured correctly in the page outline.
An <h6> element is present.
An ordered (numbered) list (<ol> element) is present.
Ordered lists present a group of related sequential items. Users of assistive technologies can navigate by and within lists.
Ensure that an ordered (numbered) list is appropriate for the context. If list items are parallel or the order of the items is not important, an unordered list (<ul>) is likely more appropriate.
An <ol> element is present.
An unordered (bulleted) list (<ul> element) is present.
Unordered lists present a group of related, parallel items. Users of many assistive technologies can navigate by and within lists.
Ensure that an unordered (bulleted) list is appropriate for the context. If list items are sequential or numbered, an ordered list (<ol>) is likely more appropriate.
A <ul> element is present.
A definition/description list (<dl> element) is present.
Definition lists (called description lists in HTML5) present the descriptions for terms or name/value pairs. Users of many assistive technologies can navigate by and within lists.
Ensure that the list is appropriate for the context (it is used for definitions or name/value pairs) and that definition terms (<dt>) and descriptions (<dd>) are provided.
A <dl> element is present.
A <header> element or banner landmark is present.
Headers identify page introduction or navigation. They typically surrounds the site or page name, logo, top navigation, or other header content. Headers facilitate page semantics and navigation.
Ensure the header surrounds and defines page header content.
A <header> element or role="banner" is present.
A <nav> element or navigation landmark is present.
The navigation identifies a section of navigation links and can facilitate page semantics and navigation.
Ensure the element defines page navigation. Multiple navigation elements on one page can be differentiated with ARIA labels.
A <nav> element or role="navigation" is present.
An ARIA search landmark is present.
The search landmark identifies the search area within the page and facilitates keyboard navigation to the search area.
Ensure the search landmark is implemented properly and surrounds the search area of the page.
An element has role="search".
A <main> element or main landmark is present.
The <main> element or role="main" attribute identifies the main content for the page. This facilitate page semantics and navigation.
Ensure the element surrounds and defines page main content.
A <main> element or role="main"is present.
An <aside> element or complementary landmark is present.
An aside identifies secondary, related, or complementary content. It is typically presented in a sidebar.
Ensure the aside surrounds and defines secondary, related, or complementary content.
An <aside> element or role="complementary" is present.
A <footer> element or contentinfo landmark is present.
Footers identify a footer for the page or a page section. It typically identifies authorship, related links, copyright date, or other footer content. Footers facilitate page semantics and navigation.
Ensure the element surrounds and defines page or page section footer content.
A <footer> element or role="contentinfo" is present.
An ARIA region is present
Generic ARIA regions identify significant page areas that do not align to other region or ARIA landmark semantics - such as main, header, footer, etc. Regions support keyboard navigation and screen reader identification of page areas.
Ensure the region identifies a significant page area. If the semantics for another region or landmark type aligns with the content (e.g., <nav> or <aside>), use it instead. Ensure the region has a descriptive label using aria-labelledby (typically referencing a heading at the beginning of the region) or aria-label.
An element has role="region" and an aria-label or aria-labelledby attribute.
A data table is present.
Data tables present tabular data. Data tables should contain table header cells that identify the content of their respective row and/or columns. Tables with proper table headers provide additional information and navigation for screen reader users.
Ensure that the table contains tabular data and that it is not used merely for page layout. Ensure that all column and row headers are <th> elements and ensure the data cells are associated with their proper header cells (typically by assigning scope to the table headers). Where appropriate, associate a descriptive caption (<caption> element) to the table.
A <table> element is present that contains at least one table header cell (<th>).
A table caption is present.
An associated table caption will be read by a screen reader with the table content.
Ensure the table caption is properly associated with the correct table (<caption> should be the first element within the <table>) and that it provides a succinct description of the table.
A <caption> element is present.
A table header cell (<th>) is present.
Table headers describe the content of their respective row or column. They can be identified by screen readers when data cells are encountered.
Ensure the cell is a table header, otherwise change it to a data cell (<td>). For complex tables (particularly when there are spanned cells), the relationship between header and data cells may need to be defined using scope (e.g., <th scope="col"> or <th scope="row">) or headers and id attributes.
A <th> element is present that does not have a scope attribute value of "row" or "col".
A table column header (<th scope="col">) is present.
Adding a column scope to a table header ensures the cells within that column will be programmatically associated to that header, particularly with complex tables. This facilitates screen reader navigation and orientation within the data table.
Ensure that the cell is actually a header cell for tabular data and that it is a column header.
A table header cell (<th>) is present that has a scope attribute value of "col".
A table row header (<th scope="row">) is present.
Adding a row scope to a table header ensures the cells within that row will be programmatically associated to that header, particularly with complex tables. This facilitates screen reader navigation and orientation within the data table.
Ensure that the cell is actually a header cell for tabular data and that it is a row header.
A table header cell (<th>) is present that has a scope attribute value of "row".
An inline frame (<iframe>) is present.
The content of an inline frame is read as if it were part of the page that contains it. The content of the iframe must be accessible. A title attribute value for the iframe will generally be read by a screen reader when the iframe is encountered.
Ensure that the content within the iframe is accessible. Optionally, a title attribute value can be added to provide a brief, advisory description of the iframe.
An <iframe> element is present.
An ARIA role, state, or property is present.
ARIA provides enhanced semantics and accessibility for web content.
Ensure the ARIA role, state, or property is used correctly. Use standard HTML accessibility features when possible. Be aware that support for ARIA is limited in older browsers and assistive technologies.
An ARIA role, state, or property is present, excluding landmark roles, aria-labelledby, or aria-describedby which are distinct WAVE items.
An aria-label or aria-labelledby attribute is present.
ARIA labels define accessible names to be read by screen readers for interface elements. They may be used when HTML associations (label, alternative text, etc.) are not sufficient.
Ensure the aria-label value or element referenced by aria-labelledby provides a descriptive, accurate label. When possible, use standard HTML <label> or other markup to make the association.
An aria-label or aria-labelledby attribute is present.
An aria-describedby attribute is present.
ARIA descriptions provide additional information about interface elements, primarily form controls.
Ensure the aria-describedby attribute references an element that provides a correct description.
An aria-describedby attribute is present.
An ARIA alert role or live region is present.
ARIA live regions and alerts can be used to dynamically inform screen reader users of content updates.
Ensure the live region is properly tested and presents important, succinct content updates. A live region should not be used if focus is set to the updated page element.
A role="alert", role="alertdialog", or aria-live attribute is present.
An ARIA menu is present.
ARIA menus are application menus (like those used in software menu) with a specific keyboard interactions. They are NOT for navigation links on a web site.
Ensure that the menu is an application menu and has the appropriate keyboard interactions (menu items are navigated via the arrow keys, not via the Tab key), otherwise remove the menu role.
An element with role="menu" or role="menubar" is present.
An element with role="button" is present.
Elements with role="button" must function like native buttons. These should typically be replaced with true button elements.
Replace the element with a true button element, or ensure the element is keyboard navigable, can be activated with Enter or Space key presses (key detection is typically necessary), and provides a visible focus indicator.
An element (other than a button) has role="button".
An aria-expanded attribute is present.
The aria-expanded attribute indicates the status of content that can be expanded and collapsed.
Ensure that aria-expanded is used correctly (typically on a button that controls expandable content) and that the value (true or false) reflects the expansion state.
An element with an aria-expanded attribute is present.
An element triggers a popup menu, dialog, or other element.
The aria-haspopup element, when applied to a button, indicates that triggering the element will open an ARIA menu, dialog, listbox, tree, or grid.
Ensure that the element triggers an ARIA menu, dialog, listbox, tree, or grid and that the aria-haspop attribute value aligns with the type of element that is opened.
An aria-haspopup attribute is present.
A tabindex value of 0 or less is present.
Tabindex can facilitate keyboard navigation for interactive elements. A tabindex attribute value of 0 places an item into the keyboard navigation order (i.e., you can navigate to it using the Tab key). A value of less than 0 (typically -1) removes an element from the keyboard flow (you cannot Tab to it), but allows it to receive programmatic focus (e.g., via scripting).
Ensure that tabindex is being used correctly by navigating and interacting with the elements using only the keyboard. Positive tabindex values specify a distinct tab order and should typically be avoided.
A tabindex attribute is present and has a value of 0 or less.
Content is hidden with ARIA.
Content hidden with aria-hidden="true" is not presented to screen reader users.
Ensure the content is intended to be hidden from screen reader users. The hidden content must not contain any navigable elements (such as links or form controls).
An element with aria-hidden="true" is present.