diff --git a/kdump-lib.sh b/kdump-lib.sh
index fd51266..6415dda 100755
--- a/kdump-lib.sh
+++ b/kdump-lib.sh
@@ -443,6 +443,12 @@ is_wdt_active()
 	return 1
 }
 
+have_compression_in_dracut_args()
+{
+	[[ "$(kdump_get_conf_val dracut_args)" =~ \
+		(^|[[:space:]])--(gzip|bzip2|lzma|xz|lzo|lz4|zstd|no-compress|compress)([[:space:]]|$) ]]
+}
+
 # If "dracut_args" contains "--mount" information, use it
 # directly without any check(users are expected to ensure
 # its correctness).
diff --git a/kexec-tools.spec b/kexec-tools.spec
index 5655503..bb2f7e7 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -71,6 +71,7 @@ Requires: dracut >= 050
 Requires: dracut-network >= 050
 Requires: dracut-squash >= 050
 Requires: ethtool
+Requires: zstd
 Recommends: grubby
 BuildRequires: make
 BuildRequires: zlib-devel elfutils-devel glib2-devel bzip2-devel ncurses-devel bison flex lzo-devel snappy-devel libzstd-devel
diff --git a/mkdumprd b/mkdumprd
index d87d588..9c26ecc 100644
--- a/mkdumprd
+++ b/mkdumprd
@@ -431,6 +431,10 @@ done <<< "$(kdump_read_conf)"
 
 handle_default_dump_target
 
+if ! have_compression_in_dracut_args; then
+	add_dracut_arg "--compress" "zstd"
+fi
+
 if [[ -n $extra_modules ]]; then
 	add_dracut_arg "--add-drivers" "$extra_modules"
 fi
diff --git a/mkfadumprd b/mkfadumprd
index b890f83..16fdacc 100644
--- a/mkfadumprd
+++ b/mkfadumprd
@@ -62,6 +62,10 @@ if is_squash_available; then
 	_dracut_isolate_args+=(--add squash)
 fi
 
+if ! have_compression_in_dracut_args; then
+	_dracut_isolate_args+=(--compress zstd)
+fi
+
 if ! dracut --force --quiet "${_dracut_isolate_args[@]}" "$@" "$TARGET_INITRD"; then
 	perror_exit "mkfadumprd: failed to setup '$TARGET_INITRD' with dump capture capability"
 fi