Swiper (84.9%)
A11y Score 84.9% (opens in new tab)
Version Tested 12.1.0
GitHub Stars 41.8k
Nav Style Below carousel
Dots/Pagination Custom (DIY)
Most popular. Has keyboard/screen reader issues including infinite tab loops.
Summary
- No workarounds required — built-in A11y module with good defaults
- Most feature-complete accessibility out of the box
- Includes live region for screen reader announcements
- Has open issues but works well in practice
Accessibility Analysis
Score: 84.9% — 124/146 accessibility issues resolved Median resolution time: 9.4 days
Strengths
- Active maintenance with fast issue resolution
- Built-in A11y module with sensible defaults
- Most feature-complete out of the box
- Includes live region for screen reader announcements
Open Issues (22)
- Infinite loops when tabbing through sliders
- Broken tab key behavior with links inside slides
aria-liveannouncements fail on touch/click events- Redundant
aria-disabledalongside nativedisabledattributes - Pagination shows
NaNin aria-labels (loop mode) - Shadow DOM accessibility conflicts
Implementation Notes
A11y Module Setup
{
modules: [Navigation, Pagination, A11y],
a11y: {
enabled: true,
prevSlideMessage: 'Previous slide',
nextSlideMessage: 'Next slide',
paginationBulletMessage: 'Go to slide {{index}}',
},
pagination: {
el: '#pagination',
clickable: true,
bulletClass: 'swiper-dot',
bulletActiveClass: 'swiper-dot-active',
}
}
Why Custom Controls
We moved controls below the carousel for consistency with other libraries and better touch target accessibility. Built-in arrow buttons appear as overlays on the carousel, which can be visually confusing.