File: screen-reader.md | Updated: 11/16/2025
Ink has basic support for screen readers.
To enable it, you can either pass the isScreenReaderEnabled option to the render function or set the INK_SCREEN_READER environment variable to true.
Ink implements a small subset of functionality from the ARIA specification.
render(<MyApp />, {isScreenReaderEnabled: true});
When screen reader support is enabled, Ink will try its best to generate a screen-reader-friendly output.
For this code:
<Box aria-role="checkbox" aria-state={{checked: true}}>
<Text>Accept terms and conditions</Text>
</Box>
Ink will generate the following output for screen readers:
(checked) checkbox: Accept terms and conditions
You can also provide a custom label for screen readers if you want to render something different for them.
For example, if you are building a progress bar, you can use aria-label to provide a more descriptive label for screen readers.
<Box>
<Box width="50%" height={1} backgroundColor="green" />
<Text aria-label="Progress: 50%">50%</Text>
</Box>
In the example above, the screen reader will read "Progress: 50%" instead of "50%".
Type: string
A label for the element for screen readers.
Type: boolean
Default: false
Hide the element from screen readers.
Type: string
The role of the element.
Supported values:
buttoncheckboxradioradiogrouplistlistitemmenumenuitemprogressbartabtablisttimertoolbartableType: object
The state of the element.
Supported values:
checked (boolean)disabled (boolean)expanded (boolean)selected (boolean)