WordPress fix guide
Fix Missing form labels on WordPress
Placeholder text is not a substitute for labels.
This page ties the generic issue to how it usually shows up in WordPress markup and tooling, then walks you through a fix and verification loop.
Verify on a live URL
Scan, fix, deploy, then rescan the same address to compare reports.
Main issue guide: Missing form labels →
At a glance
Instructional
No associated label
Placeholder is not a replacement for a label.
Label linked to field
Screen readers announce the label; placeholders alone are fragile.
Where this comes from on WordPress
Usually the theme, a form plugin (Contact Form 7, Gravity Forms, WPForms), or block markup—placeholder-only patterns are common.
What this issue means
What this issue is
Every input needs an accessible name, usually via `<label for>` wrapping, or `aria-label` when design constraints require it.
Fixes
Prefer visible labels. If space is tight, use persistent labels or aria-labelledby pointing to visible text.
How to fix on WordPress
Contact Form 7 and Gravity Forms need correct field settings; avoid placeholder-only UX.
How to fix
Associate every input with a visible label, aria-labelledby, or aria-label when design constraints require it.
Surface errors next to fields and link them with aria-describedby.
Common mistakes on WordPress
- Relying on placeholder alone.
- Label `for` not matching input `id` after builder edits.
- Fixing only one page while the pattern lives in a shared template.
- Caching plugins serving old HTML after fixes.
How to verify the fix
- In wp-admin, open the page on the front-end; use keyboard only through the fixed region.
- If you use a builder, re-publish/clear cache so changes appear.
- Rerun the public scan on the same URL and compare the report link.
Related: 3.3.2 Labels or Instructions.
Same issue on other platforms
Related issues
Guides
Next steps
- Run a scan on staging or production.
- Re-read the main issue page for context and WCAG notes.
- WordPress accessibility hub for more platform resources.
TestAccessibility · WordPress fix · localhost:3001