Common found WCAG 2.0 issues - Grouped by SC
A database of WCAG issues found in our audits. Grouped by Success Criterion.
Important information
- Our soon to be awesome site is new and still under construction. Please open an issue on our Github project if you see anything that needs to be fixed or if you have any recommendations.
- Full list
- Grouped Success Criterion
1.1.1 Non-text Content
- <object> elements must have alternate text
- Elements containing <code>role="img"</code> have an alternative text
- Image buttons must have alternate text
- Images must have alternate text
- SVG images and graphics require accessible text
- Using CSS to include images that convey important information
- Not marking up decorative images in HTML in a way that allows assistive technology to ignore them
- Providing a text alternative that is not null (e.g., alt=spacer" or alt="image") for images that should be ignored by assistive technology"
- Omitting the alt attribute or text alternative on img elements, area elements, and input elements of type "image"
- Using text look-alikes to represent text without providing a text alternative
- Using ASCII art without providing a text alternative
1.1.1 Non-text Content; 1.2.1 Audio-onle and Video-only (Prerecorded)
- Using text alternatives that are not alternatives (e.g., filenames or placeholder text)
- Providing long descriptions for non-text content that does not serve the same purpose or does not present the same information
1.1.1 Non-text Content; 1.4.1 Use of Color
- Having a text alternative that does not include information that is conveyed by color differences in the image
1.1.1 Non-text Content; 2.4.4 Link Purpose (In Context); 4.1.2 Name, Role, Value
- Active <area> elements must have alternate text
1.1.1 Non-text Content; 4.1.2 Name, Role, Value
- Not updating text alternatives when changes to non-text content occur
1.2.2 Captions (Prerecorded)
- Captions omitting some dialogue or important sound effects
- Providing synchronized media without captions when the synchronized media presents more information than is presented on the page
1.2.2 Captions (Prerecorded); 1.2.8 Media Alternative (Prerecorded)
- Not labeling a synchronized media alternative to text as an alternative
1.3.1 Info and Relationships
- <dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, or <template> elements
- <dt> and <dd> elements must be contained by a <dl>
- <li> elements must be contained in a <ul> or <ol>
- <ul> and <ol> must only directly contain <li>, <script> or <template> elements
- All <th> elements and elements with role="columnheader" or role="rowheader" must have data cells they describe
- All cells in a <table> element that use the headers attribute must only refer to other cells of that same <table>
- All non-empty <td> elements in tables larger than 3 by 3 must have an associated table header
- Bold, italic text and font-size are not used to style <p> elements as a heading
- Certain ARIA roles must be contained by particular parent elements
- Certain ARIA roles must contain particular children
- Data or header cells should not be used to give caption to a data table
- Using changes in text presentation to convey information without using the appropriate markup or text
- Using structural markup in a way that does not represent relationships in the content
- Using th elements, layout tables
- Inserting non-decorative content by using :before and :after pseudo-elements and the 'content' property in CSS
- Incorrectly associating table headers and content via the headers and id attributes
- Not correctly marking up table headers
- The use of role presentation on content which conveys semantic information
1.3.1 Info and Relationships; 1.3.2 Meaningful Sequence
- Using white space characters to create multiple columns in plain text content
- Using white space characters to format tables in plain text content
1.3.1 Info and Relationships; 2.1.1 Keyboard; 2.1.3 Keyboard (No exceptions); 4.1.2 Name, Role, Value
- Improperly emulating links
1.3.1 Info and Relationships; 4.1.2 Name, Role, Value
- Form <input> elements must have labels
1.3.2 Info and Relationships
- Using the pre element to markup tabular information
1.3.2 Meaningful Sequence
- Changing the meaning of content by positioning information with CSS
- Using white space characters to control spacing within a word
- Using an HTML layout table that does not make sense when linearized
1.3.3 Sensory Characteristics
- Identifying content only by its shape or location
- Using a graphical symbol alone to convey information
1.3.4 Orientation
- CSS Media queries are not used to lock display orientation
- Locking the orientation to landscape or portrait view
1.3.5 Identify Input Purpose
- Autocomplete attribute must be used correctly
1.4.1 Use of Color
- Links must be distinguished from surrounding text in a way that does not rely on color
- Creating links that are not visually evident without color vision
- Identifying required or error fields using color differences only
1.4.10 Reflow
- Using fixed sized containers and fixed position content (CSS)
- Using preformatted text or excluding preformatting text as an exception to no two dimensional scrolling.
1.4.11 Non-text Contrast; 2.4.7 Focus Visible; 2.4.11 Focus Visible (Enhanced)
- Styling element outlines and borders in a way that removes or renders non-visible the visual focus indicator
1.4.12 Text Spacing
- Inline text spacing must be adjustable with custom stylesheets
- Not allowing for spacing override.
1.4.13 Content on Hover or Focus
- Content shown on hover not being hoverable
- Failure to make content dismissable without moving pointer hover or keyboard focus
- Failure to meet by content on hover or focus not remaining visible until dismissed or invalid
1.4.2 Audio Control
- Audio must have controls that provide users with the ability to stop automatically played audio after three seconds
- Playing a sound longer than 3 seconds where there is no mechanism to turn it off
- Absence of a way to pause or stop an HTML5 media element that autoplays
1.4.3 Contrast (Minimum)
- Text elements must have sufficient color contrast against the background
- Specifying foreground colors without specifying background colors or vice versa
1.4.3 Contrast (Minimum); 1.4.6 Contrast (Enhanced)
- Using background images that do not provide sufficient contrast with foreground text (or images of text)
1.4.4 Resize text
- Zooming and scaling must not be disabled
- Resizing visually rendered text up to 200 percent causes the text, image or controls to be clipped, truncated or obscured
- Text-based form controls do not resize when visually rendered text is resized up to 200%
- Text sized in viewport units
2.1.1 Keyboard
- Server-side image maps must not be used
- Using only pointing-device-specific event handlers (including gesture) for a function
2.1.1 Keyboard; 2.4.7 Focus Visible; 2.4.1 Focus Visibile (Enhanced); 3.2.1 On Focus
- Using script to remove focus when focus is received
2.1.2 No Keyboard Trap
- Combining multiple content formats in a way that traps users inside one format type
2.1.4 Character Key Shortcuts
- A webpage or web app that includes single-key shortcuts not including a control that allows users to turn the shortcuts off or a control that allows users to change the shortcuts to key combinations that include keys that are not upper or lower-case letters, punctuation, number, or symbol characters.
2.2.1 Timing Adjustable
- Using server-side techniques to automatically redirect pages after a time-out
2.2.1 Timing Adjustable; 2.2.4 Interruptions; 3.2.5 Change on Request
- Timed refresh must not exist
- Using meta redirect with a time limit
- Using meta refresh to reload the page
2.2.2 Pause, Stop, Hide
- <blink> elements are deprecated and must not be used
- <marquee> elements are deprecated and must not be used
- Using text-decoration:blink without a mechanism to stop it in less than five seconds
- An object or applet, such as Java or Flash, that has blinking content without a mechanism to pause the content that blinks for more than five seconds
- Including scrolling content where movement is not essential to the activity without also including a mechanism to pause and restart the content
- Using the blink element
- A script that causes a blink effect without a mechanism to stop the blinking at 5 seconds or less
2.4.1 Bypass Blocks
- Page must have means to bypass repeated blocks
2.4.1 Bypass Blocks; 4.1.2 Name, Role, Value
- Frames must have title attribute
2.4.2 Page Titled
- Documents must contain a title element to aid in navigation
- The title of a Web page not identifying the contents
2.4.3 Focus Order
- Using tabindex to create a tab order that does not preserve meaning and operability
- Using dialogs or menus that are not adjacent to their trigger control in the sequential navigation order
2.4.4 Link Purpose (In Context)
- Providing link context only in content that is not related to the link
2.4.4 Link Purpose (In Context); 2.4.9 Link Purpose (Link Only); 4.1.2 Name, Role, Value
- Not providing an accessible name for an image which is the only content in a link
2.4.4 Link Purpose (In Context); 4.1.2 Name, Role, Value
- Links must have discernible text
2.4.7 Focus Visible
- Ensure that scrollable region has keyboard access
2.4.9 Link Purpose (Link Only)
- Ensure that links with the same accessible name serve a similar purpose
- Using a non-specific link such as "click here" or "more" without a mechanism to change the link text to specific text.
2.5.1 Pointer Gestures
- Functionality can be operated by pointer input but not with single-point activation alone
2.5.2 Pointer Cancellation
- Activating a button on initial touch location rather than the final touch location.
2.5.3 Label in Name
- Label and name from content mismatch
- The accessible name not containing the visible label text
- Accessible name contains the visible label text, but the words of the visible label are not in the same order as they are in the visible label text
- Accessible name contains the visible label text, but one or more other words are interspersed in the label
2.5.4 Motion Actuation
- Functionality that can only be activated via device motion events (e.g., shaking or tilting)
- An inability to disable motion actuation
- Disrupting or disabling system level features which allow the user to disable motion actuation
3.1.1 Language of Page
- <html> element must have a lang attribute
- <html> element must have a valid value for the lang attribute
- <html> elements with lang and xml:lang must have the same base language
3.1.2 Language of Parts
- lang attribute must have a valid value
3.2.1 On Focus; 3.2.5 Change on Request
- Opening a new window as soon as a new page is loaded
3.2.2 On Input
- Automatically submitting a form and given a value
- Launching a new window without prior warning when the selection of a radio button, check box or select list is changed
3.2.3 Consistent Navigation
- Presenting navigation links in a different relative order on different pages
3.2.4 Consistent Identification
- Using two different labels for the same function on different Web pages within a set of Web pages
3.3.2 Labels or Instructions
- Form fields do not have duplicate labels
- Visually formatting a set of phone number fields but not including a text label
4.1.1 Parsing
- ID attribute value must be unique
- ID attribute values must be unique
- IDs used in ARIA and labels must be unique
- Incorrect use of start and end tags or attribute markup
- Duplicate values of type ID
4.1.2 Name, Role, Value
- ARIA attributes must conform to valid names
- ARIA attributes must conform to valid values
- ARIA input fields have an accessible name
- ARIA roles used must conform to valid values
- ARIA toggle fields have an accessible name
- aria-hidden elements do not contain focusable elements
- aria-hidden="true" must not be present on the document <body>
- Buttons must have discernible text
- Elements must only use allowed ARIA attributes
- Input buttons must have discernible text
- Required ARIA attributes must be provided
- Use aria-roledescription on elements with a semantic role
- Implementing custom controls that do not use an accessibility API for the technology, or do so incompletely
- Using script to make div or span a user interface control in HTML without providing a role for the control
- A user interface control not having a programmatically determined name
- The focus state of a user interface component not being programmatically determinable or no notification of change of focus state available
- Not providing names for each part of a multi-part form field, such as a US telephone number
4.1.3 Status Messages
- Using role="alert" or aria-live="assertive" on content which is not important and time-sensitive
- Using a visibility change event to hide or display a document without switching the document's live regions between active and inactive
Best Practice
- ARIA role must be appropriate for the element
- accesskey attribute value must be unique
- All page content must be contained by landmarks
- Banner landmark must not be contained in another landmark
- Complementary landmarks and/or asides are top level
- Contentinfo landmark must not be contained in another landmark
- Elements in the focus order need a role appropriate for interactive content
- Elements should not have tabindex greater than zero
- Ensures the document has at most one main landmark
- Form <input> elements should have a visible label
- Frames must be tested with axe-core
- Frames must have a unique title attribute
- Heading levels should only increase by one
- Headings must not be empty
- Hidden content on the page cannot be analyzed
- Landmarks must have a unique role or role/label/title (i.e. accessible name) combination
- Main landmark must not be contained in another landmark
- Page must contain a level-one heading
- Page must have one main landmark
- Page must not have more than one banner landmark
- Page must not have more than one contentinfo landmark
- Scope attribute should be used correctly on tables
- Text of buttons and links should not be repeated in the image alternative
- The <caption> element should not contain the same text as the summary attribute
- The skip-link target should exist and be focusable
- Users should be able to zoom and scale the text up to 500%
- Date modified: