diff --git a/src/debug.c b/src/debug.c
index 601f63d6e11bbbf95f62eaef1ec6ec7ec06d3ad9..cc310e89ccb082555bf99d71dce2fc4a7b3d4931 100644
--- a/src/debug.c
+++ b/src/debug.c
@@ -31,6 +31,7 @@
 #include "debug.h"
 
 /* Local includes. */
+#include "active.h"
 #include "cell.h"
 #include "engine.h"
 #include "hydro.h"
@@ -268,6 +269,56 @@ int checkCellhdxmax(const struct cell *c, int *depth) {
   return result;
 }
 
+/**
+ * @brief map function for dumping cells. In MPI mode local cells only.
+ */
+static void dumpCells_map(struct cell *c, void *data) {
+  uintptr_t *ldata = (uintptr_t *)data;
+  FILE *file = (FILE *)ldata[0];
+  struct engine *e = (struct engine *)ldata[1];
+  if (e->nodeID == c->nodeID)
+    fprintf(file, "  %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6d %6d %6d %6d %6d "
+            "%20lld %6d %6d %6d %6d\n", c->loc[0], c->loc[1], c->loc[2],
+            c->width[0], c->width[1], c->width[2], c->count, c->gcount,
+            c->scount, c->depth, c->nr_tasks, c->ti_end_min,
+            get_time_bin(c->ti_end_min), (c->super == c),
+            cell_is_active(c, e), c->nodeID);
+}
+
+
+/**
+ * @brief Dump the location, depth, task counts and timebins and active state,
+ * for all cells to a simple text file.
+ *
+ * @param prefix base output filename
+ * @param s the space holding the cells to dump.
+ */
+void dumpCells(const char *prefix, struct space *s) {
+
+  FILE *file = NULL;
+
+  /* Name of output file. */
+  static int nseq = 0;
+  char fname[200];
+  sprintf(fname, "%s_%03d.dat", prefix, nseq);
+  atomic_inc(&nseq);
+
+  file = fopen(fname, "w");
+
+  /* Header. */
+  fprintf(file, "# %6s %6s %6s %6s %6s %6s %6s %6s %6s %6s %6s "
+          "%20s %6s %6s %6s %6s\n", "x", "y", "z", "xw", "yw", "zw", "count",
+          "gcount", "scount", "depth", "tasks", "ti_end_min", "timebin",
+          "issuper", "active", "rank");
+
+  uintptr_t data[2];
+  data[0] = (size_t) file;
+  data[1] = (size_t) s->e;
+  space_map_cells_pre(s, 1, dumpCells_map, &data);
+  fclose(file);
+}
+
+
 #ifdef HAVE_METIS
 
 /**
diff --git a/src/debug.h b/src/debug.h
index 7422a6f7f9815490966f08415e0312876ce0123f..e07c73c7a68b0ef244b4a30cf3aecebc6ff38f3d 100644
--- a/src/debug.h
+++ b/src/debug.h
@@ -33,6 +33,7 @@ void printgParticle_single(struct gpart *gp);
 
 int checkSpacehmax(struct space *s);
 int checkCellhdxmax(const struct cell *c, int *depth);
+void dumpCells(const char *prefix, struct space *s);
 
 #ifdef HAVE_METIS
 #include "metis.h"