---
title: "Form field without a label (a11y/form-label)"
description: "Screen readers announce an unnamed input, select or textarea (Lighthouse: form elements do not have associated labels)."
url: http://localhost:4173/rules/a11y/form-label
updated: 2026-11-11
---

# Form field without a label

> `a11y/form-label` is a vetd rule. It flags: Form field without a label. It runs on every `check`, together with the TypeScript check.

| Fact | Value |
| --- | --- |
| Rule id | `a11y/form-label` |
| Severity | error |
| Group | Accessibility |
| Tags | accessibility, lighthouse |

## Why it matters

Screen readers announce an unnamed input, select or textarea (Lighthouse: form elements do not have associated labels).

## How to fix it

Wrap it in <label>, pair an id with <label htmlFor>, or add aria-label.

## Credit

Based on work by:

- [Deque](https://www.deque.com): The axe rule label requires every form element to have a label.
- [W3C Web Accessibility Initiative](https://www.w3.org/WAI/): WCAG 3.3.2 requires labels or instructions for user input.

## References

- [Form elements must have labels](https://dequeuniversity.com/rules/axe/4.10/label), Deque University
- [Understanding Success Criterion 3.3.2: Labels or Instructions](https://www.w3.org/WAI/WCAG22/Understanding/labels-or-instructions.html), W3C
- [Labeling Controls](https://www.w3.org/WAI/tutorials/forms/labels/), W3C
- [<label> HTML label element](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/label), MDN Web Docs

## See it

Demos in the vetd Lab:

- [Name every control](http://localhost:4173/lab/web-guidelines/accessible-names)

## Related rules

- [`ui/input-type`](http://localhost:4173/rules/ui/input-type.md)
- [`a11y/button-name`](http://localhost:4173/rules/a11y/button-name.md)

## Get this text from vetd

MCP: call `explain` with `{ "diagnosticId": "a11y/form-label" }`. CLI: `npx vetd explain a11y/form-label`.

---

[All 92 rules](http://localhost:4173/rules.md) · Previous: [`a11y/button-name`](http://localhost:4173/rules/a11y/button-name.md) · Next: [`a11y/tabindex-positive`](http://localhost:4173/rules/a11y/tabindex-positive.md)
