diff --git a/man/repart.d.xml b/man/repart.d.xml
index 8e3d496ab2192..2f933efdae791 100644
--- a/man/repart.d.xml
+++ b/man/repart.d.xml
@@ -877,6 +877,12 @@
lz4, lz4hc, lzma, deflate, libdeflate, zstd
mkfs.erofs1
+
+
+ btrfs
+ zlib, lzo, zstd
+ mkfs.btrfs8
+
diff --git a/src/shared/mkfs-util.c b/src/shared/mkfs-util.c
index 87c7d52a97943..46fa685b0d60b 100644
--- a/src/shared/mkfs-util.c
+++ b/src/shared/mkfs-util.c
@@ -461,6 +461,20 @@ int make_filesystem(
if (quiet && strv_extend(&argv, "-q") < 0)
return log_oom();
+ if (compression) {
+ _cleanup_free_ char *c = NULL;
+
+ c = strdup(compression);
+ if (!c)
+ return log_oom();
+
+ if (compression_level && !strextend(&c, ":", compression_level))
+ return log_oom();
+
+ if (strv_extend_many(&argv, "--compress", c) < 0)
+ return log_oom();
+ }
+
/* mkfs.btrfs unconditionally warns about several settings changing from v5.15 onwards which
* isn't silenced by "-q", so let's redirect stdout to /dev/null as well. */
if (quiet)