About this tool
Inspect pasted HTML locally for common form-control naming, label association, group legend, duplicate ID, and reference issues without executing the source.
The Form Label Auditor reads pasted HTML as inert text — script, style and template blocks are stripped and nothing is executed — and works out, for every form control in it, where its accessible name would come from. It follows the usual precedence of aria-labelledby, then aria-label, then an associated or wrapping label, then native text or value, then title, and flags controls that end up with nothing, plus broken aria-labelledby and aria-describedby references, duplicate IDs, labels pointing at controls that do not exist, radio and checkbox groups in a fieldset with no legend, and visible label text missing from the computed name. Findings are cues for you to check, not a conformance result.
Open Form Label Auditor on AltFTool — it loads instantly in your browser.
Paste markup into the HTML source box, or press Open file for an HTML or TXT file up to 500 KB; Load safe example fills a sample form.
Press Audit form labels to resolve every control's name through aria-labelledby, then aria-label, then a label, then native text or value, then title.
Read the Control inventory and Cue summary counts, then press Download counts-only summary for form-label-audit-summary.json.
Each control reports which mechanism supplies its name — aria-labelledby, aria-label, label, native value or title — so you can see when a name is coming from somewhere fragile.
Missing names, broken labelledby references and duplicate IDs are errors; multiple labels, missing legends and label-in-name mismatches are review cues you judge in context.
The HTML is tokenised as text and script, style and template contents are removed first, so pasting production markup runs none of it.
No. A control whose only text is a placeholder is flagged as an error, because the placeholder disappears the moment the user types and is not a reliable accessible name. Pair every input with a real label element or an aria-label.
aria-labelledby first, then aria-label, then a label associated by for or wrapping the control, then native text or value — button text, the alt of an image input, the value of a button, submit or reset input — and finally title. If none of those produce text, the control is reported as unnamed.
It fires when a control has visible label text that does not appear inside its computed accessible name — the mismatch behind WCAG Success Criterion 2.5.3 Label in Name, which breaks voice-control users who say what they can see. Comparison ignores case, punctuation and spacing.
No. A clean result does not establish WCAG conformance. The name computation here is a bounded heuristic rather than a full implementation of the browser's accessible name algorithm, and it cannot see CSS, visual proximity, dynamic DOM, shadow DOM or what assistive technology actually announces — test with a screen reader and, for anything you must certify, an accessibility specialist. Input is capped at 500,000 characters and 12,000 nodes, and truncation is reported.