WCAG 3.3.1 Error Identification

WCAG 2.2 success criterion 3.3.1, Error Identification, is a Level A requirement: errors are identified in text.

Read the criterion in the W3C Recommendation, WCAG 2.2 (opens in a new tab).

How BearScan checks it

Errors are identified in text

Checked automatically: clicks through the page. Severity: high. A colour change alone is not an error identification, and it is one of the most common defects found in accessibility audits.

An approximation: Up to four forms per page are submitted empty and then with a wrong value in a browser that stops every write, and the page is read for what it shows. A field marked invalid with no message in text, from the page or from the browser's own validation, fails. A form whose only field is an email address is sent once, to its own site, with a value that is not an address. Forms with a password, a payment card or a file are never submitted. A form made only of selects and checkboxes with nothing required cannot be filled in wrongly and is not applicable. A form that is checked only by its server shows nothing before it is sent, so a page where no form showed an error is reported for review with each form's reason.

How to fix it. On validation failure, place a text message next to the field describing what is wrong, associate it with the field using aria-describedby, and move focus to the first invalid field.

All WCAG 2.2 criteria · Next: 3.3.2 Labels or Instructions

Questions

Is WCAG 3.3.1 required by the ADA?

The ADA doesn't name a technical standard for businesses, but the Justice Department's 2022 guidance points businesses to WCAG, and its 2024 rule for state and local governments adopted WCAG 2.1 Level AA, which includes 3.3.1.

Can an automated tool check WCAG 3.3.1?

Mostly. BearScan checks it automatically (clicks through the page). A clean result still isn't proof every page passes, only the pages scanned.

How do I fix a WCAG 3.3.1 failure?

On validation failure, place a text message next to the field describing what is wrong, associate it with the field using aria-describedby, and move focus to the first invalid field.