Given that I am on a page with
a
carousel / slideshow
1 Keyboard for mobile & desktop
WHEN I use the tab key to move focus to carousel controls (forward, backward, pause/play, stop)
I SEE focus is strongly visually indicated
Then when I use the spacebar or enter key
I SEE the intended action occurs
Then when I use the arrow keys
I SEE the slides advance or reverse
2 Desktop screenreader
WHEN I use a desktop screenreader (NVDA, JAWS, VoiceOver)
AND
I use the tab key to move focus to carousel controls (forward, backward, pause/play, stop)
I HEARControl name and purpose is clear
I HEARControl identifies itself as a button
I HEARThe number of slides and current position in the carousel is indicated
Then when I use the spacebar or enter key
I HEARthe intended action occurs
Then when I use the arrow keys
I HEARthe slides advance or reverse
3 Mobile screenreader
WHEN I use a mobile screenreader (Talkback, VoiceOver)
AND
I swipe to move focus to carousel controls (forward, backward, pause/play, stop)
I HEARControl name and purpose is clear
I HEARControl identifies itself as a button
I HEARThe number of slides and current position in the carousel is indicated
Then when I doubletap
I HEARthe intended action occurs
4 Device settings
When I use Reduced motionI SEECarousel does not auto-advance, motion transitions are disabled
1 Keyboard & screen reader actions
When I use
I see/hear
Tab
Focus moves to carousel controls (forward, backward, pause/play, stop)
Arrow-keys
Advance or reverse the slides
Spacebar
Activates the button
Enter
Activates the button
2 Mobile screenreader gestures
When I use
I hear
Swipe
Focus moves within the carousel
Doubletap
This typically activates most elements
3 Screenreader output for all devices
Reads
I hear
Name
Control name and purpose is clear
Role
Control identifies itself as a button
Group
The number of slides and current position in the carousel is indicated
4 Device settings
When I use
I see
Reduced motion
Carousel does not auto-advance, motion transitions are disabled
UX design notes
Think carefully before you use a carousel or slideshow wizard. Consider another way to present the information.
Carousels are almost always a poor design choice
As a general rule, carousels should be avoided for critical functionality unless there is a strong business case.
People must be highly motivated to engage with a carousel beyond the first slide.
The cognitive load is immediately increased over other patterns aas the user must determine how to use the carousel:
Is it easier to use previous/next buttons?
Is it possible to swipe left/right?
How many slides are present?
Are there any good use cases for a carousel?
Carousels are worth testing against a normal scrolling format when people can generally predict what’s in the carousel.
A multi-step form
This can work because it helps people stay on task.
A list of easily recognizable structure, like “US Presidents”
This can work because the scope and contents are predictable.
Highlighted customer reviews
This can work to build trust because the contents are predictable and a motivated user seeking social proof may be willing to navigate the carousel.
Avoid auto-advance carousels
This is distracting for people with attention differences
Live carousel updates are noisy for the screen reader
Code examples
Use semantic HTML
This is one example of an accessible carousel wizard.
It is not the only way to build a carousel, but it meets all the criteria:
The group has a name
New slides titles are announced
Arrow keys advance the slides
NATO alphabet gallery
Alpha/Alfa
1 of 7
Pronounced al fah
Bravo
2 of 7
Pronounced brah voh
Charlie
3 of 7
Pronounced char lee
Delta
4 of 7
Pronounced dell tah dell tah dell tah. Can I help yah help yah help yah?