Introduction to the Accessibility module
Learn about Unity's Accessibility module, its purpose, capabilities, and platform support.
Read time 4 minutesLast updated 12 days ago
Accessibility means designing experiences that people with disabilities can use. This includes people who rely on assistive technologies such as screen readers, as well as those who use system settings such as large text or closed captions. For background on disability categories, assistive technologies, and why accessibility matters, refer to Accessibility concepts.
The Unity Accessibility module enables games and applications to communicate with native screen readers and respond to the system accessibility settings on the user's device. This module helps you transform visual interfaces into experiences that everyone can use.
The Accessibility module is enabled by default. If it is not enabled in your project, you can enable it through the Package Manager.
Native screen reader support
The major mobile and desktop operating systems have built-in screen readers.
The following table lists the platforms and screen readers that the Accessibility module supports:
You create accessibility metadata that screen readers understand, and the module handles the platform-specific translation automatically.
Core capabilities
The Accessibility module enables you to:
- Create navigable interfaces for screen reader users
- Provide text alternatives for visual content
- Define semantic roles, such as button, slider, heading, and image
- Expose interactive states, such as disabled, selected, and expanded
- Notify screen readers of dynamic content changes
- Handle screen reader notifications of user actions
- Work alongside any UI system, including Unity UI and custom UI frameworks
- Add screen reader support to any game objects in a 2D or 3D world
Limitations
The Accessibility module has the following limitations:
- It supports only the screen readers listed above. It does not cover other screen readers or assistive technologies.
- It does not derive the accessibility hierarchy from your scene or UI automatically. You must create and update the accessibility hierarchy to match what elements you want to expose to screen readers.
- It has no awareness of the scene or UI hierarchy. You must synchronize accessibility data with the visual elements in your own code.
- Due to differences among the platform-native APIs, certain Accessibility module APIs have platform-specific limitations. These are described in the Accessibility module API documentation.
Technical overview
Use the API to enable screen reader support for your application. This class stores the accessibility hierarchy that you create, allows your application to notify the screen reader of changes in your UI, and notifies your application of events based on user actions.
AssistiveSupportThe Accessibility module uses a node-based separate from the hierarchy. You create instances that represent visual elements in your UI and game world. Each node has properties that define its label, value, role, state, and relationships to other nodes.
AccessibilityHierarchyGameObjectAccessibilityNodeYour active Unity scene (visual) AssistiveSupport (semantic)└── Canvas (uGUI) / UI Document (UI Toolkit) └── AccessibilityHierarchy └── Button └── AccessibilityNode └── Text: "Start Game" ├── Label: "Start Game" └── Role: Button
You can use the Accessibility Hierarchy Viewer (menu: Window > Accessibility > Accessibility Hierarchy Viewer) during Play mode to view your active accessibility hierarchy in real-time.
Platform translation
When you set a node's role, the Accessibility module translates it to the corresponding native API:
Platform | Native API | Native node representation |
|---|---|---|
| Android | android.view.accessibility | |
| iOS | UIAccessibility | |
| Windows | UI Automation | |
| macOS | NSAccessibility | |
Event flow
The following diagram illustrates the flow of events between a screen reader user, the operating system, Unity's Accessibility module, and your application when a user interacts with an accessible button in your UI:
The user activates the button with the screen reader → The operating system sends the activation event to Unity → Unity translates the event to AccessibilityNode.invoked → Your event handler invokes the click event on the button → The button responds normally
Supported UI elements
The Accessibility module supports many common UI elements, including the following elements with their expected properties and events:
System accessibility settings
Use the API to retrieve and listen to updates in the native font scaling, bold text, and closed captions settings on the user's device, and adjust your UI and game experience accordingly. This improves usability for people with low vision, hearing impairments, and cognitive disabilities, as well as users in noisy or silent environments or those whose first language differs from the language of your game or application.
AccessibilitySettingsThe accessibility settings APIs are available for Android and iOS.
Additional resources
- 📚 Documentation:Accessibility module API reference
- 👥 Community:Mobile screen reader support in Unity
- 👥 Community:Desktop screen reader support in Unity
- 📺 Video:Reach new audiences with Accessibility and Localization in Unity 6 (Unite 2025)
- ⚙️ Sample project:LetterSpell: example of an accessible Unity application
- 👥 Community:Unity Discussions: Accessibility