WCAG 2.4.6 Headings and Labels — Testing Guide for Mobile & Web Apps

WCAG 2.4.6, "Headings and Labels," mandates that content is structured and identified in a way that makes it easy for users to understand the purpose of different sections and input fields. In simpler

May 31, 2026 · 6 min read · WCAG Guides

Ensuring Clear Navigation: A Practical Guide to WCAG 2.4.6 Headings and Labels

WCAG 2.4.6, "Headings and Labels," mandates that content is structured and identified in a way that makes it easy for users to understand the purpose of different sections and input fields. In simpler terms, headings should clearly indicate what follows, and labels should unambiguously describe the purpose of form controls. This criterion is essential for both programmatic understanding and human comprehension.

Why WCAG 2.4.6 Matters: Impact on Real Users

Clear headings and labels are fundamental to usability and accessibility.

Compliance with WCAG 2.4.6 is also a legal requirement in many jurisdictions, including adherence to the European Accessibility Act (EAA) and the Americans with Disabilities Act (ADA) in the United States.

Common Violations and Examples

Violations of WCAG 2.4.6 often stem from a lack of semantic structure or insufficient descriptive text.

#### Mobile App Examples (Android/iOS)

  1. Missing or Generic Headings:
  1. Ambiguous Button Labels:
  1. Unlabeled Input Fields:

#### Web App Examples

  1. Overuse of Paragraphs for Headings:
  1. Generic Search Button Labels:
  1. Form Controls Without Explicit Labels:

How to Test for WCAG 2.4.6 Compliance

Testing for this criterion involves a combination of manual inspection and automated tools.

#### Manual Testing Steps

  1. Inspect Headings:
  1. Examine Form Labels:
  1. Test with Assistive Technologies:

#### Automated Tools for Checking

#### Mobile-Specific Considerations

How to Fix Violations

#### Fixing Web Accessibility Issues


    <!-- Before: Using paragraphs for headings -->
    <p style="font-weight: bold; font-size: 1.5em;">Product Details</p>

    <!-- After: Using semantic headings -->
    <h2>Product Details</h2>

    <!-- Before: No explicit label -->
    <input type="email" id="userEmail">

    <!-- After: With explicit label -->
    <label for="userEmail">Email Address:</label>
    <input type="email" id="userEmail">

    <!-- Alternative using aria-label -->
    <input type="email" id="userEmail" aria-label="Email Address">

#### Fixing Mobile Accessibility Issues


    <!-- Before: Icon button without description -->
    <ImageButton
        android:id="@+id/settings_button"
        android:src="@drawable/ic_settings" />

    <!-- After: With contentDescription -->
    <ImageButton
        android:id="@+id/settings_button"
        android:src="@drawable/ic_settings"
        android:contentDescription="@string/settings_button_description" />

(Where @string/settings_button_description would be defined in res/values/strings.xml as "Settings")


    // Before: Button without accessibility label
    let myButton = UIButton(type: .system)
    myButton.setTitle("Save", for: .normal)

    // After: With accessibility label
    let myButton = UIButton(type: .system)
    myButton.setTitle("Save", for: .normal)
    myButton.accessibilityLabel = "Save changes"

How SUSA Checks for WCAG 2.4.6

SUSA autonomously explores your application, identifying and verifying headings and labels through its intelligent crawling and persona-based testing.

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