diff --git a/requirements.txt b/requirements.txt
index 5fd1d863db6a6c2feaec39743c33370b5cdb48af..1ffcb521ad63d534d44ec2aa7c0edf63d170ec1d 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -5,6 +5,7 @@ sphinx
 sphinxcontrib-httpdomain >= 1.8.0
 sphinxcontrib-images
 sphinxcontrib-programoutput
+sphinx-carousel
 sphinx-design
 sphinx-reredirects
 pydata-sphinx-theme
diff --git a/swh/docs/sphinx/conf.py b/swh/docs/sphinx/conf.py
index 704b7feeb36f538aa12d96c93bfd942e237a83ba..382b60bdc9eae51ecc54e521243fabf1c70e2be8 100755
--- a/swh/docs/sphinx/conf.py
+++ b/swh/docs/sphinx/conf.py
@@ -42,6 +42,7 @@ extensions = [
     # swh.scheduler inherits some attribute descriptions from celery that use
     # custom crossrefs (eg. :setting:`task_ignore_result`)
     "sphinx_celery.setting_crossref",
+    "sphinx_carousel.carousel",
     "sphinx_design",
 ]