Core Guidance
Do This First
-
Set expectations up front. Tell users how long the survey will take, whether it has more than one page, and whether answers can be saved or changed.
-
Build accessible questions. Label every input, group related controls, identify required fields in text, and explain errors clearly.
-
Test completion paths. Try the survey with keyboard-only navigation, zoom, and a screen reader or another accessible form review before launch.
Essential Checks
Labels and Grouping
- Use clear labels for text inputs and legends for radio-button or checkbox groups.
- Keep answer choices in a logical reading order that matches the visual layout.
- Use autocomplete tokens for common personal information fields when appropriate.
Errors and Progress
- Explain required fields with text, not just color or an asterisk.
- Write field-specific error messages that tell users how to fix the problem.
- Show progress indicators on longer surveys and warn before any time limit expires.
Participation Options
- Write in plain language and keep questions short and direct.
- Provide a printable, phone, or staff-assisted option when the audience may need it.
- Keep the same question wording and answer choices across formats where possible.
Common Problems to Catch
- Using placeholder text as the only label for a field.
- Auto-advancing focus or changing pages unexpectedly when a user makes a selection.
- Showing errors only with a red outline and no text explanation.
- Publishing a long multi-page survey without time estimates or progress feedback.
Key WCAG 2.1 AA Checkpoints
| Success Criterion | What to confirm |
|---|---|
| SC 1.3.1 Info and Relationships | Labels, groups, and instructions must be connected to the fields they describe. |
| SC 1.3.5 Identify Input Purpose | Common personal information fields should use the right autocomplete tokens. |
| SC 2.1.1 Keyboard | All survey steps and controls need to work without a mouse. |
| SC 2.2.1 Timing Adjustable | Users need enough time or warnings before a session times out. |
| SC 3.3.1 Error Identification | Errors need text explanations that identify the affected field. |
| SC 3.3.2 Labels or Instructions | Every input needs a label or clear instruction. |