axe-core rule: label

Form fields are missing labels

What it is

One or more form inputs have no associated label, so assistive technology cannot announce what information the field expects.

Who it blocks

Screen reader users hear only "edit text" with no hint of what to type. Voice-control users cannot target the field by name. This commonly blocks checkout, sign-up, and contact forms entirely.

How to fix it

Associate a visible label element with each input using matching for and id attributes. If a visible label is genuinely impossible, use aria-label. Placeholder text is not a substitute: it disappears on input and is not reliably announced.

Example fix

<!-- Before -->
<input type="email" placeholder="Email">

<!-- After: visible label (preferred) -->
<label for="email">Email address</label>
<input type="email" id="email" name="email" autocomplete="email">

<!-- After: aria-label when a visible label is impossible -->
<input type="search" aria-label="Search products" name="q">

This is one of the barrier types BarrierScan checks for on every scan. Request a free accessibility scan to see whether it appears on your site, alongside the rest of the automated findings.