---
title: "Form field has no label (a11y/label)"
description: "a11y/label: Without a programmatic label, assistive tech cannot say what to type and clicking the label won't focus the field."
canonical: https://void-design.vercel.app/rules/a11y/label
lastModified: 2026-09-16
---

# Form field has no label

`a11y/label` · severity **error** · category Accessibility · detected by `void a11y` and `void audit`

## Why it matters

Without a programmatic label, assistive tech cannot say what to type and clicking the label won't focus the field.

## How to fix it

Associate a <label for> with the input, or wrap the input in the label. Placeholder is not a label.

## Example

```
<label for="email">Email</label><input id="email" type="email" autocomplete="email">
```

## References

- https://dequeuniversity.com/rules/axe/4.13/label

## More accessibility rules

`void a11y` reports 48 rules in this category. WCAG 2.2 AA through axe-core, plus checks axe can't do alone: visible keyboard focus, 24/44px target size on mobile, 320px reflow and disabled zoom.

- `color-contrast` Text has insufficient color contrast — [a11y/color-contrast](https://void-design.vercel.app/rules/a11y/color-contrast)
- `image-alt` Image has no text alternative — [a11y/image-alt](https://void-design.vercel.app/rules/a11y/image-alt)
- `button-name` Button has no accessible name — [a11y/button-name](https://void-design.vercel.app/rules/a11y/button-name)
- `link-name` Link has no accessible name — [a11y/link-name](https://void-design.vercel.app/rules/a11y/link-name)
- `select-name` Select element has no accessible name — [a11y/select-name](https://void-design.vercel.app/rules/a11y/select-name)
- `input-button-name` Input button has no accessible name — [a11y/input-button-name](https://void-design.vercel.app/rules/a11y/input-button-name)
- `input-image-alt` Image button has no alt text — [a11y/input-image-alt](https://void-design.vercel.app/rules/a11y/input-image-alt)
- `html-has-lang` <html> has no lang attribute — [a11y/html-has-lang](https://void-design.vercel.app/rules/a11y/html-has-lang)

Detected by `void a11y` and `void audit`. Explain it in a terminal: `void rules a11y/label`
