Skip to main content
All guides
Critical 1.3.1 Info and Relationships / 4.1.2 Name, Role, Value · Level A

Label every form field (WCAG 1.3.1 / 4.1.2)

Every input, select, and textarea needs a programmatically associated label.

Why it matters

Without a real label, screen-reader users don't know what to type, and clicking the label text won't focus the field. A placeholder is not a label — it disappears on input.

How to fix it

Associate a <label> via for/id, wrap the input in a label, or use aria-label / aria-labelledby when a visible label isn't possible.

<!-- Fails: placeholder only -->
<input type="email" placeholder="Email">

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

Does your site have this issue?

Run a free scan to find out in seconds.

Related guides

These guides cover automated checks (~30–40% of WCAG criteria). A full audit also needs manual review.