---
url: /components/carousel/accessibility.md
description: >-
  Carousels show a collection of items that can be scrolled on and off the
  screen. Contain visual items like images or video, along with optional label
  text.
---

# Carousel

Carousels show a collection of items that can be scrolled on and off the screen. Contain visual items like images or video, along with optional label text.

[Overview](overview.md) · [Specs](specs.md) · [Guidelines](guidelines.md) · **Accessibility**

## Use cases

Users should be able to do the following with assistive technology:

* Navigate to the carousel container
* Navigate between different carousel items
* Activate a carousel item
* Skip over the carousel items

## Requirements on scrolling pages

On vertically-scrolling pages, carousels require an accessible way to view all the items without horizontally scrolling. (This requirement doesn't apply to full-screen carousels.)

Material recommends adding a **Show all** button below the carousel, which opens a dedicated vertically-scrolling page of all carousel items.

<video controls src="https://firebasestorage.googleapis.com/v0/b/design-spec/o/projects%2Fgoogle-material-3%2Fimages%2Flwutxg2r-GM3-Components-Carousel-Accesibility-1-v01.mp4?alt=media" aria-label="Carousel on mobile has a &quot;show all&quot; button that opens a page with all carousel items."></video>

Carousels without headers should use a **Show all&#x20;**&#x62;utton to view all carousel items

![Measurements of a "show all" button added below a carousel.](/assets/100e96a0-lwut0q8v-2.CZKLR88o.webp)

The **Show all** button should have a padding of 4dp

If the carousel has a header, you can use an arrow icon button instead. Place the arrow icon directly next to the header or in the same row.

Make sure the header is also displayed on the page of all carousel items.

<video controls src="https://firebasestorage.googleapis.com/v0/b/design-spec/o/projects%2Fgoogle-material-3%2Fimages%2Flwutykt0-GM3-Components-Carousel-Accesibility-2-v01.mp4?alt=media" aria-label="Carousels in a list on mobile with headers have an arrow icon that opens a page with all carousel items."></video>

Carousels with headers should use an arrow to view all carousel items

![Measurements of an arrow icon button added next to a carousel header.](/assets/45b8c955-lwut172a-4.3DT7gG2G.webp)

Headers should align with the leading edge, and the arrow icon should have a size of 48dp

Avoid customizing the accessibility solution when possible. However, if your product needs an alternative solution, consider adding a **Show all** button in nearby navigation, or add alternative control buttons close to the carousel.

Avoid adding UI elements, like arrows or other icons, within or beside the carousel.

::: danger Don't
![Arrow icons on the left and right of the carousel, reducing container width.](/assets/b9c84586-lwykx1vc-5a-don-t.mXqec9gr.webp)

Avoid adding buttons into the carousel container or beside it. Place any buttons above or below the carousel.
:::

::: danger Don't
![Arrow icons floating on top of the carousel edge, concealing items.](/assets/63cb080a-lwykxhsn-5b-don-t.DESy5rcX.webp)

Don't cover the carousel with buttons or other UI
:::

## Interaction & style

### Touch

Tapping on a carousel item changes the shape slightly, and creates a touch ripple for interaction feedback.

<video controls src="https://firebasestorage.googleapis.com/v0/b/design-spec/o/projects%2Fgoogle-material-3%2Fimages%2Flwuu2jae-GM3-Components-Carousel-Accesibility-3-v01.mp4?alt=media" aria-label="Carousel providing a ripple feedback when being tapped."></video>

Touch: Tap

### Cursor

The [hover state](../../foundations/interaction/states/applying-states.md#71c347c2-dd75-485b-892e-04d2900bd844 "A hover state communicates when a user has placed a cursor above an interactive element.") provides a visual cue that the carousel item is interactive.

When the carousel item is clicked (in both active and inactive states), a ripple appears for interaction feedback.

<video controls src="https://firebasestorage.googleapis.com/v0/b/design-spec/o/projects%2Fgoogle-material-3%2Fimages%2Flwuu32xk-GM3-Components-Carousel-Accesibility-4-v02.mp4?alt=media" aria-label="Carousel changing state when hovered."></video>

Cursor: Hover, click

### Initial focus

When navigating to a carousel using assistive technology, use **Tab** to place initial focus on the first carousel item. Then, use **Tab** or the arrow keys to navigate the carousel items.

Use the up and down arrow keys to leave the carousel and focus on the next element on the page, like the **Show all** button.

::: tip Do
![Diagram of how to navigate a carousel using assistive technology.](/assets/599d3267-lwut9phs-8.GzQhp87x.webp)

Set initial focus on the first carousel item, and use arrows to navigate items
:::

::: danger Don't
![Diagram of how not to navigate a carousel using assistive technology.](/assets/f465ed55-lwuta5uo-9.C6824-Wc.webp)

Avoid focusing on the carousel container
:::

## Keyboard navigation

| Keys                            | Actions                                                                                                                                                                                                                                                       |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Tab&#xA0;**&#x6F;r **Arrows** | Moves to the previous or next carousel item                                                                                                                                                                                                                   |
| **Space** or **Enter**          | Activates the [focused](../../foundations/interaction/states/applying-states.md#bc6d6853-48ef-490e-8076-448e89e69f0f "A focused state communicates when a user has highlighted an element, using an input method such as a keyboard or voice.") carousel item |

## Labeling elements

The carousel container has the **container** role.

![Accessibility labels of a carousel.](/assets/61cd0d6b-lwutav24-10.BRdaFOA8.webp)

The carousel container is labelled appropriately and has the **container** role

Each carousel may have a different number of items, so the label reads out the total amount of items and the current item in focus.

![Accessibility labels of a carousel item.](/assets/2171cfce-lwutbdy7-11.CCOKXgPO.webp)

The carousel item label indicates the current item in focus and the total number of items

## Reduced motion

When reduced motion settings are turned on, the parallax effect should be removed and carousel items should no longer expand as they come into view. All items are the same size.

Make sure carousels with reduced motion reach the edges of the window to avoid clipping visuals.

<video controls src="https://firebasestorage.googleapis.com/v0/b/design-spec/o/projects%2Fgoogle-material-3%2Fimages%2Flwuu4mjv-GM3-Components-Carousel-Accesibility-5-v01.mp4?alt=media" aria-label="Comparison of a multi-browse carousel with the reduced motion setting off and on."></video>

1. Default carousel for multi-scroll
2. Carousel with reduced motion settings turned on

For hero carousels with reduced motion, the small carousel item is only partially shown on screen.

<video controls src="https://firebasestorage.googleapis.com/v0/b/design-spec/o/projects%2Fgoogle-material-3%2Fimages%2Flwuu5ddb-GM3-Components-Carousel-Accesibility-6-v01.mp4?alt=media" aria-label="Comparison of a hero carousel with the reduced motion setting off and on."></video>

1. Default carousel for single-scroll
2. Carousel with reduced motion settings turned on
