Carousels turn up on ecommerce homepages, product pages and the content rows on streaming sites, wherever a page has more items than the screen has room for. One container holds the lot, a few items show at a time, and people reach the rest with arrows, dots, a swipe or a timer.

Automatic rotation isn’t required. The W3C ARIA Authoring Practices Guide defines the pattern by its sequential display of slides and treats auto-start as a feature of some implementations, so a carousel that sits still until the user moves it still counts.

What Is a Carousel UI?

The W3C ARIA Authoring Practices Guide describes the pattern as a set of items, called slides, with one or more shown at a time. The pattern title includes slideshow and image rotator, though slider is the word most people use day to day.

It belongs with the other user interface components that reveal one piece of content by hiding another, accordions being the obvious relative.

Each slide is a container for an image, text, video or card. The slides sit on a track, a strip that moves behind the viewport, which is just the visible window. Next and previous buttons move the track, and a carousel that advances on its own needs a rotation control as well. Indicators, usually dots or thumbnails, show where the user is and let them jump to a different slide.

The Washington Post Design System lists a title, controls, content items and pagination dots in its anatomy, and sets a minimum of 4 items per carousel.

A carousel saves space by hiding content. That trade never changes, so every decision about one comes down to how much hiding the content can take.

What Types of Carousel UI Are There?

Hero, card, content row, testimonial and thumbnail carousels cover most of what shows up in design references, and each one fails in its own way.

TypeTypical contentUsual placementMain risk
HeroPromotions, launches, announcementsTop of the homepageBanner blindness, most views go to slide one
Product or cardProducts, articles, case studies, categoriesMid-page and listing sectionsCards past the edge go unseen on mobile
Content rowTitles grouped by genre or topic (Netflix)Stacked rows down a pageRow titles are mostly skipped
TestimonialCustomer reviews, success storiesLanding and service pagesRotation removes proof before it is read
Thumbnail galleryProduct or portfolio imagesProduct pagesThumbnails take space on small screens

A hero carousel rotates promotional slides through the space where a single hero image would otherwise sit.

Shoppers on a product carousel are already browsing. Each slide is a card, usually an image and a title with a price underneath, so how the card is designed decides what they can judge without clicking. That’s where product card design earns its keep.

Material Design 3 skips content and sorts carousels by item size instead. According to the Android Developers documentation, multi-browse mixes items of different sizes, which suits scanning a lot of photos quickly. Uncontained keeps every item the same size and lets them run past the container edge. With hero, one large item sits in front with a small preview of the next. Full-screen is the odd one out: a single edge-to-edge item at a time, scrolling vertically, meant for content taller than it is wide.

How Do Users Move Through a Carousel?

What is shaping UX design today?

Uncover the newest UX design statistics: user behavior, design trends, ROI data, and insights driving better digital experiences.

Check Them Out →

Arrows and pagination dots are the standard controls, swipe and drag cover touch and mouse, and keyboard input and thumbnails fill in the rest. The carousel itself either waits for the user or advances on a timer.

Navigation controls

The W3C calls the arrows next and previous slide controls. Baymard says to put one on each side, with strong contrast and a size that’s visible at a glance.

Dots are small buttons for jumping to a particular slide. Baymard found that users miss them when they’re the only way to advance, as in the Staples app.

Swipe is what people expect on a touch screen, and Baymard says to offer it alongside buttons, never instead of them.

Keyboard users reach the same controls with Tab when they are native buttons, which the W3C recommends.

Thumbnails show every slide at once and let users jump straight to any of them.

Autoplay, looping and snapping

Autoplay is the setting that decides whether a carousel is usable or annoying.

On desktop, Baymard recommends autorotation, because it spreads exposure across slides and signals that the banner is a carousel. It comes with conditions. The interval should be reasonable and rotation should pause on hover, and it should stop completely once the user moves a slide by hand.

On mobile there should be no autorotation at all. A touch screen has no hover state, so a slide can change just as the user taps and send them to the wrong page.

Baymard’s case study points to Amazon’s homepage carousel as the desktop rule done right, since rotation stops the moment a user moves a slide by hand.

Looping returns to the first slide after the last, and the W3C pattern notes that rotation can also stop once every slide has been shown. Snapping makes the track settle on a slide boundary after a swipe or drag, so no slide sits half in view.

Do Carousels Work? What the Research Shows

Carousels work only when a short list of conditions is met, and Baymard Institute’s 2025 testing update found that many homepage carousels miss them. The same research found that a static content section performs as well and is simpler to get right.

That update also put numbers on how common these carousels are and how often they’re built badly.

  • 33% of top US and European ecommerce desktop sites run a homepage carousel.
  • 46% of sites with a homepage carousel have usability issues in the implementation.
  • Short slides should stay up for 5 to 7 seconds, and text-heavy ones for up to 10 seconds.

Most users never see every slide, even when the carousel autorotates. Baymard’s participants clicked away or scrolled past before one full rotation, so the first slide gets far more exposure than any later one.

