Will It Vibe logoWill It Vibe?
A11Y-003Medium severity-8 points

Input element with no accessible name

Part of Documentation, UX & Accessibility, which counts for 15% of the overall score. When this check fires it deducts 8 points from that category, once per scan, no matter how many places it turns up.

What it detects

An <input> with no associated label, aria-label, or aria-labelledby announces no name to assistive technology. This is a precise, per-element complement to the existing file-level form-label check: that check only confirms a label exists somewhere in the file, so a file with nine unlabeled inputs and one well-labeled one passes it silently. This rule pairs each input to its own label by for/id, catching what the coarser check misses. Heuristic: an input nested directly inside a still-open <label> is detected through a bounded lookback window; hidden/submit/button/reset/image inputs are excluded since they are not read as text fields.

Why it matters

An unlabeled input is the single most common accessibility failure in real forms: a screen-reader user tabs into a field and hears nothing about what to type. The existing file-level check in this scanner only confirms a label exists somewhere in the file, so a form with nine unlabeled fields and one correctly labeled one can pass that check while still failing eight fields silently. This rule pairs each individual input to its own label so those silent failures surface.

How to fix it

Give every non-hidden, non-button input a real accessible name: a visible <label for="field-id"> (htmlFor in JSX) tied to a matching id on the input, or aria-label for the rare case where a visible label does not fit (an icon-only search box, for example). Do not treat placeholder text as a label; it vanishes once the user starts typing and many screen readers do not announce it as the field name.

The paid report includes a ready-to-paste prompt for your AI coding agent for every check it finds, pointed at the exact findings from your scan. See pricing

Does your repo trip this check?

Paste a GitHub URL or drop a project folder. Scans run in your browser and take seconds.

Scan your repo

Related Documentation, UX & Accessibility checks