skip to content

Ananyoo Accessible Carousel Block Plugin

Free, WCAG 2.2 AA accessible carousel & slider for WordPress — no autoplay, full keyboard and screen-reader support.

Accessible Carousel Block · WordPress plugin

A carousel that’s actually accessible — and a card row to match.

Most sliders are an accessibility minefield: autoplay you can’t stop, controls a keyboard can’t reach, slides a screen reader can’t follow. The Accessible Carousel Block is built the opposite way — two blocks, a hero carousel and a native scroll-snap card scroller, keyboard- and screen-reader-first, on the WAI-ARIA carousel pattern. Move with the arrow keys, jump with Home and End, hear each slide announced by its own title, and switch on optional reading modes for visitors who need them — with three ready-made looks and full design controls.

Free · GPLv2 · No tracking · WordPress 6.5+ · PHP 7.4+

2 blocks

Carousel + Scroller

3 looks

Editorial · Soft · Minimal

WCAG AA

Built to

None

Trackers · external calls

Why this exists

Carousels are where accessibility usually breaks.

It’s one of the most-cited failure patterns on the web: content that auto-advances faster than people can read, with no way to pause it; arrow and dot controls that keyboards skip over; slides a screen reader can’t announce or count; and off-screen slides that still grab keyboard focus. The carousel is often the single least accessible thing on an otherwise fine page.

Both blocks in the Accessible Carousel Block are built to be the exception, not the rule.

Two blocks, one accessible foundation.

A rotating hero, or a row of cards you browse at your own pace: the Accessible Carousel Block gives you whichever the page needs, with the same care underneath.

Block 1

Hero Carousel

One slide at a time: a background image with a solid contrast box holding a heading, text and a call to action.

  • Built on the WAI-ARIA carousel pattern
  • No autoplay by default; a pause control and reading-time pacing when it’s on
  • Arrow / Home / End keys, a visible slide counter and a “Skip carousel” link
  • Off-screen slides keep nothing in the tab order; degrades to a readable list with JavaScript off
Block 2

Card Scroller

A native scroll-snap row of cards for features, services or a portfolio — browsed by scrolling, never auto-moving.

  • Native scrolling: keyboard, touch and scrollbar all work
  • Nothing hidden from assistive tech — no focus traps
  • “Cards per view” is pure CSS (3 → 2 → 1 responsively)
  • Each card link carries distinct context for screen readers

Designed, not default

Three looks. All neutral. All AA.

Insert the Accessible Carousel Block and a “Choose a layout” picker offers three designed styles — or start blank. The same looks ship as patterns. Every colour pair is checked at 4.5:1 or better, so whichever you pick is accessible out of the box and recolourable in seconds.

Editorial

High contrast, crisp corners, solid buttons. Confident and content-first.

Soft

Rounded corners, a light surface and pill buttons. Friendly and modern.

Minimal

Flat, square, with a text-link call to action. The lightest, most restrained.

Neutral by design. The looks differ in shape and treatment, not brand colour — so they sit happily on any theme, and you can recolour any part from the block.

Style it in the block, not in CSS

Full design control — with accessibility kept intact.

Change the look from the Accessible Carousel Block’s own panels: heading size and colour, text size, and a call to action that can be a button or a text link, with its own shape, size and colours. Choose dots or a titled tab list for navigation, turn on reading-time pacing, and offer optional reader modes — all without touching CSS.

The guardrails never move: the heading level stays in range, images stay decorative by default, off-screen slides stay out of the tab order, and a contrast reminder sits right next to the colour pickers.

Button or link Square / Rounded / Pill Small / Medium / Large Heading & text size Dots or titled tabs Reading-time pacing Colours + border

In the editor

The Accessible Carousel Block, right in your WordPress editor.

Insert the Accessible Carousel Block, pick a look, then style every part — heading, text, the call to action, the pause control — from the block’s own panels. No code, no separate settings page.

The Accessible Carousel Block in the WordPress editor, with the layout, navigation and live Accessibility check panels in the sidebar.
The Accessible Carousel Block in the block editor — layout, navigation and the live Accessibility check in the sidebar.

Checked as you build

The editor flags accessibility problems before you publish.

As you edit a slide or card in the Accessible Carousel Block, a live Accessibility check reads out the WCAG colour contrast of every colour pair — text on its box, the heading on the background, and button text on its button — and flags a missing alt text, an empty heading, or vague button text like “click here”.

Every result is shown with an icon and words, never colour alone, so you fix issues while you build instead of discovering them in an audit weeks later.

Live contrast readout Alt-text check Heading check Meaningful link text

Built on the parts most carousels skip.

Every feature of the Accessible Carousel Block maps to a real WCAG success criterion — because it was designed by an accessibility consultant, not retrofitted.

No autoplay by default

Auto-advancing content is a barrier, so in the Accessible Carousel Block it’s off out of the box. If you enable it, a visible pause/stop control is always shown (with configurable label, position and size), rotation pauses on hover and on keyboard focus, and reading-time pacing can hold each slide on screen long enough to actually be read — never for visitors who prefer reduced motion.

WCAG 2.2.2 Pause, Stop, Hide

Screen readers can follow along

The Accessible Carousel Block is a labelled region, and each slide is announced by its own title — “slide 2 of 3: Our Services”, not just “item 2”. A polite live region announces changes during manual navigation and stays silent during auto-rotation, so it never spams the user. Nothing on an off-screen slide can be tabbed to.

WCAG 4.1.2 · 4.1.3 Status Messages

Full keyboard, no traps

