diff --git a/pyfstat/grid_based_searches.py b/pyfstat/grid_based_searches.py
index 672ca261355f0032a439bf7da772e460e3107c75..6c1c46457f073481a3569f217c5df63dae006fd7 100644
--- a/pyfstat/grid_based_searches.py
+++ b/pyfstat/grid_based_searches.py
@@ -186,10 +186,21 @@ class GridSearch(BaseSearchClass):
         if return_data:
             return data
         else:
-            logging.info('Saving data to {}'.format(self.out_file))
-            np.savetxt(self.out_file, data, delimiter=' ')
+            self.save_array_to_disk(data)
             self.data = data
 
+    def get_header(self):
+        header = ';'.join(['date:{}'.format(str(datetime.datetime.now())),
+                           'user:{}'.format(getpass.getuser()),
+                           'hostname:{}'.format(socket.gethostname())])
+        header += '\n' + ' '.join(self.keys)
+        return header
+
+    def save_array_to_disk(self, data):
+        logging.info('Saving data to {}'.format(self.out_file))
+        header = self.get_header()
+        np.savetxt(self.out_file, data, delimiter=' ', header=header)
+
     def convert_F0_to_mismatch(self, F0, F0hat, Tseg):
         DeltaF0 = F0[1] - F0[0]
         m_spacing = (np.pi*Tseg*DeltaF0)**2 / 12.