Best JavaScript carousel libraries in 2026
Swiper, Embla, Splide, Glide, Keen Slider, Flicking and Slick compared on size, licence, maintenance and framework support in 2026, plus the best Angular pick.
The best JavaScript carousel library in 2026 is Embla Carousel for most new projects, Swiper when you need every feature out of the box, and Splide when accessibility matters more than animation. This post compares the eight libraries people actually install, with their real size, licence and maintenance status as of October 2026, and ends with a short Angular section because that framework is the one with the least obvious answer.
I first published this list in 2023. Since then Swiper was rewritten in TypeScript, Slick shipped its first major release in nine years, and two of the libraries I recommended have not seen a release in over two years. So this is a full rewrite, not a touch-up.
The comparison at a glance
Sizes are the minified build gzipped, measured from the npm package on 12 October 2026. "Last release" is the latest version on npm the same day.
Library | Version | Last release | Gzipped | Dependencies | Licence | Official wrappers |
|---|---|---|---|---|---|---|
Swiper | 14.3.0 | Sep 2026 | 20 kB core, 44 kB full bundle | none | MIT | Web component, React, Vue, Svelte, Solid |
Embla Carousel | 8.6.0 | Apr 2025 | 7 kB | none | MIT | React, Vue, Svelte, Solid (Angular by the community) |
Splide | 4.1.4 | Nov 2022 | 13 kB | none | MIT | React, Vue, Svelte |
Glide.js | 3.7.1 | Nov 2024 | 8 kB | none | MIT | none |
Keen Slider | 6.8.6 | Jul 2023 | 6 kB | none | MIT | React, Vue, Svelte, Solid hooks |
Flicking (Naver egjs) | 4.17.1 | Sep 2026 | 39 kB | none | MIT | Angular, React, Vue, Svelte, Preact |
Flickity | 3.0.0 | Mar 2022 | 12 kB | none (jQuery optional) | GPLv3 or paid | none |
Slick | 2.0.0 | Sep 2026 | 10 kB plus jQuery | jQuery | MIT | none |
Swiper: the most popular, and the heaviest
Swiper is the library you have most likely already used. It is the most downloaded carousel on npm by a wide margin and ships with everything: pagination, navigation arrows, thumbnails, parallax, fade, cube and coverflow effects, virtual slides, lazy loading, keyboard and mousewheel control, and an accessibility module that is on by default.
Version 14, released in 2026, is a ground-up TypeScript rewrite. Types are now generated from the source, the ssr-window dependency is gone so the package has zero runtime dependencies, and the builds got a few percent smaller. The price is a newer browser floor: Chrome and Edge 110, Safari 16.4 and Firefox 110. If you must support older browsers stay on version 12.
The framework story changed in version 9. Swiper no longer ships React, Vue or Angular components. Instead it ships a web component, <swiper-container>, that works in every framework, plus thin React and Vue wrappers around it. In Angular you use the element directly with CUSTOM_ELEMENTS_SCHEMA.
Size is the trade-off. The full bundle is about 44 kB gzipped. You can import only the core and the modules you use, which brings it closer to 20 kB, but very few projects bother. Pick Swiper when the feature list is the point, for example a product gallery with thumbnails and zoom.
Embla Carousel: the default for new projects
Embla is a carousel engine, not a carousel. It handles scrolling physics, dragging, snapping, looping and breakpoints, and leaves the markup, the buttons and the styling to you. That sounds like more work, and it is a little, but it is why Embla is about 7 kB gzipped and why it is the engine under the shadcn/ui carousel and most design systems built in the last two years.
It has official packages for React, Vue, Svelte and Solid, and a set of first-party plugins: Autoplay, Auto Scroll, Auto Height, Class Names, Fade and Wheel Gestures. The motion is the best of the group. Drag precision and momentum feel native on touch screens, which is the thing users notice first.
The one honest weakness is accessibility: Embla gives you nothing out of the box. You write the buttons, the ARIA attributes and the keyboard handling yourself. If your team will not do that, choose Splide instead.
Splide: the accessible one
Splide is the library I recommend when a carousel has to pass an accessibility review. It ships with ARIA roles, a live region announcing slide changes, keyboard navigation, focus management and an option to respect prefers-reduced-motion, all enabled by default. It is 13 kB gzipped, has no dependencies, and has official React, Vue and Svelte integrations.
The caveat is maintenance. The last release was in November 2022 and the issue tracker has well over a hundred open tickets. Splide is stable and works fine in 2026, but do not expect new features, and test it against your framework version before committing.
Glide.js and Keen Slider: small and quiet
Glide.js is 8 kB gzipped, modular, dependency free and has a simple options-object API. It has no official framework wrappers and its community is small, but the 3.7 release in late 2024 shows it is still maintained. It is a good fit for a plain HTML site or a Laravel Blade page that needs one hero slider.
Keen Slider is the lightest option here at about 6 kB gzipped, with hooks for React, Vue, Svelte and Solid. It is also the one that worries me most: no release since July 2023. It works, but if you adopt it, expect to patch it yourself when a framework upgrade breaks the hook.
Flicking: the one with real Angular support
Flicking comes from Naver's egjs team and is the only library in this list with first-party packages for Angular, React, Vue, Svelte and Preact, all kept in step with the core. It is actively released, server-side rendering safe, and has a plugin set covering autoplay, fade, parallax, arrows and pagination.
It is also the heaviest at close to 39 kB gzipped for the packaged build, and the documentation is thinner in English than the others. Pick it when you are on Angular and want an officially supported component rather than a wrapper.
Flickity and Slick: the ones to retire
Flickity is a well-made library with good keyboard support, but it is GPLv3. A commercial project needs a paid licence, which starts at 25 dollars per developer, and the last release was in March 2022. There is no reason to start a new project on it.
Slick was the default carousel of the jQuery era and it is still installed on a huge number of sites. In September 2026 it got version 2.0, its first major release since 2017, whose main purpose is compatibility with jQuery 4. If you maintain a Slick site, upgrade to 2.0.1. If you are starting something new, do not add a jQuery dependency for a slider in 2026.
Which Angular carousel should you use?
Angular is the framework where the answer is least obvious, because most carousel libraries treat it as an afterthought. These are the realistic options in 2026:
- PrimeNG Carousel if you already use PrimeNG. It takes an array and an item template, supports responsive breakpoints and vertical orientation, and tracks Angular releases closely.
- ngx-owl-carousel-o if your team knows Owl Carousel. It has no jQuery dependency, its major version matches the Angular major version, and it gained proper accessibility in version 20.1. Mind that the 20.1 upgrade changed the navigation markup.
- Flicking through
@egjs/ngx-flickingwhen you want an officially maintained component with plugins. - Embla through the community
embla-carousel-angulardirective when you want the lightest engine and full control of the markup. Spartan UI builds its Angular carousel on it. - Swiper as a web component when you need its feature set. It works, but you lose Angular bindings and typing on the element.
- ng-bootstrap Carousel only if you are already on Bootstrap and need the simplest possible fade slider.
How I choose
- Design system or component library: Embla.
- Product gallery with thumbnails, zoom and effects: Swiper.
- Public sector, e-commerce checkout or anything audited for accessibility: Splide, or Embla with your own accessible markup.
- Angular with no UI kit: Flicking.
- A single slider on a server-rendered page: Glide.js.
- Existing jQuery codebase: keep Slick, upgrade to 2.0.1, and plan the migration.
One last thing. Before adding any of these, ask whether the content needs a carousel at all. Most users never swipe past the first slide on a homepage hero, and a grid of three cards almost always converts better. Carousels earn their place in galleries, testimonials and horizontal lists on mobile. Use them there.
Frequently asked questions
What is the best JavaScript carousel library in 2026?
Embla Carousel for most new projects because it is 7 kB, dependency free and has official React, Vue, Svelte and Solid packages. Swiper is the better choice when you need built-in effects, thumbnails and pagination, and Splide when accessibility is the priority.
What is the most popular JavaScript carousel?
Swiper is the most downloaded carousel library on npm. Version 14, released in 2026, is a TypeScript rewrite with no runtime dependencies and a web component that works in any framework.
Which JavaScript carousel is the most lightweight?
Keen Slider at about 6 kB gzipped, followed by Embla Carousel at 7 kB and Glide.js at 8 kB. Keen Slider has not been released since 2023, so Embla is the safer pick.
What is the best carousel for Angular?
PrimeNG Carousel if you already use PrimeNG, ngx-owl-carousel-o for teams used to Owl Carousel, Flicking for an officially maintained Angular component, and Embla through the community embla-carousel-angular directive when you want the lightest option.
Is Slick carousel still maintained?
Yes. Slick 2.0 was released in September 2026, its first major version since 2017, mainly to support jQuery 4. It still requires jQuery, so it is not recommended for new projects.