- Images: Add
alt
text to all images that convey information. - Decorative Images: Use empty
alt
attributes (alt=""
) for purely decorative images. - Complex Images: Use
longdesc
or detailed descriptions for complex images like charts or infographics. - Icons: Provide text labels for icon-based buttons.
- Linked images: Add
alt
text that details their URL destination, not a description of the image.
- Videos: Add captions and transcripts for all video content.
- Audio: Provide transcripts for all audio content.
- Live Media: Offer real-time text or sign language interpretation where applicable.
- Semantic HTML: Use proper HTML elements for their intended purpose (e.g.,
<header>
,<nav>
,<main>
,<footer>
). - ARIA Landmarks: Use ARIA landmarks to improve navigation (e.g.,
role="banner"
,role="navigation"
). - Headings: Use headings to create a clear document structure.
- Lists: Use lists (
<ul>
,<ol>
) for related items. Screen reader software can tell a user how many list items there are, and which one is being read out. Otherwise, screen reader users miss out on that information. - Emphasis: Emphasize text with bold or italic text to make it stand out. Bold is preferable.
- Color Contrast: Ensure text has sufficient color contrast (minimum 4.5:1 for normal text, 3:1 for large text).
- Color Indicators: Do not rely solely on color to convey information (e.g., error messages).
- Resizable Text: Ensure text can be resized up to 200% without loss of content or functionality.
- Accessibility Media Queries: Use media queries like
prefers-contrast
,prefers-reduced-transparency
,prefers-color-scheme
,inverted-colors
, andforced-colors
to enhance accessibility. - Custom Selection Colors: Check custom
::selection
colors to ensure readability.
- Navigation: Ensure all interactive elements (links, buttons, form fields) are accessible via keyboard (tab, enter, space, etc.).
- Focus: Use visible focus indicators for all interactive elements.
- Skip Links: Provide skip navigation links to bypass repetitive content.
- Invisible Focusable Elements: Remove invisible focusable elements.
- Focus Order: Ensure keyboard focus order matches the visual layout.
- Focus Management: Ensure focus is properly managed in modal dialogs, ensuring that it traps focus within the modal until it is closed.
- Time Limits: Allow users to extend, adjust, or disable time limits.
- Animations: Provide controls to pause, stop, or hide moving or blinking content.
- Flashing Content: Avoid content that flashes more than three times per second.
- Motion: Use
prefers-reduced-motion
media query to reduce or disable motion effects like transitions and animations.
- Headings: Use a logical heading structure with
<h1>
for the main title, followed by<h2>
,<h3>
, etc. - Links: Ensure links are descriptive and indicate their purpose.
- Breadcrumbs: Use breadcrumbs for complex navigation.
- Language: Specify the primary language of the page using the
lang
attribute. - Language Changes: Indicate changes in language for specific sections using
lang
attributes. - Content:
- Use plain language and avoid figures of speech, idioms, and complicated metaphors.
- Ensure
button
,a
, andlabel
element content is unique and descriptive. - Use left-aligned text for left-to-right (LTR) languages, and right-aligned text for right-to-left (RTL) languages.
- Font Size: Use relative units like
em
,rem
, or percentages for font sizes. Some users may have their own default font size set in their browser, and using relative units allows your site to adapt to this setting. - Accessible Fonts: Use accessible and readable fonts; avoid overly decorative fonts.
- Consistent Navigation: Maintain consistent navigation across pages.
- No Unexpected Actions: Avoid unexpected changes in context (e.g., auto-submission of forms).
- Labels: Ensure all form fields have associated labels.
- Instructions: Provide clear instructions for completing forms.
- Error Messages: Provide descriptive error messages and suggestions for correction.
- HTML Validation: Use valid HTML5 and CSS code.
- ARIA: Use ARIA roles, states, and properties appropriately to enhance accessibility.
- Assistive Technologies: Test the website with different assistive technologies (e.g., screen readers).
- Global Code:
- Provide a unique
title
for each page or view. - Ensure that viewport zoom is not disabled.
- Ensure a linear content flow.
- Avoid using the
autofocus
attribute. - Remove
title
attribute tooltips.
- Provide a unique
- Tools: Use automated testing tools like Axe, WAVE, or Lighthouse to identify and fix accessibility issues.
- Screen Reader: Test the website with screen readers (e.g., NVDA, JAWS, VoiceOver).
- Keyboard-Only: Navigate the website using only the keyboard.
- Color Contrast: Check color contrast manually using tools like Contrast Checker available in most browser developer tools.
- Specialized Browsing Modes: Check your content in high-contrast mode or with an inverted color scheme.
- CSS Disabled: Test your website with CSS disabled to ensure that the content is still accessible.
- Zoom Levels: Test using different zoom levels to ensure that the content remains accessible.
- Media Queries: Use media queries to ensure the website is responsive and works on different screen sizes.
- Touch Targets: Ensure touch targets are large enough for users with motor impairments.
- Orientation: Check that the site can be rotated to any orientation.
- Horizontal Scrolling: Remove horizontal scrolling.
- Interactive Item Spacing: Ensure sufficient space between interactive items to provide a scroll area.
- Accessible Forms: Ensure all form fields are accessible, with proper labels and focus order.
- Error Prevention: Implement client-side validation to prevent errors before form submission.
- Controls: Provide accessible controls for multimedia content (play, pause, stop, volume).
- Autoplay: Ensure that media does not autoplay.