Most participants started with search or the main menu, sometimes before the homepage had finished loading. Slides that look like ads trigger banner blindness on top of that.

The sources disagree on autorotation. Baymard recommends it on desktop, with a sensible interval and with rotation pausing on hover and stopping after any manual interaction. Nielsen Norman Group’s 2013 usability study found users could not locate prominent content because it sat in an auto-rotating carousel.

Both findings stand, so the working rule is the narrower one. Keep control manual by default, and add autorotation only on desktop and only under the conditions Baymard sets.

Eye-tracking points the same way for labels. An analysis of the RecGaze dataset, published for SIGIR 2026, found that users largely skip carousel titles and go straight to the items.

RecGaze is, to the authors’ knowledge, the only public eye-tracking dataset for carousels, and its authors warn that the results may not carry over to other layouts or tasks.

Read together, the usability picture is conditional. Users act on the item they came for and ignore the text around it.

When Does a Carousel UI Fit, and When Does It Fail?

A carousel fits when users chose to browse, and fails when it carries content the page needs every visitor to see. The test is what happens to a slide nobody opens.

It’s defensible when users are already browsing items, as on a product page or a content row. Every slide should also have another route elsewhere on the page, and a slide nobody sees should cost the business nothing.

The Chrome team’s web.dev guidance (updated January 2021) says carousels work well where extra vertical space is not an option, and it names product pages as a good example. It also says slide destinations should be reachable by other paths, because few users engage with every slide.

Static sections are the usual replacement. H&M and Living Spaces, both shown in Baymard’s 2025 homepage research, put offers and main sections directly on the page instead of rotating them.

On the plus side, a carousel fits many items into one container, and swipe is a gesture mobile users already expect. It suits browsing tasks like galleries and product rows.

The costs are easier to miss. Controls, labels and pause logic all need building and testing, and slides tend to become a dumping ground for content no department wants to drop, a risk web.dev calls out. Large hero versions push useful content further down the page too, and Yale University’s usability guidance notes that this eats into the space above the fold.

A call-to-action placed on a slide is lost for every visitor who never reaches that slide.

Some institutions have picked a side. YaleSites does not offer a carousel block, and the Queensland Government health design system recommends a hero image on the homepage instead.

The web.dev guidance also calls autoplay rarely a good choice. That puts the Chrome team on the same side as Nielsen Norman Group in the autoplay disagreement, with Baymard’s conditional desktop rule as the outlier.

How to Make a Carousel UI Accessible

An accessible carousel has to be stoppable, and every control has to work from the keyboard. Screen readers need labels on the carousel and on each slide. The W3C ARIA Authoring Practices Guide and WCAG 2.2 define the details.

The Authoring Practices Guide builds the pattern from ARIA roles and properties.

  • The container gets role region or group, aria-roledescription set to carousel, and a name from a visible label or aria-label.
  • Each slide gets role group with aria-roledescription set to slide, named by its content or by its position, such as “3 of 10”.
  • Previous, next and rotation controls should be native button elements.
  • The live region is aria-live off while the carousel auto-rotates, and polite when it does not.

The rotation control comes first in the tab order inside the carousel, and its label switches between stop and start wording. Rotation also stops when keyboard focus enters the carousel or the mouse hovers over it, and focus-triggered stops do not resume unless the user restarts them.

The guide also covers how slide pickers can be built, and the styles differ mainly in tab stops. The basic style stops at rotation, previous and next controls. Tabbed adds slide pickers built as tabs, so the whole group is a single tab stop. Grouped puts one button per slide in the tab order, each its own stop, and that makes it the least friendly style for keyboard users.

WCAG 2.2 Success Criterion 2.2.2 (Level A) goes further. W3C lists auto-advancing presentations as auto-updating content and gives it no five second exception, so a mechanism to pause, stop or hide it must exist.

That makes pause on hover a useful extra, but not enough on its own. W3C says an animation that stops only while the user has focus on it does not count as a pause mechanism, and its sufficient techniques rely on a control the user can operate.

Level A is the lowest conformance level in web accessibility, so a carousel that fails it cannot claim any higher one.

How Does a Carousel UI Affect Page Speed?

A well-built carousel has little or no performance cost of its own, but the large images inside it often decide the page’s LCP score. That is the Chrome team’s position in web.dev’s carousel guidance, last updated January 2021.

MetricGood thresholdCarousel riskFix
LCP2.5 s or lessHero slide is the LCP element and loads latePut slides in the HTML, prioritize the first image
CLS0.1 or lessNon-composited slide animations, shifting controlsAnimate with transform, reserve space
INP200 ms or lessLong-running carousel scriptsReplace heavy tooling

Thresholds come from web.dev’s Core Web Vitals page (updated October 2024) and apply at the 75th percentile of page loads.

Loading slides with JavaScript is, per web.dev, probably the single biggest carousel performance mistake. The browser discovers the images late, and LCP pays for it.

