Accessibility
What a keyboard and a screen reader run into: labels, landmarks, tab order and link text.
Buttons without an accessible name
Give every button text, an aria-label, or an inner image with alt text, so it is announced as something other than "button".
- Id
- BUTTON_MISSING_ACCESSIBLE_NAME
- Fix estimate
- 10 min per page
Form fields without a label
Tie every field to a label element, or give it aria-label, so it is clear what is being asked for.
- Id
- FORM_FIELD_MISSING_LABEL
- Fix estimate
- 10 min per page
Data table without header cells
Mark the header row with th cells so a screen reader can say which column a value belongs to.
- Id
- DATA_TABLE_MISSING_HEADERS
- Fix estimate
- 10 min per page
Links with generic text
Replace "read more" and "click here" with wording that says where the link goes, since links are often read out of context.
- Id
- GENERIC_LINK_TEXT
- Fix estimate
- 5 min per page
Iframe without a title
Give each iframe a title attribute saying what it contains, otherwise a screen reader announces only "iframe".
- Id
- IFRAME_MISSING_TITLE
- Fix estimate
- 5 min per page
No skip-to-content link
Put a skip link first in the body so keyboard users can step past the navigation on every page.
- Id
- MISSING_SKIP_LINK
- Fix estimate
- 10 min per page
Page built almost entirely from divs
Wrap the page in header, nav, main and footer so assistive tech can jump between regions instead of reading everything in order.
- Id
- NON_SEMANTIC_LAYOUT
- Fix estimate
- 20 min per page
Positive tabindex overrides tab order
Use tabindex="0" or none at all, so focus follows the document instead of a hand-written order that drifts as the page changes.
- Id
- POSITIVE_TABINDEX
- Fix estimate
- 10 min per page