diff --git a/src/graph/GraphView.cpp b/src/graph/GraphView.cpp
index cb44faa9066b042047e2ab235ffd4d47cfaa0c14..7b2de9bd601ade18850f5c47c968f3a9cfeb49b5 100644
--- a/src/graph/GraphView.cpp
+++ b/src/graph/GraphView.cpp
@@ -16,6 +16,7 @@
 #include <numeric>
 
 #include "aidge/utils/Types.h"
+#include "aidge/utils/Formatting.hpp"
 #include "aidge/graph/GraphView.hpp"
 #include "aidge/data/Tensor.hpp"
 #include "aidge/operator/OperatorTensor.hpp"
@@ -103,13 +104,20 @@ void Aidge::GraphView::save(std::string path, bool verbose, bool showProducers)
             IOIndex_t inputIdx = 0;
             for (auto parent : child->inputs()) {
               if (parent.first == node_ptr && parent.second == outputIdx) {
+                // Add-on to display the operator's output dimensions
+                std::string dims = "";
+                const auto op = std::dynamic_pointer_cast<OperatorTensor>(node_ptr->getOperator());
+                if (op && !op->getOutput(outputIdx)->dims().empty()) {
+                  dims += " " + print(op->getOutput(outputIdx)->dims(), "%u");
+                }
+
                 if (mNodes.find(child) != mNodes.end()) {
-                  std::fprintf(fp, "%s-->|%u&rarr;%u|%s\n", namePtrTable[node_ptr].c_str(),
-                              outputIdx, inputIdx, namePtrTable[child].c_str());
+                  std::fprintf(fp, "%s-->|\"%u%s&rarr;%u\"|%s\n", namePtrTable[node_ptr].c_str(),
+                              outputIdx, dims.c_str(), inputIdx, namePtrTable[child].c_str());
                 }
                 else if (verbose) {
-                  std::fprintf(fp, "%s-->|%u&rarr;%u|%p:::externalCls\n", namePtrTable[node_ptr].c_str(),
-                              outputIdx, inputIdx, static_cast<void*>(child.get()));
+                  std::fprintf(fp, "%s-->|\"%u%s&rarr;%u\"|%p:::externalCls\n", namePtrTable[node_ptr].c_str(),
+                              outputIdx, dims.c_str(), inputIdx, static_cast<void*>(child.get()));
                 }
                 break;
               }
@@ -130,9 +138,16 @@ void Aidge::GraphView::save(std::string path, bool verbose, bool showProducers)
 
     size_t outputIdx = 0;
     for (auto output : mOutputNodes) {
-      std::fprintf(fp, "%s--->|%u&rarr;|output%lu((out#%lu)):::outputCls\n",
+      // Add-on to display the operator's output dimensions
+      std::string dims = "";
+      const auto op = std::dynamic_pointer_cast<OperatorTensor>(output.first->getOperator());
+      if (op && !op->getOutput(output.second)->dims().empty()) {
+        dims += " " + print(op->getOutput(output.second)->dims(), "%u");
+      }
+
+      std::fprintf(fp, "%s--->|\"%u%s&rarr;\"|output%lu((out#%lu)):::outputCls\n",
                    namePtrTable[output.first].c_str(), output.second,
-                   outputIdx, outputIdx);
+                   dims.c_str(), outputIdx, outputIdx);
       ++outputIdx;
     }