diff --git a/src/robofish/evaluate/evaluate.py b/src/robofish/evaluate/evaluate.py
index 7db6569b6d52c26091ca219a4a1d3d7b7bd2749d..fedefc76fdef3735a3af266e31022a027575e587 100644
--- a/src/robofish/evaluate/evaluate.py
+++ b/src/robofish/evaluate/evaluate.py
@@ -650,8 +650,8 @@ def evaluate_tracks(
 
     # Iterate all paths
     for k, files_in_path in enumerate(files_per_path):
-
         random.shuffle(files_in_path)
+
         # Iterate all files
         for i, file_path in enumerate(files_in_path):
             with robofish.io.File(file_path, "r") as file:
diff --git a/src/robofish/io/file.py b/src/robofish/io/file.py
index d57c7bf89ceb99508f1a4c09f14824c5b244b0c3..b29a54659b48e49fa3314d3c789ffcba5e330459 100644
--- a/src/robofish/io/file.py
+++ b/src/robofish/io/file.py
@@ -67,6 +67,7 @@ class File(h5py.File):
         *,  # PEP 3102
         world_size_cm: List[int] = None,
         validate: bool = False,
+        validate_when_saving: bool = True,
         strict_validate: bool = False,
         format_version: List[int] = default_format_version,
         format_url: str = default_format_url,
@@ -143,6 +144,7 @@ class File(h5py.File):
         """
 
         self.path = path
+        self.validate_when_saving = validate_when_saving
 
         if open_copy:
             assert (
@@ -256,7 +258,9 @@ class File(h5py.File):
     def __exit__(self, type, value, traceback):
         # Check if the context was left under normal circumstances
         if (type, value, traceback) == (None, None, None):
-            if self.mode != "r":  # No need to validate read only files (performance).
+            if (
+                self.mode != "r" and self.validate_when_saving
+            ):  # No need to validate read only files (performance).
                 self.validate()
 
         super().__exit__(type, value, traceback)