WCAG 3.3.3 Error Suggestion — Testing Guide for Mobile & Web Apps

WCAG 3.3.3, "Error Suggestion," is a critical success criterion for making digital products usable by everyone, particularly those who encounter errors. It mandates that when an error occurs, your app

March 24, 2026 · 6 min read · WCAG Guides

Ensuring Clear Error Guidance: A Practical Guide to WCAG 3.3.3

WCAG 3.3.3, "Error Suggestion," is a critical success criterion for making digital products usable by everyone, particularly those who encounter errors. It mandates that when an error occurs, your application should not just inform the user about the mistake but also provide helpful suggestions on how to correct it. This goes beyond simply stating "Invalid input."

What WCAG 3.3.3 Requires

In straightforward terms, WCAG 3.3.3 means that if a user makes a mistake when entering information, your application must:

This criterion aims to reduce user frustration and prevent them from abandoning tasks due to unresolvable errors. It's a core component of making digital experiences accessible and user-friendly, aligning with mandates like the EU's European Accessibility Act (EAA) and the Americans with Disabilities Act (ADA) in the US.

Why WCAG 3.3.3 Matters: Real User Impact

Failure to meet WCAG 3.3.3 disproportionately affects users who may have cognitive disabilities, learning differences, or simply less technical proficiency. Imagine a user with dyslexia struggling to understand an error message like "Syntax error in field 7." Without clear guidance, they might be completely lost.

Providing error suggestions isn't just about compliance; it's about building empathetic products that work for a broader audience.

Common Violations with Examples

Many applications fall short of this criterion by providing unhelpful or missing error guidance.

#### Mobile Application Examples

  1. Password Field Error:
  1. Date Picker Error:
  1. Form Submission Error:

#### Web Application Examples

  1. Email Address Field:
  1. Credit Card Number Field:

How to Test for Compliance

Testing for WCAG 3.3.3 requires a combination of manual checks and leveraging automated tools.

#### Manual Testing Steps

  1. Identify all input fields: Go through your application and list every field where a user can enter data (text fields, dropdowns, checkboxes, radio buttons, date pickers, etc.).
  2. Trigger errors deliberately: For each input field, try to deliberately cause an error. This includes:
  1. Observe error messages:
  1. Test with different user personas: Consider how a "novice" user, an "elderly" user, or a "power user" might interact with error messages. A power user might want a quick hint, while a novice needs a more detailed explanation.

#### Automated Tools

While fully automating the *suggestion* part of WCAG 3.3.3 is complex, automated tools can detect many underlying issues that lead to errors and can flag fields that *might* need better guidance.

#### Mobile-Specific Considerations (Android/iOS)

How to Fix Violations

Fixing WCAG 3.3.3 violations involves refining your error handling to be more informative and helpful.

  1. Be Specific: Instead of "Invalid email," use "Please enter a valid email address, for example, name@example.com."
  2. Provide Format Examples: For dates, phone numbers, or specific codes, show the expected format: "Enter your phone number in the format XXX-XXX-XXXX."
  3. Indicate Missing Information: If a required field is blank, state it clearly: "This field is required. Please enter your company name."
  4. Suggest Valid Ranges/Options: For numerical inputs, specify the acceptable range: "Please enter a quantity between 1 and 10." For dropdowns, ensure the options themselves are clear.
  5. Use Inline Validation with Clear Messages: Display error messages directly next to the relevant field as soon as an error is detected, rather than waiting for form submission.

#### Code Examples (Conceptual)

Web (JavaScript Example):


const emailInput = document.getElementById('email');
const emailError = document.getElementById('email-error');

emailInput.addEventListener('blur', () => {
  const emailValue = emailInput.value;
  // Basic email format check (more robust validation needed)
  if (!emailValue.includes('@') || !emailValue.includes('.')) {
    emailError.textContent = "Invalid email format. Please use 'name@domain.com'.";
    emailInput.classList.add('error');
  } else {
    emailError.textContent = '';
    emailInput.classList.remove('error');
  }
});

Mobile (Conceptual Android - Kotlin):


val passwordEditText: EditText = findViewById(R.id.passwordEditText)
val passwordInputLayout: TextInputLayout = findViewById(R.id.passwordInputLayout)

passwordEditText.addTextChangedListener(object : TextWatcher {
    override fun afterTextChanged(s: Editable?) {
        if (s != null && s.length < 8) {
            passwordInputLayout.error = "Password must be at least 8 characters long."
        } else {
            passwordInputLayout.error = null
        }
    }
    // ... other TextWatcher methods
})

How SUSA Checks This Criterion

SUSA autonomously explores your application, acting as multiple user personas, including those who are likely to make mistakes or need clear guidance.

Test Your App Autonomously

Upload your APK or URL. SUSA explores like 10 real users — finds bugs, accessibility violations, and security issues. No scripts.

Try SUSA Free