Form Label Checker
Inspect labels and accessible names of form controls.
What Does a Form Label Checker Look For?
A form label checker helps identify form fields whose purpose may not be clearly available to people using assistive technology. An accessible form control needs a meaningful programmatic name, commonly supplied through an associated HTML <label>. A useful review looks for missing or mismatched label relationships, unclear field names, and cases where placeholder text is mistaken for a permanent label. Correct labels make forms easier to understand, complete, and navigate.
Form Label Checker
Inspect labels and accessible names of form controls.
Finding and Fixing Form Labels That Users Can Understand
A form can look perfectly clear on a screen yet become confusing when somebody navigates by keyboard, screen reader, or voice commands. A heading that says “Contact information” does not automatically label the input below it. Likewise, a placeholder that disappears as a visitor types is not a dependable way to identify a field.
Use the Form Label Checker above with whichever input options are actually available in your installed tool. Its shortcode is recorded in the SEOToolCheckers inventory, but its live features have not been independently tested. This guide explains how to examine the resulting HTML, decide which warnings matter, and fix labeling patterns in WordPress and custom forms without treating an automated scan as a full accessibility audit.
Read Full GuideShow Less
Understand the Difference Between a Visible Label and an Accessible Name
A visible label tells a sighted visitor what a field is for. An accessible name identifies that same control to assistive technology. Ideally, they communicate the same purpose. A nearby word such as “Email” may look like a label, but unless its relationship is expressed in HTML, software may not associate it with the email field.
The native <label> element is usually the best solution for ordinary inputs, selects, and text areas. Its programmatic association improves screen reader output and makes the label itself an additional activation target for the related control. For example, selecting the text beside a checkbox can toggle the checkbox.
Use Matching for and id Attributes for Predictable Associations
The most straightforward pattern gives the control a unique id and gives its label a matching for value. Letter case matters for the ID match. The field’s name attribute, which is commonly used when submitting data, does not replace its id in this relationship.
<label for="customer-email">Email address</label>
<input id="customer-email" name="email"
type="email" autocomplete="email">
The following pattern looks similar but is not correctly connected, because the values differ:
<label for="contact-email">Email address</label>
<input id="customer-email" name="email" type="email">
Repair this by making for and id identical, then ensure no other element on the page uses that ID. An implicit association also works when an appropriate input is nested inside a <label>, but explicit associations are often easier to audit in complex templates.
Which Labeling Problems Deserve Immediate Attention?
| Finding | Likely issue | Better approach |
|---|---|---|
| Unlabeled text field | The control may have no meaningful accessible name. | Add an associated visible label. |
| Label points to the wrong ID | Visible wording is not programmatically connected to the intended field. | Match unique for and id values. |
| Only a placeholder | Instructions disappear after typing and may be poorly announced. | Use a persistent label and keep the placeholder as an example. |
| Generic label such as “Input” | A name exists but does not explain the requested information. | Use a specific purpose, such as “Delivery postcode.” |
| Radio choices without group context | Individual options may be named but the shared question is unclear. | Group them with fieldset and legend. |
Not every warning means the same thing. A search input can have a legitimate accessible name through an appropriate ARIA technique, while a visible label might be hidden by design. The right review checks the computed accessible name, visible text, and task context together.
Why Placeholder Text Cannot Carry the Labeling Job
A placeholder may offer a formatting hint such as “name@example.com,” but it disappears once the visitor starts typing. People who become distracted, use magnification, or return to a partly completed form can lose the reminder of what the field asks for. Some assistive technologies also present placeholders inconsistently. Avoid treating a floating placeholder animation as a proper label unless the label remains available and correctly connected throughout.
<label for="signup-email">Email address</label>
<input id="signup-email" type="email"
placeholder="name@example.com">
Here the label identifies the purpose, while the placeholder provides a sample format. Required status and input rules should be communicated through accessible instructions rather than left solely to color or a disappearing hint.
Group Checkboxes and Radio Buttons Under the Same Question
A series of radio options can each have a correct label but still fail to convey the question being answered. Use <fieldset> to create the group and <legend> to name it. This is particularly useful for delivery choices, payment methods, preferences, and survey answers.
<fieldset>
<legend>Preferred contact method</legend>
<input type="radio" id="contact-email" name="contact" value="email">
<label for="contact-email">Email</label>
<input type="radio" id="contact-phone" name="contact" value="phone">
<label for="contact-phone">Phone</label>
</fieldset>
Each option has its own label, while the legend supplies the common question. Avoid using an unrelated heading as the only group description. A heading can improve visual organization without automatically giving individual controls an accessible name or defining their group relationship.
When Are aria-label and aria-labelledby Appropriate?
Native HTML labels should remain the default for conventional fields. Sometimes a visible label is impractical, such as a compact search control with a well-understood icon. In those circumstances, aria-label can provide an accessible name; aria-labelledby can reference existing visible text by ID. Both methods require accurate implementation and testing.
Use ARIA with care when a visible label already exists. An aria-label can override the name derived from the visible label. For example, showing “Postcode” while assigning the accessible name “ZIP number” can create problems for people who speak the visible label to operate the interface. WCAG’s Label in Name criterion expects the visible text to be included in the accessible name. The ARIA Attribute Checker complements a form-label review when custom control names are involved.
Do not confuse aria-describedby with labeling. It attaches supplementary descriptions such as allowed formats, help text, or error messages; it does not normally become the control’s accessible name. A control still needs a clear name even when it has extensive descriptive instructions.
Keep Instructions, Required Status, and Errors Understandable
“Password” identifies a field, but it does not explain password rules. Give the field a visible label, then connect concise instructions when they are necessary. Mark required fields in text as well as code, and place validation feedback close to the affected control. Avoid relying exclusively on red outlines or a message at the very top of a long form.
<label for="new-password">New password (required)</label>
<p id="password-help">Use at least 12 characters.</p>
<input id="new-password" type="password" required
aria-describedby="password-help">
This example separates the accessible name from supporting instructions. When validation fails, error text should identify what went wrong and how to correct it. The method for associating an error depends on the design and technology, so verify actual screen reader behavior instead of assuming that adding one ARIA attribute solves every validation problem.
Review WordPress Forms at the Rendered Page Level
WordPress form builders, themes, and custom blocks may output different HTML from what an editor preview suggests. Labels might be visually hidden, generated automatically, or broken when repeated components reuse the same ID. Inspect the published form rather than only its editing screen.
- Locate every field: include text inputs, select menus, text areas, checkboxes, radios, search, and file-upload controls where applicable.
- Inspect HTML: confirm that the label’s
formatches a unique controlid, or that another supported naming method genuinely provides an accessible name. - Check field meaning: ask whether a reader can understand the requested information without relying on surrounding layout.
- Test interactions: click labels, use keyboard navigation, review mobile layout, and check whether instructions remain available after typing.
- Fix the source: adjust the form builder settings, block configuration, custom template, or plugin output responsible for the rendered markup.
- Retest: refresh the public page, including any modal or conditional fields, and confirm the accessible names after changes.
Dynamic forms require special care. A field added after a selection or loaded inside a popup may not appear in the first server response. A static inspection cannot guarantee that newly inserted controls have unique IDs or correct names. The Source vs Rendered HTML Comparison tool is a related way to investigate markup differences, subject to its own verified capabilities.
Separate Form-Label Problems From Other Accessibility Checks
A form with correctly named fields can still be hard to use. Small checkboxes create touch-target problems; pale label text may fail contrast requirements; poorly worded buttons can make submission outcomes unclear. Fix the name association first, then review the wider interaction. The Color Contrast Checker and Touch Target Size Checker cover adjacent concerns rather than replacing a form-label audit.
Personal-information fields can have an additional requirement to expose their purpose programmatically, often with appropriate autocomplete tokens. This is distinct from supplying a useful visible label. For instance, an email field can have the label “Email address” and use autocomplete="email" to help compatible browsers and assistive systems understand its input purpose.
What a Clean Automated Report Does Not Prove
An automated scan can identify many missing associations, but it may not determine whether “Name” means the applicant, an emergency contact, or the account holder. Nor can it reliably infer whether a hidden label is appropriate in the specific design. Some checkers analyze source HTML; others inspect a browser-rendered document. This distinction affects dynamic content and custom controls.
Finish with human review: tab through the form, listen to the control names with a screen reader when possible, and check error recovery. Successful WCAG conformance depends on more than finding one <label> per input. Good forms let people identify every control, understand each question, and complete the task without guessing.