diff --git a/lib/galaxy/config/sample/datatypes_conf.xml.sample b/lib/galaxy/config/sample/datatypes_conf.xml.sample
index cfd58ef2285..dd056fdca9e 100644
--- a/lib/galaxy/config/sample/datatypes_conf.xml.sample
+++ b/lib/galaxy/config/sample/datatypes_conf.xml.sample
@@ -185,6 +185,7 @@
+
diff --git a/lib/galaxy/datatypes/binary.py b/lib/galaxy/datatypes/binary.py
index b56c7bee39e..de4565a58c3 100644
--- a/lib/galaxy/datatypes/binary.py
+++ b/lib/galaxy/datatypes/binary.py
@@ -318,6 +318,29 @@ class Meryldb(CompressedArchive):
return False
+class Visium(CompressedArchive):
+ """Visium is a tar.gz archive with at least a 'Spatial' subfolder, a filtered h5 file and a raw h5 file."""
+
+ file_ext = "visium.tar.gz"
+
+ def sniff(self, filename: str) -> bool:
+ """
+ Check data structure:
+ Contains h5 files
+ Contains spatial folder
+ """
+ try:
+ if filename and tarfile.is_tarfile(filename):
+ with tarfile.open(filename, "r") as temptar:
+ _tar_content = temptar.getnames()
+ if "spatial" in _tar_content:
+ if len([_ for _ in _tar_content if _.endswith("matrix.h5")]) == 2:
+ return True
+ except Exception as e:
+ log.warning("%s, sniff Exception: %s", self, e)
+ return False
+
+
class Bref3(Binary):
"""Bref3 format is a binary format for storing phased, non-missing genotypes for a list of samples."""