In the Accessible Carousel Block, previous/next and navigation controls are real, focusable buttons with clear names; arrow keys move between slides and Home/End jump to the first or last. Swap the dots for a titled tab list, read the “2 / 3” counter, or use the “Skip carousel” link to jump past. Every control has a visible focus ring, a target of at least 24×24 px, and stays visible in Windows High Contrast mode.

WCAG 2.1.1 · 2.4.1 · 2.4.7 · 2.5.8

Works even with JavaScript off

Progressive enhancement: if scripts don’t run, the Accessible Carousel Block’s slides degrade to a simple readable stack and the scroller stays a scrollable list — every piece of content remains reachable. Nothing is hidden behind a script that might fail.

Robust by design

Visitor-controlled, off by default

Reading modes that put the visitor in control.

Options the Accessible Carousel Block lets a site owner switch on per carousel — each off by default, each loading its small extra script only when it’s enabled, so the default carousel stays lean.

Off by default

View as list

Unfolds the whole carousel into a plain, static vertical list — so anyone who would rather read everything at once, with no motion, simply can.

Off by default

Easier reading

A dyslexia-friendly toggle that widens letter, word and line spacing and left-aligns the text, for more comfortable reading without changing your theme.

Author choice

Titled tab navigation

Swap the row of identical dots for a tab list that shows each slide’s own heading — so visitors recognise where they are at a glance.

The second block, live

A card scroller you can actually use.

Scroll it, tab into it, or use the arrow keys — it’s a real instance of the Accessible Carousel Block, no autoplay, nothing hidden. Try the buttons or your keyboard’s arrows.

  • Audit

    A full WCAG AA review with automated and manual testing.

    Learn more
  • Remediate

    We fix the issues found and re-test until the site passes.

    Learn more
  • Build

    Accessible websites and apps built right from the first commit.

    Learn more
  • Train

    Practical accessibility training for your design and dev teams.

    Learn more

Standards-based

Built on the WAI-ARIA Authoring Practices.

Rather than inventing custom widget behaviour, the Accessible Carousel Block follows the W3C’s published “Carousel” design pattern — the same reference implementation accessibility specialists test against. The success criteria both blocks are built around:

1.4.1 Use of Colour 1.4.3 Contrast 1.4.11 Non-text Contrast 1.4.13 Content on Hover/Focus 2.1.1 Keyboard 2.2.2 Pause, Stop, Hide 2.3.3 Animation from Interactions 2.4.1 Bypass Blocks 2.4.4 Link Purpose 2.4.7 Focus Visible 2.5.3 Label in Name 2.5.8 Target Size 4.1.2 Name, Role, Value 4.1.3 Status Messages

Frequently asked questions

What’s the difference between the carousel and the scroller?

The carousel shows one slide at a time and rotates between them — a classic hero. The scroller shows a row of cards you browse by scrolling, with no auto-movement. Use the carousel for a headline hero; use the scroller for features, services or a portfolio — the Accessible Carousel Block bundles both.

How do the three looks work?

When you insert the Accessible Carousel Block, a “Choose a layout” picker offers Editorial, Soft and Minimal (or Start blank), each with a thumbnail. The same three looks are also available as ready-made patterns. They’re neutral and pass AA as-is, and every part is editable afterwards.

Can I show slide titles instead of dots?

Yes. Choose a titled tab list in place of the row of dots and each button shows its slide’s own heading — easier to recognise and remember. It’s a per-carousel setting, and on narrow screens the tab list moves to its own row so it never crowds the arrows.

Can visitors read the slides without the carousel motion?

If you switch them on, yes. A “View as list” mode unfolds the carousel into a plain vertical list so everything can be read at once with no motion, and an “Easier reading” toggle widens the spacing and left-aligns the text for a dyslexia-friendly view. Both are off by default, and the extra script loads only when they’re enabled.

Does the editor help me keep it accessible?

Yes. A live Accessibility check runs as you edit a slide or card: it reads out the WCAG colour contrast of every colour pair and flags a missing alt text, an empty heading, or vague button text — each shown with an icon and words, not colour alone — so you catch issues while you build.

Should I turn on autoplay?

Generally, no — auto-advancing content is a barrier for many people, which is why it’s off by default. If you do enable it, the Accessible Carousel Block always shows a pause control, rotation stops on hover, on keyboard focus and for anyone who prefers reduced motion, and reading-time pacing can hold each slide long enough to be read.

Can I change the colours and buttons?

Yes — from the Accessible Carousel Block itself. Set the heading size and colour, the text size, and turn the call to action into a button or a text link with its own shape, size and colours, plus the card background and border. A contrast reminder sits next to the colour controls so your choices stay readable.

Does it work without JavaScript?

Yes. Without JavaScript the carousel’s slides display as a stacked, readable list and the scroller remains a scrollable list, so all content stays reachable. The interactive behaviour is a progressive enhancement on top.

Will it slow down or track my site?

No. The front-end scripts are vanilla JavaScript with no dependencies and no build step, and assets load only on pages that use the Accessible Carousel Block. The plugin collects no data, contacts no external services, and adds no front-end links.

Add an accessible carousel in minutes.

It’s live and free on WordPress.org. Install from Plugins → Add New, search for Accessible Carousel & Slider, then add the Accessible Carousel block (or the Card Scroller), pick a look, and drop in your content. The Accessible Carousel Block is part of our collection of WordPress accessibility plugins, and pairs perfectly with the WordPress ADA-compliance theme.

GPLv2 or later · Free · No registration · No tracking