diff --git a/include/libcamera/internal/formats.h b/include/libcamera/internal/formats.h
index 914fdde27d0c..1361b55d63d2 100644
--- a/include/libcamera/internal/formats.h
+++ b/include/libcamera/internal/formats.h
@@ -22,6 +22,8 @@ template<typename T>
 class ImageFormats
 {
 public:
+	using value_type = typename std::map<T, std::vector<SizeRange>>::value_type;
+
 	using iterator = typename std::map<T, std::vector<SizeRange>>::iterator;
 	using const_iterator = typename std::map<T, std::vector<SizeRange>>::const_iterator;
 
diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp
index 9f46f82c9059..5037c5928669 100644
--- a/src/libcamera/formats.cpp
+++ b/src/libcamera/formats.cpp
@@ -34,6 +34,11 @@ LOG_DEFINE_CATEGORY(Formats)
  * Sizes are stored as a list of SizeRange.
  */
 
+/**
+ * \typedef ImageFormats::value_type
+ * \brief Value type of the entries in the formats map
+ */
+
 /**
  * \typedef ImageFormats::iterator
  * \brief Iterator for the formats map
