← All criteria
3.3.2Level AWCAG 2.0Auto-fix: Yes

Labels or Instructions

Form fields and inputs must have visible labels or instructions describing what the user is expected to enter.

What it requires

Every `<input>`, `<select>`, and `<textarea>` must have a programmatic label — either a `<label for="id">` element wrapping or referencing the input, or an `aria-label` / `aria-labelledby` attribute. Placeholder text alone does not count: it disappears as soon as the user types, and screen readers do not always announce it.

Visible labels are also required by 3.3.2 — placeholder-only forms (where the field name lives only inside the placeholder) fail. Floating labels are acceptable as long as the label remains visible above the field after the user begins typing.

Common Shopify failure

Newsletter signup at the bottom of a Shopify theme with `<input type="email" placeholder="Your email">` and no `<label>`. Search bars in mega-menus with placeholder-only labeling.

How to fix it

Add `<label for="newsletter-email" class="sr-only">Email</label>` (or visible if design allows) and reference it via the matching `id`. AccessComply's FormLabelAgent detects every unlabeled input and writes the label.

Primary source: W3C — WCAG 2.0 Understanding 3.3.2