Unlabelled form fields are the single most common accessibility defect on the web. A sighted user infers a field’s purpose from nearby text; a screen-reader user hears only “edit text, blank” and has no idea what to type. This checker parses your form markup and flags every input, select and textarea that lacks a programmatically-associated accessible name — directly addressing WCAG 1.3.1 and 4.1.2.
How it works
The tool parses your pasted HTML with the browser’s native parser, then for each form control it looks for an accessible name from any of the valid sources, in the order assistive technology uses them:
- A
<label>associated byfor/id, or a<label>wrapping the control, that contains text. - An
aria-labelattribute with text. - An
aria-labelledbyattribute pointing at one or more existing elements that contain text. - A
titleattribute with text.
If none of these is present, the control is flagged. A placeholder alone is treated as a failure, because placeholders are not accessible names — the tool explicitly calls that case out so you do not mistake a placeholder for a label. Controls that intrinsically need no label (hidden, submit, reset, button) are handled separately, and image inputs are checked for alt text.
Example
<!-- PASS: label associated by for/id -->
<label for="email">Email</label>
<input id="email" type="email">
<!-- FAIL: placeholder is not a label -->
<input type="text" placeholder="Search">
<!-- PASS: wrapping label -->
<label>Country <select name="country">...</select></label>
Tips
- Prefer a visible
<label>withfor/idoveraria-label. Visible labels help everyone, including users with cognitive and motor disabilities, not just screen-reader users. - Group related radios and checkboxes in a
<fieldset>with a<legend>so the question (the group label) is announced alongside each option. - Re-run the checker after any form refactor — moving markup around is the easiest way to silently break a
for/idassociation. - All parsing happens locally in your browser; nothing leaves your device.