All checks
Accessibilitymediumform-input-missing-labelchecked on every page we scan

Form fields have no associated label

One or more form fields (input, select, or textarea) with an id have no matching <label>, and no aria-label, aria-labelledby, or title either.

Why it matters

One or more form fields (input, select, or textarea) with an id have no matching <label>, and no aria-label, aria-labelledby, or title either. A placeholder is not a label — it disappears on focus and is not reliably announced — so screen-reader users may not know what to enter. Give each field a <label for=…> that matches its id, or an aria-label. (The count and a sample id are in this finding's evidence.)

How ShipReady detects it

Per-page accessibility signals read straight from the fetched HTML — no extra requests. Page-scoped because images, forms and controls differ between routes (a marketing homepage vs a signup form), and the route carrying the form is the one worth seeing.

Detection is deterministic. ShipReady reports this only when it observes the condition directly, and prefers to miss a real problem over inventing one. Rule version 1.0.0.

How to fix it

This is the prompt ShipReady puts in your report — written to be pasted straight into Cursor, Claude Code, or whichever assistant built the app.

One or more form fields (input, select, or textarea) have an id but no matching <label>, and no aria-label, aria-labelledby, or title — a placeholder alone is not a label, because it vanishes on focus and is not reliably announced. For each field, add a <label for="fieldId"> whose for matches the field's id (visible labels are best), or an aria-label if a visible label is genuinely not possible. Check your form components once and add the labels at the source so every instance is covered.

Frequently asked questions

What does "Form fields have no associated label" mean?
One or more form fields (input, select, or textarea) with an id have no matching <label>, and no aria-label, aria-labelledby, or title either.
How serious is it?
ShipReady rates this medium. Fix soon. Meaningfully weakens a defence or degrades how the site works.
How do I fix it?
Paste the fix prompt on this page into Cursor, Claude Code or your AI editor. It is the same prompt ShipReady puts in your report.
Can I check my own site?
Yes — ShipReady scans up to ten pages of any public site for free and reports this alongside every other check. The free report lists every issue it finds and shows full evidence and a fix prompt for the critical and high-severity ones; medium and low findings are counted and unlock on Pro.

Related checks

Run this check on your site

ShipReady checks this and 193 other things across up to ten pages of your site, with an AI-ready fix for each. Free, no signup.