Autoplay adds problems of its own. Until the user interacts, any slide can become the final LCP element, so web.dev advises keeping every slide at the same intrinsic size. And autoplaying slide transitions built on non-composited animations can repeat layout shifts indefinitely.

The same guidance covers some browser-version behavior. As of Chrome 88, images removed from the DOM count as LCP candidates, which matters for carousels that swap slides by removing the previous one. Chrome 121 made horizontally scrolling images use the same loading thresholds as vertical scrolling, so off-screen slides start downloading earlier, at the cost of more downloads.

Lazy loading belongs on slides outside the initial viewport, and never on the first one. In web.dev’s study of WordPress pages (updated March 2022), disabling lazy loading improved LCP by 13% to 15% on archive pages, and lazy loading only below-the-fold images matched that result.

That study covered WordPress pages, not carousels, so applying it to the first slide is an inference. It’s a safe one.

How to Build a Carousel UI

Start with native CSS scroll snap, and reach for a library only when the carousel needs autoplay, looping or thumbnails. A CSS carousel built on scroll snap needs no JavaScript for the snapping itself, according to web.dev.

  1. Place the slides in the page HTML, inside one scroll container, so the browser finds the images early.
  2. Give the container overflow-x: scroll, display: flex and scroll-snap-type: x mandatory.
  3. Give every slide a fixed width (flex: 0 0 100% for one slide at a time) and a scroll-snap-align value of center or start.
  4. Add visible previous and next buttons, and label the container and slides with the roles from the Authoring Practices Guide.
  5. Set width and height on slide images, and lazy load every slide after the first.
  6. Test with the Tab key, a screen reader and the reduced-motion setting.

Step 3 holds the main trap. MDN Web Docs says that with mandatory snapping, a child without a scroll-snap-align value cannot be scrolled into view.

Chrome and Edge 135 shipped ::scroll-button() and ::scroll-marker in April 2025, which generate the arrows and dots from CSS. The web-features data still listed Firefox and Safari as unsupported at the latest check, so wrap those rules in @supports and keep the snapping track as the fallback.

OptionDependenciesAccessibility and autoplayBest fit
CSS scroll snapNoneControls and labels are yours to addContent rows, card carousels
Bootstrap carouselBootstrap CSS and JSRespects reduced motion, autoplay pauses on hoverSites already on Bootstrap
SwiperNone, modularA11y is an opt-in moduleThumbnails, parallax, many frameworks
SplideNone, 12 kB gzippedAccessibility option adds ARIA, autoplay has a pause toggleSmall bundle, accessibility defaults
Embla CarouselNone, plugin-basedAccessibility and Autoplay are separate pluginsCustom markup and styling

The Bootstrap carousel documentation itself recommends avoiding autoplay and asks for an extra pause button when it is used. Nested carousels are listed as unsupported. Setting data-bs-ride to true instead of carousel delays the first slide change until the user interacts.

Embla keeps accessibility out of its core, and the Salt design system, which builds its carousel on Embla, notes that adding autoplay requires extra code to stay accessible.

Pick the smallest tool that covers the controls you need. Every added module is another accessibility surface to test, and I’d rather test less.

Carousel UI FAQ

What is the difference between a carousel, a slider and a slideshow?

For content display, none. The W3C pattern lists slide show and image rotator as other names for a carousel.

Slider is the term to watch, since many design systems also use it for a numeric range input.

Are vertical carousels still carousels?

Yes. Material Design 3’s full-screen layout shows one edge-to-edge item at a time and scrolls vertically, according to Android Developers documentation.

The W3C definition says nothing about direction.

Can one page hold more than one carousel?

Yes, but each moving carousel adds a control burden. W3C recommends a single mechanism that pauses every moving or auto-updating element on the page.

Separate controls per element still pass WCAG 2.2.2, but users must stop each one by hand.

Do carousels hurt SEO?

The documented risk is text baked into slide images. Baymard (2025) says slide text should be real HTML text, and notes this is typically better for SEO.

web.dev (2021) adds that embedded text also hurts accessibility, localization and compression.

How can a mobile carousel show there is more to swipe?

Let the next slide peek in at the edge. The Salt design system recommends reserving 4% of the width for it.

MetLife’s design system adds dots, arrows or a View All link as further cues.

Measuring Whether a Carousel UI Earns Its Place

A carousel UI earns its place when slides after the first draw clicks, and click-through rate per slide position is the metric that shows it. web.dev’s carousel guidance (updated January 2021) names click-through rate as the test of whether a carousel and its content work.

Track each slide separately. A single overall rate averages a busy first slide with idle later ones and hides the split.

Log clicks per slide position and compare the later slides against slide one. Any slide that sits idle can move into a static section.

The price of removal is a longer page. Baymard (2025) found that users reach promoted content by scrolling, which keeps the swap cheap.

If the data says keep it, a walkthrough of making a carousel in Figma covers the prototype step.

Bogdan Sandu
Latest posts by Bogdan Sandu (see all)