WCAG 1.3.3 Sensory Characteristics — Testing Guide for Mobile & Web Apps

WCAG 1.3.3, "Sensory Characteristics," is a foundational accessibility requirement. It mandates that instructions, labels, and other information conveyed to users must not rely *solely* on sensory cha

February 13, 2026 · 5 min read · WCAG Guides

Ensuring Sensory Characteristics Compliance: A Developer's Guide to WCAG 1.3.3

WCAG 1.3.3, "Sensory Characteristics," is a foundational accessibility requirement. It mandates that instructions, labels, and other information conveyed to users must not rely *solely* on sensory characteristics like shape, size, visual location, orientation, or sound. This ensures that users with sensory disabilities can understand and interact with your application.

What WCAG 1.3.3 Requires (In Plain English)

Your application cannot depend on a user being able to see a specific color, hear a particular sound, or perceive the physical location of an element to understand critical information or complete a task. If you use a sensory characteristic to convey information, you must provide an alternative method for users who cannot perceive that characteristic.

For example, if a form field is marked red to indicate an error, you must also provide a text-based explanation of the error associated with that field. If a button is described as "the button on the right," you need to provide a more descriptive label that doesn't rely on its position.

Why It Matters: Real User Impact

This criterion directly impacts users with a wide range of disabilities:

Non-compliance creates significant barriers. Users may be unable to complete essential tasks, leading to frustration, exclusion, and potential legal ramifications under regulations like the EU's European Accessibility Act (EAA) and the U.S. Americans with Disabilities Act (ADA).

Common Violations and Examples

Here are typical scenarios where WCAG 1.3.3 is violated:

#### Mobile App Violations

  1. Color-Only Error Indicators:
  1. Location-Based Instructions:
  1. Audio-Only Cues:

#### Web App Violations

  1. Color-Coded Navigation:
  1. Shape-Based Controls (without labels):
  1. Visual Hierarchy without Semantic Structure:

How to Test for Compliance

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

#### Manual Testing Steps

  1. Identify Information Conveyed by Sensory Characteristics: Review your app's UI. Note any instances where color, shape, size, location, or sound is the *only* way information is conveyed.
  2. Simulate Sensory Impairments:
  1. Verify Alternative Information: For every sensory cue identified in step 1, confirm that an equivalent, non-sensory alternative is present.

#### Automated Tools for Checking

While manual testing is crucial for understanding user experience, automated tools can catch many common violations:

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

How to Fix Violations

The core principle is to provide redundant information.

#### Code Examples

Mobile (Android - Kotlin/XML):

Violation:


<!-- Error field without clear text indicator -->
<EditText
    android:id="@+id/emailInput"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/error_border_red" /> <!-- Red border only -->

Fix:


<!-- Error field with clear text indicator -->
<EditText
    android:id="@+id/emailInput"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/error_border_red"
    android:labelFor="@id/emailInput" />

<TextView
    android:id="@+id/emailError"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Invalid email format. Please enter a valid email address."
    android:textColor="@android:color/red"
    android:visibility="gone"
    android:importantForAccessibility="yes" /> <!-- Crucial for screen readers -->

In your Activity/Fragment, you would programmatically show emailError when validation fails.

Web (HTML/JavaScript):

Violation:


<!-- Button identified only by color and position -->
<button class="action-button primary-color">Next</button>

Fix:


<!-- Button with descriptive label and ARIA -->
<button class="action-button" aria-label="Proceed to next step">
    Next
</button>
<!-- Or, if it's an icon button -->
<button class="icon-button" aria-label="Save changes">
    <i class="fas fa-save"></i>
</button>

For color-coded errors in forms:

Violation:


<input type="text" class="error-field" id="username">
<span class="error-message">Username is required.</span>

Fix:


<input type="text" class="error-field" id="username" aria-describedby="username-error">
<span id="username-error" class="error-message" role="alert">Username is required.</span>

The aria-describedby attribute links the input to its error message, and role="alert" informs screen readers that this is an important, time-sensitive message.

How SUSA Checks This Criterion

SUSA autonomously explores your application and is designed to identify violations of WCAG 1.3.3 through its persona-based testing and advanced analysis:

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