diff --git a/dumux/io/vtkoutputmodule.hh b/dumux/io/vtkoutputmodule.hh
index 17a5620261049045d903f4d2fe369381fb759b6c..813f880fb25664d0c5f44026ff6b205d2fbe093f 100644
--- a/dumux/io/vtkoutputmodule.hh
+++ b/dumux/io/vtkoutputmodule.hh
@@ -85,6 +85,7 @@ class VtkOutputModule
     using VelocityVector = Dune::FieldVector<Scalar, dimWorld>;
 
     static constexpr bool isBox = FVGridGeometry::discMethod == DiscretizationMethod::box;
+    static constexpr int dofCodim = isBox ? dim : 0;
 
     struct VolVarScalarDataInfo { std::function<Scalar(const VV&)> get; std::string name; };
     struct VolVarVectorDataInfo { std::function<VolVarsVector(const VV&)> get; std::string name; };
@@ -270,7 +271,7 @@ private:
             || addProcessRank)
         {
             const auto numCells = gridGeom_.gridView().size(0);
-            const auto numDofs = gridGeom_.numDofs();
+            const auto numDofs = numDofs_();
 
             // get fields for all volume variables
             if (!volVarScalarDataInfo_.empty())
@@ -443,7 +444,7 @@ private:
             || addProcessRank)
         {
             const auto numCells = gridGeom_.gridView().size(0);
-            const auto numDofs = gridGeom_.numDofs();
+            const auto numDofs = numDofs_();
 
             // get fields for all volume variables
             if (!volVarScalarDataInfo_.empty())
@@ -585,6 +586,9 @@ private:
     template<class Vector, typename std::enable_if_t<!IsIndexable<decltype(std::declval<Vector>()[0])>::value, int> = 0>
     std::size_t getNumberOfComponents_(const Vector& v) { return 1; }
 
+    //! return the number of dofs
+    std::size_t numDofs_() const { return gridGeom_.gridView().size(dofCodim); }
+
     const Problem& problem_;
     const FVGridGeometry& gridGeom_;
     const GridVariables& gridVariables_;