Skip to main content

3.3.2 Labels or Instructions: what it requires and how to test it

When content needs user input, provide labels or instructions, so people know what to enter and in what format.

Level A · Added in WCAG 2.0 · Last reviewed October 18, 2026

What 3.3.2 requires

Labels or instructions must be provided when content requires user input. Each field needs a label that says what it's for, plus any instructions people need: required fields, expected formats, constraints. This is a plain-language summary. The normative text, including every exception, is in the W3C Recommendation, with the W3C's explanation in Understanding 3.3.2 (opens in a new tab) [1][2].

Exceptions and scope:

  • None listed. The criterion is about providing labels and instructions. Whether they're programmatically associated is covered by 1.3.1 and 4.1.2.

Why it matters

A field that announces "edit, blank" gives a screen-reader user no idea what to type. A placeholder that vanishes on the first keystroke leaves everyone guessing halfway through. Missing form input labels were detected on 51% of the top million home pages in WebAIM's 2026 analysis [4], and that's only the part a scanner can see before anyone types anything.

Common failures

Placeholder as the only label

It disappears on typing and is often low contrast.

<!-- Fails -->
<input placeholder="Email">

<!-- Better -->
<label for="em">Email</label> <input id="em" type="email">

No visible label at all

Fields in a row with no text identifying them, such as card number / expiry / CVC.

<!-- Fails -->
<input> <input> <input>

<!-- Better -->
<label for="cc">Card number</label><input id="cc"> …

Required or format rules not stated

An asterisk with no explanation, or a date format only revealed by an error.

<!-- Fails -->
<label>Date *</label>

<!-- Better -->
<label>Date of birth (required) <span>DD/MM/YYYY</span></label>

Multiple labels on one field

Two <label> elements for one input produce inconsistent announcements.

<!-- Fails -->
<label for="q">Search</label> <label for="q">Go</label>

<!-- Better -->
one label; extra text via aria-describedby

Can automated testing check 3.3.2?

Partly. Missing names are detectable. Whether labels and instructions are sufficient is not.

axe-core 4.13.0 ruleWhat it checks
form-field-multiple-labelsa field doesn't have multiple label elements (mapped to 3.3.2)
label, select-name, aria-input-field-namefields have accessible names (axe-core maps these to 4.1.2, and they catch the most common 3.3.2 failure too)

What automation can't decide: Whether a label is clear, whether required fields and formats are communicated, and whether instructions are available before an error rather than only after it.

A clean automated result is never proof that 3.3.2 is met. See why sites pass axe-core but fail real screen reader users.

How to test it by hand

  1. Look at each form without filling it in. Does every field have a visible label? Are required fields and formats stated up front?
  2. Tab through with a screen reader. Each field should announce its label and any instructions.
  3. Type into fields with placeholders. Does the guidance disappear?
  4. Check groups (radios, checkboxes, date parts) have a group label.

New to screen readers? Start with how to test a website with a screen reader and how to test keyboard-only navigation.

How Accessible helps (and where it stops)

Scanning finds fields with no accessible name on every URL on a paid plan. Journeys fill in the form the way the task requires, and the example run on our journey page shows a search field with only a placeholder reported as serious (3.3.2), and payment fields announcing "edit, blank" filed against 4.1.2 and 3.3.2. The assistant tools form-fields check lists every field's announced name and flags placeholder-only labels, required fields not exposed to assistive technology, and options with no group label.

Where it stops: Whether instructions are clear enough for your audience is a content decision. Accessible shows what's announced and where it broke the task. No automated tool, ours included, can certify that a criterion is met.

Sources

  1. Understanding Success Criterion 3.3.2: Labels or Instructions (opens in a new tab). W3C Web Accessibility Initiative. Accessed October 18, 2026.
  2. Web Content Accessibility Guidelines (WCAG) 2.2, Success Criterion 3.3.2 (opens in a new tab). W3C Recommendation. Accessed October 18, 2026.
  3. axe-core rule descriptions (opens in a new tab). Deque Systems, axe-core 4.13.0. Accessed October 18, 2026.
  4. The WebAIM Million: The 2026 report on the accessibility of the top 1,000,000 home pages (opens in a new tab). WebAIM, 2026. WAVE-detected errors on home pages only. Accessed October 18, 2026.

Meeting a success criterion is not the same as legal compliance, which depends on the rules that apply to you. No automated tool can certify conformance.

Frequently asked questions

Is a placeholder an acceptable label?

No. Use a visible, associated <label>. A placeholder can add an example, but it disappears on typing and isn't a reliable accessible name.

Do I need to mark required fields?

If a field is required, people need to know before they submit. Say "required" in the label (or explain the asterisk), and expose it with required or aria-required.

Does a hidden label pass 3.3.2?

A visually hidden label gives screen-reader users a name, but 3.3.2 is about labels and instructions everyone can use. Prefer visible labels. axe-core's label-title-only best-practice rule flags fields labelled only by hidden mechanisms.

Hear what your form fields announce.

Check a page free, then run a journey through the form that matters most.