diff --git a/dumux/io/gridwriter.hh b/dumux/io/gridwriter.hh
index 48bc52282028c2fafc1a0093a5cc4431896f3583..c36dce9ec95423dbb8c52f55fb9a869e97f29898 100644
--- a/dumux/io/gridwriter.hh
+++ b/dumux/io/gridwriter.hh
@@ -25,6 +25,9 @@
 #include <gridformat/traits/dune.hpp>
 
 #include <dune/common/exceptions.hh>
+#include <dune/common/timer.hh>
+
+#include <dumux/io/format.hh>
 #include <dumux/discretization/method.hh>
 
 namespace Dumux::IO {
@@ -236,6 +239,8 @@ class OutputModule : private GridWriter<typename GridVariables::GridGeometry::Gr
 
     class VolVarFieldStorage;
 
+    static constexpr int defaultVerbosity_ = 1;
+
  public:
     using VolumeVariables = VolVar;
 
@@ -256,7 +261,9 @@ class OutputModule : private GridWriter<typename GridVariables::GridGeometry::Gr
     : ParentType{defaultFileFormat, gridVariables.gridGeometry().gridView(), filename, order<1>}
     , gridVariables_{gridVariables}
     , solutionVector_{sol}
-    {}
+    {
+        setVerbosity(defaultVerbosity_);
+    }
 
     /*!
      * \brief Constructor for stationary file formats.
@@ -269,7 +276,9 @@ class OutputModule : private GridWriter<typename GridVariables::GridGeometry::Gr
     : ParentType{fmt, gridVariables.gridGeometry().gridView(), order<1>}
     , gridVariables_{gridVariables}
     , solutionVector_{sol}
-    {}
+    {
+        setVerbosity(defaultVerbosity_);
+    }
 
     /*!
      * \brief Constructor for transient file formats, i.e. time series.
@@ -283,7 +292,9 @@ class OutputModule : private GridWriter<typename GridVariables::GridGeometry::Gr
     : ParentType{fmt, gridVariables.gridGeometry().gridView(), filename, order<1>}
     , gridVariables_{gridVariables}
     , solutionVector_{sol}
-    {}
+    {
+        setVerbosity(defaultVerbosity_);
+    }
 
     /*!
      * \brief Register a volume variable to be added to the output.
@@ -398,9 +409,19 @@ class OutputModule : private GridWriter<typename GridVariables::GridGeometry::Gr
      */
     std::string write(const std::string& name)
     {
+        Dune::Timer timer;
+
         volVarFields_.updateFieldData(gridVariables_, solutionVector_);
         auto filename = ParentType::write(name);
         volVarFields_.clearFieldData();
+
+        timer.stop();
+        if (verbosity_ > 0)
+            std::cout << Fmt::format(
+                "Writing output to \"{}\". Took {:.2g} seconds.\n",
+                filename, timer.elapsed()
+            );
+
         return filename;
     }
 
@@ -410,9 +431,19 @@ class OutputModule : private GridWriter<typename GridVariables::GridGeometry::Gr
     template<std::floating_point T>
     std::string write(T time)
     {
+        Dune::Timer timer;
+
         volVarFields_.updateFieldData(gridVariables_, solutionVector_);
         auto filename = ParentType::write(time);
         volVarFields_.clearFieldData();
+
+        timer.stop();
+        if (verbosity_ > 0)
+            std::cout << Fmt::format(
+                "Writing output to \"{}\". Took {:.2g} seconds.\n",
+                filename, timer.elapsed()
+            );
+
         return filename;
      }
 
@@ -422,6 +453,12 @@ class OutputModule : private GridWriter<typename GridVariables::GridGeometry::Gr
         volVarFields_.clear();
     }
 
+    void setVerbosity(int verbosity)
+    {
+        if (gridVariables_.gridGeometry().gridView().comm().rank() == 0)
+            verbosity_ = verbosity;
+    }
+
 private:
     // reproduce behaviour of VtkOutputModule that flattens vectors of size 1
     template<Detail::Container C, GridFormat::Concepts::Scalar T>
@@ -474,6 +511,7 @@ private:
     const GridVariables& gridVariables_;
     const SolutionVector& solutionVector_;
     VolVarFieldStorage volVarFields_;
+    int verbosity_ = 0;
 };
 
 // Class to store vol var fields; implementation detail of the OutputModule class