Accessibility Critical severity

Form Labels

What are form labels and why do inputs need them?

By eiSEO Team Published June 15, 2025 Updated February 27, 2026
Covers WCAG 2.1 SC 1.3.1 Info and Relationships · Read the specification

What is form labels?

Form labels are HTML <label> elements that programmatically associate a text description with a form input (text field, checkbox, select, etc.) using the for attribute matched to the input's id. Without a label, screen readers announce a form field as just "edit text" or "checkbox" with no indication of what information the user should enter.

Form labels are HTML label elements that programmatically associate a text description with a form input using the for attribute matched to the input's id. Without a label, screen readers announce fields with no indication of what information the user should enter, making forms unusable for assistive technology users.

Why does form labels matter?

Unlabeled form fields are one of the most common and most severe accessibility barriers on the web. Screen reader users cannot fill out forms when they do not know what each field is asking for. Labels also increase the clickable area on mobile devices — tapping the label text focuses the associated input. Placeholder text alone is not a substitute because it disappears once the user starts typing.

Missing form input labels were detected on 45.9% of home pages, making it one of the most common WCAG failures on the web.
WebAIM Million
Properly associated labels increase the clickable area of form inputs by up to 50%, improving usability on mobile touch devices.
W3C Web Accessibility Initiative

How to fix it

  1. Add a <label> element for every form input and associate them using matching for and id attributes.
  2. Do not rely on placeholder text as a label replacement — placeholders disappear when the user begins typing and have poor contrast in most browsers.
  3. For visually hidden labels (when design constraints prevent visible labels), use a CSS visually-hidden class rather than display:none, which removes the label from assistive technology.
  4. Group related inputs (like radio buttons) in a <fieldset> with a <legend> that describes the group.
  5. Test with a screen reader (VoiceOver, NVDA, or JAWS) to confirm every field is announced with its label when focused.

Bad seed, good seed.

Bad
before
<input type="email" placeholder="Enter your email">
<!-- Screen reader announces: "edit text" with no context -->
Good
after
<label for="email">Email address</label>
<input type="email" id="email" placeholder="you@example.com">
<!-- Screen reader announces: "Email address, edit text" -->

Frequently asked questions

Can I use placeholder text instead of a label?

No. Placeholder text disappears when the user starts typing, has low contrast in most browsers, and is not reliably announced by all screen readers. Always provide a proper <label> element.

What if the design does not have space for a visible label?

Use a CSS visually-hidden class (position: absolute; width: 1px; height: 1px; overflow: hidden) on the label. The label remains accessible to screen readers while being invisible on screen.

Do I need labels for buttons?

Buttons get their accessible name from their text content or value attribute, so they do not need a separate <label>. However, icon-only buttons need an aria-label attribute to describe their purpose.

Scan your site for accessibility issues

Find and fix these issues automatically with eiSEO.

50 pages free · No credit card · Results in under 2 minutes