diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 1028bfb313825d3b3cdbf160fabdb92119aaeaa8..52c46518db12cec767dc6f481ed35b7b97052fdf 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -23,6 +23,7 @@ lint:
   image: "$CI_REGISTRY_IMAGE/qbcontainer"
   script:
     - ruff check querybuilder/
+    - black querybuilder/ --check --verbose --diff --color
 
 type-checking:
   stage: test
diff --git a/README.md b/README.md
index b2752a2d46b01c99729ab93f632bc75c14cff215..8908ca040a182f200a99f7c6195d2a291ce891f3 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,7 @@ Pydisk-querybuilder (PQB)
 
 [![build status](https://gitlab.inria.fr/pydisk/querybuilder/badges/master/pipeline.svg)](https://gitlab.inria.fr/pydisk/querybuilder/-/pipelines?page=1&scope=all&ref=master)
 [![coverage report](https://gitlab.inria.fr/pydisk/querybuilder/badges/master/coverage.svg)](https://gitlab.inria.fr/pydisk/querybuilder/-/commits/master)
+[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
 [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
 
 The goal of PQB is to offer a programmatic interface to various `SQL` dialects.
diff --git a/pyproject.toml b/pyproject.toml
index 1d86b8ffd0402c15293444e03beb584ab4192f7f..f70302445bccbdbc3ef4ab2cab3fa203d6ab592c 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -42,6 +42,7 @@ doc = [
     "sphinx_copybutton",
 ]
 dev = [
+    "black",
     "ruff",
     "mypy",
 ]