diff --git a/apps/benchmarks/CNT/VBondModel.cpp b/apps/benchmarks/CNT/VBondModel.cpp
index 091327c2f0290032abc36b85e3fe3d32b7022311..048ba24efb1e1692d5e731f8f80e9ac6f53797f3 100644
--- a/apps/benchmarks/CNT/VBondModel.cpp
+++ b/apps/benchmarks/CNT/VBondModel.cpp
@@ -27,9 +27,11 @@
 #include "mesa_pd/kernel/cnt/Parameters.h"
 #include "mesa_pd/kernel/cnt/VBondContact.h"
 #include "mesa_pd/kernel/VelocityVerlet.h"
+#include "mesa_pd/vtk/ParticleVtkOutput.h"
 
 #include "core/Environment.h"
 #include "core/math/Constants.h"
+#include "vtk/VTKOutput.h"
 
 namespace walberla {
 using namespace walberla::mesa_pd;
@@ -62,6 +64,17 @@ int main(int argc, char **argv)
    }
    data::Particle &&last_segment = *(ps->end() - 1);
 
+   WALBERLA_LOG_INFO_ON_ROOT("setting up VTK output");
+   auto vtkOutput       = make_shared<mesa_pd::vtk::ParticleVtkOutput>(ps);
+   vtkOutput->addOutput<data::SelectParticlePosition>("position");
+   auto vtkWriter       = walberla::vtk::createVTKOutput_PointData(vtkOutput,
+                                                                   "cnt",
+                                                                   1,
+                                                                   "vtk",
+                                                                   "particles",
+                                                                   false,
+                                                                   false);
+
    WALBERLA_LOG_INFO_ON_ROOT("setting up interaction models");
    kernel::cnt::VBondContact vbond;
    kernel::VelocityVerletPreForceUpdate vv_pre(kernel::cnt::dT);
@@ -73,6 +86,8 @@ int main(int argc, char **argv)
    std::ofstream fout("output.txt");
    for (auto i = 0; i < numSimulationSteps; ++i)
    {
+      vtkWriter->write();
+
       ps->forEachParticle(false,
                           kernel::SelectAll(),
                           ac,