diff --git a/src/utils/checkpointing/CheckpointUtils.cpp b/src/utils/checkpointing/CheckpointUtils.cpp
index fc2fda7b4fa2c7a8ad47876cbc4ab6beed506010..d457e55f418d860cb9461185a593cedfe9abb252 100644
--- a/src/utils/checkpointing/CheckpointUtils.cpp
+++ b/src/utils/checkpointing/CheckpointUtils.cpp
@@ -632,6 +632,8 @@ writeIWriter(const std::string& symbol_name,
   std::shared_ptr<const IWriter> iwriter_p =
     dynamic_cast<const DataHandler<const IWriter>&>(embedded_data.get()).data_ptr();
 
+  variable_group.createAttribute("type", dataTypeName(ast_node_data_type_from<decltype(iwriter_p)>));
+
   variable_group.createAttribute("iwriter_type", iwriter_p->type());
 
   switch (iwriter_p->type()) {
@@ -876,6 +878,8 @@ writeVariableBCDescriptor(const std::string& symbol_name,
   std::shared_ptr<const VariableBCDescriptor> variable_bc_descriptor_p =
     dynamic_cast<const DataHandler<const VariableBCDescriptor>&>(embedded_data.get()).data_ptr();
 
+  variable_group.createAttribute("type", dataTypeName(ast_node_data_type_from<decltype(variable_bc_descriptor_p)>));
+
   HighFive::Group discrete_function_group = variable_group.createGroup("discrete_function");
   writeDiscreteFunctionVariant(discrete_function_group, variable_bc_descriptor_p->discreteFunctionVariant(), file,
                                checkpoint_group);