</>
ValidateHTML

Missing Form Labels

Every form input (text fields, checkboxes, selects, textareas) needs an associated label element. Without a label, screen reader users don't know what information to enter in the field. Placeholder text is NOT a substitute for a label because it disappears when the user starts typing and is not announced by all screen readers.

Find this error in your own code. Paste your HTML or enter a URL, free and instant.Open the checker
43.0%
of sites tested

How common is this error?

We ran this validator over the home page of the Tranco top 5,000 websites in August 2026. 1,142 of the 2,655 sites we could reach hit it. That makes it the 2nd most common accessibility problem we found, across 5,020 occurrences. See the full study.

Most frequent wording: <input> element does not have a <label>

Why It Matters

Forms without labels are unusable for screen reader users, which is a WCAG 2.1 Level A violation. It also affects users with motor disabilities who rely on clicking the label to focus the input (larger click target). Bad form labeling leads to higher form abandonment rates for all users.

Common Causes

  • Relying on placeholder text as the only label, which disappears on focus and is not reliably announced.
  • Writing a <label> without a 'for' attribute that matches the input's 'id', so the two are never associated.
  • Styling a plain <div> or <span> as a label instead of using a real <label> element that assistive tech recognizes.

Code Examples

Inaccessible
<!-- No label at all -->
<input type="email" placeholder="Email address">

<!-- Label not associated with input -->
<label>Email</label>
<input type="email" id="email">
Accessible
<!-- Explicit label with for attribute -->
<label for="email">Email address</label>
<input type="email" id="email">

<!-- Implicit label (wrapping) -->
<label>
  Email address
  <input type="email">
</label>

How to Fix

  • 1Add a <label> element with a 'for' attribute matching the input's 'id' for every form field.
  • 2Alternatively, wrap the input inside the <label> element for implicit association.
  • 3Never rely on placeholder text as the only label. Placeholders disappear on focus.
  • 4For inputs where a visible label doesn't fit the design, use aria-label or visually-hidden text.

Frequently Asked Questions

Can I use placeholder text instead of a label?
No. Placeholders vanish as soon as the user types, are often too low contrast, and are not consistently announced by screen readers. WCAG requires a persistent label; a placeholder can supplement it but never replace it.
Does aria-label work as a substitute for a visible label?
It gives screen readers an accessible name, so it satisfies the programmatic requirement, but it provides nothing for sighted users. Prefer a visible <label>, and reserve aria-label for cases like icon-only or search inputs where a visible label does not fit.
How do I label a group of radio buttons or checkboxes?
Wrap them in a <fieldset> and describe the group with a <legend>, then give each individual input its own <label>. The legend provides the shared question and each label names the specific option.

Check Your Accessibility Now

Our accessibility checker detects this issue automatically.

Open Accessibility Checker

Related Accessibility Errors

View all accessibility errors