Blog

The 2025 TestParty Guide to WCAG 3.3.1 – Error Identification (Level A)

TestParty
TestParty
March 17, 2025

Why did the form error go to therapy? Because it had serious identification issues—and nobody could tell what was wrong!

When a user makes a mistake filling out a form, they need to know what went wrong and where. WCAG 3.3.1 Error Identification requires that if an input error is automatically detected, the error must be identified and described to the user in text. This Level A criterion ensures people using screen readers, keyboard navigation, or cognitive assistance tools can understand and fix their mistakes.

Table of Contents

  • What WCAG 3.3.1 Requires
  • Why This Matters
  • Quick Implementation Guide
  • Common Mistakes to Avoid
  • How to Test for WCAG 3.3.1
  • How TestParty Helps
  • FAQs

What WCAG 3.3.1 Requires

WCAG 3.3.1 mandates that when your system automatically detects an input error, you must:

  1. Identify which field has the error – Users need to know exactly where the problem is
  2. Describe the error in text – The description must be programmatically determinable and available to assistive technologies
  3. Make the error message accessible – Not just visual cues like red borders or icons

Key points:

  • Applies only to errors that are automatically detected (validation that happens without manual review)
  • The error description must be text-based – color, icons, or visual styling alone don't satisfy this requirement
  • Errors must be programmatically associated with the problematic field (via ARIA attributes, labels, or proximity)
  • This is about identification and description, not correction (that's covered by 3.3.3 Error Suggestion)

What's covered:

  • Required fields left empty
  • Invalid format (email, phone, date)
  • Out-of-range values (age must be 18+)
  • Pattern mismatches (password requirements)
  • Server-side validation errors returned after submission

Why This Matters

Screen reader users can't see a red border around a text field or a small red icon. If your form only uses visual indicators, blind users have no way to know what went wrong or where.

Legal and compliance context:

WCAG 3.3.1 is a Level A requirement, making it mandatory for ADA Title II and Title III compliance, Section 508 federal procurement, EN 301 549 (European public sector), and the European Accessibility Act. Courts have ruled against organizations whose forms failed to provide accessible error messages, particularly in e-commerce checkout and government services.

Business impact:

Inaccessible error handling directly causes cart abandonment. When users can't figure out what's wrong with their payment information or shipping address, they leave. Clear error identification improves conversion rates for everyone—not just users with disabilities.

Quick Implementation Guide

1. Use `aria-invalid` to mark fields with errors

When validation fails, set aria-invalid="true" on the input element:

<label for="email">Email Address</label>
<input 
  type="email" 
  id="email" 
  aria-invalid="true"
  aria-describedby="email-error"
>
<span id="email-error" class="error-message">
  Please enter a valid email address (example: name@domain.com)
</span>

2. Link error messages to fields with `aria-describedby`

This creates a programmatic association between the field and its error message. Screen readers will announce the error when the field receives focus.

3. Use ARIA live regions for dynamic errors

When errors appear after client-side validation without a page refresh:

<div role="alert" aria-live="assertive">
  3 errors found. Please review the form below.
</div>

4. Mark required fields before submission

Use aria-required="true" or the HTML5 required attribute to prevent errors before they happen:

<input type="text" id="name" required aria-required="true">

5. Provide a summary of errors at the top of the form

Include a list of errors with links that jump to the problematic fields. This helps keyboard users and people with cognitive disabilities.

Key techniques: ARIA2 (aria-required), ARIA21 (aria-invalid), ARIA19 (role=alert), G83 (text descriptions for required fields), G85 (format/value error descriptions), SCR32 (client-side validation with DOM updates).

Common Mistakes to Avoid

Visual-only error indicators

Red borders, asterisks, or icons without accompanying text fail this criterion. A screen reader user won't hear "this field has an error" from a CSS border change.

Generic error messages

"An error occurred" or "Invalid input" doesn't tell users what's wrong. Be specific: "Email address must include an @ symbol" or "Password must be at least 8 characters."

Error messages not programmatically associated

Placing error text near a field visually isn't enough. You must use aria-describedby, aria-errormessage, or include the error in the field's <label> so assistive technologies can connect them.

Errors announced too late or not at all

If you add error messages to the DOM without an ARIA live region or alert role, screen reader users may not know they exist. Use role="alert" for critical errors that appear dynamically.

How to Test for WCAG 3.3.1

Automated testing catches:

  • Missing aria-invalid on fields with visible error messages
  • Error messages not associated via aria-describedby or aria-errormessage
  • Missing aria-required on required fields
  • Forms without ARIA live regions for dynamic errors

Manual testing required:

  • Submit forms with intentional errors – Leave required fields blank, enter invalid formats, exceed character limits
  • Use a screen reader (NVDA, JAWS, VoiceOver) to navigate the form after triggering errors. Can you hear what's wrong and where?
  • Tab through error fields – Does the screen reader announce the error message when you focus the field?
  • Check error message quality – Is the description specific and helpful, or vague?
  • Test dynamic validation – Do errors that appear without a page refresh get announced immediately?

Quick checklist:

  • [ ] Every field with an error has aria-invalid="true"
  • [ ] Error messages are text-based and descriptive
  • [ ] Error messages are programmatically linked to fields
  • [ ] Dynamic errors use role="alert" or ARIA live regions
  • [ ] Required fields are marked with aria-required or required

How TestParty Helps

TestParty's automated scanning and AI-powered remediation help teams detect, fix, and prevent WCAG 3.3.1 violations at scale—before they reach production.

What TestParty detects:

TestParty's DOM and source code analysis identifies:

  • Form fields with visual error indicators (red borders, error icons) but no aria-invalid attribute
  • Error messages present in the DOM that aren't associated with their fields via aria-describedby or aria-errormessage
  • Required fields missing aria-required or the required attribute
  • Forms lacking ARIA live regions or alert roles for client-side validation errors
  • Generic or non-descriptive error messages that don't explain what's wrong
  • Error summaries that aren't keyboard-accessible or lack proper heading structure

TestParty scans across your entire site, including complex multi-step forms, checkout flows, account registration, and dynamic single-page applications where errors appear without page reloads.

How TestParty suggests fixes:

When TestParty finds an error identification issue, it generates specific, code-level remediation:

  • Auto-adds `aria-invalid="true"` to fields with detected error states
  • Suggests `aria-describedby` associations between fields and their error messages, including generating unique IDs when needed
  • Recommends ARIA live region markup for dynamic validation errors, with appropriate aria-live and role attributes
  • Flags vague error messages and provides guidance on making them descriptive (e.g., "Enter a valid email" → "Email must include @ and a domain, like name@example.com")
  • Generates error summary components with proper heading structure and skip links to error fields

All suggestions are reviewed by your developers or TestParty accessibility specialists before being committed to your codebase. This ensures fixes are contextually appropriate and don't introduce regressions.

Developer workflow integration:

TestParty integrates directly into your development lifecycle to catch error identification issues early:

  • CI/CD pipeline gates block pull requests that introduce forms with inaccessible error handling
  • IDE and PR annotations flag missing aria-invalid or aria-describedby attributes at the line level, with one-click fix suggestions
  • Pre-commit hooks warn developers when form validation code lacks accessible error announcements
  • Real-time feedback during local development helps teams learn accessible patterns as they build

This shift-left approach prevents WCAG 3.3.1 violations from ever reaching staging or production, reducing remediation costs and legal risk.

Ongoing monitoring:

Forms change frequently—new fields get added, validation logic evolves, and JavaScript frameworks can break ARIA associations during updates. TestParty continuously monitors your forms for:

  • Regression detection when previously accessible error handling breaks
  • New forms or fields introduced without proper error identification
  • Third-party form widgets (payment processors, CRMs) that don't meet WCAG 3.3.1
  • Changes to error message text that make descriptions less clear

Dashboards track error identification compliance over time, with audit-ready reports showing which forms meet WCAG 3.3.1 and which need attention. Alerts notify your team immediately when critical violations appear.

TestParty's combination of automated detection, AI-generated fixes, and continuous monitoring helps organizations maintain WCAG 3.3.1 compliance across thousands of forms—without manual audits for every release.

FAQs About WCAG 3.3.1

What is WCAG 3.3.1 in plain language?

If your website or app automatically detects that a user made a mistake in a form (like leaving a required field empty or entering an invalid email), you must tell them what went wrong and where—in text that assistive technologies can read. Visual cues alone (like red borders) aren't enough.

Is WCAG 3.3.1 required for ADA compliance?

Yes. WCAG 3.3.1 is a Level A criterion, which means it's part of the baseline for ADA Title II and Title III compliance. Courts have consistently ruled that inaccessible forms—including those with poor error identification—violate the ADA.

Does WCAG 3.3.1 apply to server-side validation errors?

Yes. If your server detects an error (like a duplicate username or invalid credit card) and returns an error message, that message must be accessible. The error must be identified in text and programmatically associated with the relevant field or presented in a way that assistive technologies can access.

Do I need to suggest how to fix the error under WCAG 3.3.1?

No. WCAG 3.3.1 only requires you to identify and describe the error. Providing suggestions on how to fix it is covered by WCAG 3.3.3 Error Suggestion (Level AA). However, combining identification with helpful suggestions is best practice and improves user experience.

Can I use `aria-errormessage` instead of `aria-describedby` for error identification?

Yes. aria-errormessage is specifically designed for error messages and is well-supported in modern browsers and assistive technologies. It works similarly to aria-describedby but is semantically clearer. Just ensure the error message element has role="alert" or is otherwise announced to screen readers.

What if my form uses real-time validation as the user types?

Real-time validation is great for usability, but you must ensure errors are announced accessibly. Use ARIA live regions (aria-live="polite" or role="status") for non-critical feedback, and role="alert" for critical errors. Avoid overwhelming users with announcements on every keystroke—consider debouncing or announcing only when the field loses focus.


Some TestParty features described in this article are currently under development. Visit TestParty.ai to learn more about our current capabilities and roadmap, or book a demo at TestParty.ai/book-a-demo to see TestParty in action.

Disclaimer: Some of this article was generated with Large Language Models (LLMs) and Artificial Intelligence (AI). There may be some errors and we advise you to consult with human professionals for detailed questions.

Stay informed

Accessibility insights delivered
straight to your inbox.

Contact Us

Automate the software work for accessibility compliance, end-to-end.

Empowering businesses with seamless digital accessibility solutions—simple, inclusive, effective.

Book a Demo