Duplicate Accessibility Label
Interactive iOS elements within the same screen must have unique accessibility labels to avoid confusion when multiple controls sound identical to VoiceOver.
WCAG Reference
Maps to: WCAG 4.1.2 Name, Role, Value | Applies to: WCAG 2.0, WCAG 2.1, WCAG 2.2 Introduced in: WCAG 2.0 | Level: A | Read the official specification →
What this rule checks
The scanner identifies multiple interactive elements on the same screen that share the same accessibility label, making them indistinguishable to VoiceOver users.
Why it matters
When VoiceOver announces two buttons as "Edit" without any additional context, users cannot tell which one to activate. Unique labels enable users to confidently choose the correct control.
Common failure patterns
- list cells each containing an "Edit" button or "Delete" button with identical labels
- multiple "Close" buttons in a screen with several dismissible panels
- icon buttons that all share a generic label like "Action" or "More"
- navigation items on different sections of a tabbed interface with the same label
Remediation guidance
- include context in the label: "Edit shipping address" vs. "Edit billing address"
- for list items, append identifying information: "Delete order #1234"
- use
accessibilityLabelwith specific context rather than generic action words - in SwiftUI, use
.accessibilityLabel("specific description")to override default labels - test by having VoiceOver list all actions on the screen and confirming each is distinguishable
