WCAG 3.3.5: Help
Understanding WCAG 3.3.5: Help
WCAG 3.3.5, known as “Help,” is a Level A success criterion that emphasizes the importance of providing users with relevant and easily accessible assistance. It mandates that context-sensitive help must be available whenever needed. This criterion aims to reduce user frustration and errors by ensuring that users can quickly find answers or guidance directly related to the task they are performing or the specific interface element they are interacting with.
“Context-sensitive help” means that the assistance provided is directly related to the particular step, element, or section of the content or application where the user is currently located. This goes beyond a general FAQ page; it’s about making help specific and actionable in the moment of need.
Why is “Help” Important? (Accessibility Impact)
Providing effective help mechanisms is vital for creating an inclusive web experience. It significantly benefits a wide range of users, especially those with cognitive disabilities, learning disabilities, or conditions that affect memory or concentration. Here’s why:
- Users with Cognitive and Learning Disabilities: Individuals who may have difficulty remembering instructions, understanding complex processes, or processing information benefit greatly from readily available, specific guidance. Contextual help can reduce cognitive load and prevent errors.
- Users with Limited Memory: They might forget the purpose of a field or the required format. In-line or easily accessible help text can remind them without losing their place.
- Users with Limited Dexterity: Mistakes in data entry are more common. Contextual help can guide them in correcting errors or understanding input requirements upfront.
- Users New to a System or Language: First-time users or those who are not native speakers of the content’s language often need extra assistance to navigate and understand unfamiliar interfaces or terminology.
- Reducing Anxiety: Knowing that help is readily available can reduce anxiety for users who are unsure about how to proceed, especially when dealing with sensitive information or critical tasks.
- Error Prevention and Recovery: Context-sensitive help can prevent errors by clarifying expectations before submission, or assist users in recovering from errors by explaining what went wrong and how to fix it.
WCAG 3.3.5 Success Criteria and Requirements
The core requirement for Success Criterion 3.3.5 (Help) is straightforward: context-sensitive help must be available when needed. Let’s break down what this entails:
- Availability: The help mechanism must be present and easily discoverable by the user. It doesn’t necessarily have to be constantly visible, but it must be simple to activate or access.
- Context-Sensitive: The help provided must be specific to the current task, input field, or section of the content. If a user is filling out a password field, the help should explain password requirements, not general site navigation.
-
Examples of Acceptable Help Mechanisms:
- Human Contact: Providing a phone number, email address, or live chat option (e.g., a chatbot or direct line to support) that a user can reach out to for assistance related to their current task.
- Context-Sensitive Help Text or Links: Short, descriptive text displayed next to an input field, a tooltip that appears on hover/focus, or a link to a specific section of a help document that addresses the current context.
- Context-Sensitive FAQs: A frequently asked questions section that is filtered or presented based on the user’s current location or task.
- Wizards or Guided Tours: Step-by-step instructions or interactive guides that walk users through complex processes.
- Spell Checkers, Grammar Checkers, or Input Format Guides: These tools provide immediate, context-specific feedback or suggestions.
- Accessibility: Crucially, the help mechanism itself must be accessible. This means it should be keyboard operable, perceivable by screen readers, and provide clear indications of its purpose and state (e.g., using ARIA attributes).
Practical Guidelines for Compliance
To meet WCAG 3.3.5, consider the following practical guidelines:
- Identify Where Help is Needed: Analyze your application or content for complex forms, unusual terminology, multi-step processes, or areas where users commonly make mistakes. These are prime candidates for context-sensitive help.
-
Clearly Label Help Mechanisms: Ensure that buttons, links, or icons that trigger help are clearly labeled and their purpose is obvious (e.g., a question mark icon with an associated
aria-label="Help"
or descriptive text). - Consistent Placement: Position access points for help consistently across your site or application. This predictability makes it easier for users to find help when they need it.
- Offer Multiple Types of Help: For complex tasks, consider providing a layered approach – in-line help for quick tips, a tooltip for more detail, and a link to a full help center or human support for comprehensive issues.
- Ensure Help Content is Accessible: The help text or interface itself must be easily consumable. Use clear, concise language, proper heading structure if the help is extensive, and ensure it’s compatible with assistive technologies.
- Keyboard and Screen Reader Access: All methods of accessing help (e.g., toggling a tooltip, opening a chat window, navigating to a help page) must be fully operable via keyboard and properly announced by screen readers.
- Integrate Seamlessly: Help should feel like a natural part of the user experience, not an afterthought. It should not disrupt the user’s flow excessively.
Examples of Correct and Incorrect Implementations
Correct Implementation Examples
Example 1: Form Field with Inline Help Text
Providing direct, always-visible help text next to an input field, associated using aria-describedby
.
<label for="username">Username</label>
<input type="text" id="username" aria-describedby="username-help">
<div id="username-help" class="help-text">
Enter your desired username. Must be 6-20 characters long and contain only letters and numbers.
</div>
<style>
.help-text {
font-size: 0.9em;
color: #555;
margin-top: 5px;
}
</style>
Example 2: Contextual Help Icon with Toggleable Tooltip
A button that reveals/hides a context-specific tooltip, accessible via keyboard and screen reader.
<label for="password">Password</label>
<input type="password" id="password" aria-describedby="password-help">
<button type="button" aria-controls="password-help" aria-expanded="false" class="help-toggle"
onclick="toggleHelp('password-help', this)">
<span class="visually-hidden">Help for password field</span>
<span aria-hidden="true">?</span>
</button>
<div id="password-help" class="help-text" role="region" aria-live="polite" style="display: none;">
Your password must be at least 8 characters long and include uppercase, lowercase, numbers, and symbols.
</div>
<style>
.help-toggle {
background: #eee;
border: 1px solid #ccc;
border-radius: 50%;
width: 25px;
height: 25px;
font-weight: bold;
cursor: pointer;
margin-left: 5px;
vertical-align: middle;
}
.help-text {
padding: 10px;
border: 1px solid #ddd;
background: #f9f9f9;
margin-top: 10px;
}
.visually-hidden {
position: absolute;
width: 1px;
height: 1px;
margin: -1px;
padding: 0;
overflow: hidden;
clip: rect(0, 0, 0, 0);
border: 0;
}
</style>
<script>
function toggleHelp(id, button) {
const helpElement = document.getElementById(id);
const isExpanded = button.getAttribute('aria-expanded') === 'true';
if (isExpanded) {
helpElement.style.display = 'none';
button.setAttribute('aria-expanded', 'false');
} else {
helpElement.style.display = 'block';
button.setAttribute('aria-expanded', 'true');
}
}
</script>
Example 3: System-Wide Live Chat for Human Contact
A persistent live chat button available across the site for general or complex issues.
<nav aria-label="Main Navigation">
<ul>
<li><a href="/dashboard">Dashboard</a></li>
<li><a href="/settings">Settings</a></li>
<li><button id="open-chat" aria-haspopup="dialog" aria-expanded="false">
<span aria-hidden="true">💬</span> Live Chat
</button></li>
</ul>
</nav>
<style>
#open-chat {
background-color: #007bff;
color: white;
border: none;
padding: 8px 15px;
border-radius: 5px;
cursor: pointer;
font-size: 1em;
}
#open-chat span[aria-hidden="true"] {
margin-right: 5px;
}
</style>
<script>
// Example: Basic chat toggle (more complex chat UIs would use a dialog role)
const chatButton = document.getElementById('open-chat');
chatButton.addEventListener('click', () => {
const isExpanded = chatButton.getAttribute('aria-expanded') === 'true';
chatButton.setAttribute('aria-expanded', !isExpanded);
// In a real application, this would open/close a chat widget dialog
console.log('Chat widget toggled:', !isExpanded);
});
</script>
Incorrect Implementation Examples
Example 1: Missing Help for a Complex Field
A field that likely requires explanation but provides no help mechanism.
<label for="affiliate-id">Affiliate ID (What's this?) </label>
<input type="text" id="affiliate-id">
<!-- The parenthetical hint indicates a need for help, but no accessible help mechanism is provided.
Users relying on screen readers or keyboard navigation might miss this cue and get stuck. -->
Example 2: Non-Contextual Help
A general help link that does not adapt to the user’s current context on a complex page.
<!-- On a complex account creation form with many specific input requirements -->
<h1>Create New Account</h1>
<!-- ... many form fields ... -->
<p>For general inquiries, visit our <a href="/general-faq">FAQ page</a>.</p>
<!-- This link is too generic and doesn't provide specific assistance for filling out the form fields,
which is the immediate context where help is needed. -->
Example 3: Inaccessible Help Mechanism
A help icon that is only clickable via mouse and not accessible via keyboard or screen reader, and whose content isn’t properly conveyed.
<label for="security-code">Security Code</label>
<input type="text" id="security-code">
<div class="help-icon" onclick="showHelpTooltip(this)">?</div>
<!-- This div is not focusable by default, nor is it keyboard operable. Screen readers will not announce it as an interactive element,
and its purpose will not be conveyed without proper ARIA roles and labels. -->
<style>
.help-icon {
display: inline-block;
width: 20px;
height: 20px;
border-radius: 50%;
background: blue;
color: white;
text-align: center;
line-height: 20px;
cursor: pointer;
margin-left: 5px;
}
</style>
<script>
function showHelpTooltip(element) {
// This function might display a tooltip, but if the element itself isn't accessible,
// the help content becomes inaccessible too.
console.log('Tooltip for ' + element.previousElementSibling.id + ' shown.');
}
</script>
Best Practices and Common Pitfalls
Best Practices:
- Offer Multiple Help Options: For varied user needs, consider providing different types of help: in-line, tooltips, dedicated help pages, and human contact (e.g., live chat, phone, email).
- Consistency is Key: Place help access points (icons, links) in predictable and consistent locations across your site or application. This helps users learn where to look for assistance.
- Use Clear, Concise Language: Help content should be easy to understand, free of jargon, and directly address the user’s potential confusion. Avoid overly technical explanations unless the target audience is technical.
- Ensure Help Mechanism Accessibility: The tools used to provide help (buttons, links, pop-ups) must themselves be fully accessible via keyboard, screen readers, and other assistive technologies. Use proper semantic HTML and ARIA attributes.
- User Testing: Conduct user testing, especially with individuals with cognitive and learning disabilities, to identify areas where help is insufficient or confusing.
- Proactive Help: For critical or complex fields, sometimes it’s better to show a brief piece of help text by default rather than requiring the user to activate it.
- Maintain Help Content: Ensure that help documentation and context-sensitive messages are always up-to-date with the current functionality and user interface.
Common Pitfalls:
- No Help Provided: The most obvious pitfall – simply not offering any assistance for elements or tasks that warrant it.
- Generic or Non-Contextual Help: Providing only a general FAQ or a broad help center link when specific, in-the-moment guidance is needed.
- Inaccessible Help Mechanism: Help that cannot be accessed or understood by users relying on keyboards, screen readers, or other assistive technologies.
- Hidden or Hard-to-Find Help: Placing help access points in obscure locations or requiring too many steps to activate them.
- Overwhelming Help: Presenting too much information at once in a help tooltip or in-line text, which can be just as confusing as no help.
- Outdated or Incorrect Help: Help content that no longer accurately reflects the current state of the application or provides incorrect instructions.
- Relying Solely on Visual Cues: Using only color or iconography without text labels or ARIA attributes to indicate a help mechanism.
Conclusion
WCAG 3.3.5 “Help” is a foundational criterion for creating user-friendly and accessible digital experiences. By providing context-sensitive and easily accessible assistance, developers and content creators can significantly empower all users, especially those with cognitive and learning disabilities, to successfully complete tasks, understand content, and navigate complex interfaces without unnecessary frustration. Implementing thoughtful help mechanisms is not just about compliance; it’s about demonstrating empathy and commitment to inclusive design.