diff --git a/sdbusplus/utility/tuple_to_array.hpp b/sdbusplus/utility/tuple_to_array.hpp
new file mode 100644
index 0000000..b5ab2a5
--- /dev/null
+++ b/sdbusplus/utility/tuple_to_array.hpp
@@ -0,0 +1,56 @@
+#pragma once
+
+#include <utility>
+#include <tuple>
+#include <array>
+
+namespace sdbusplus
+{
+
+namespace utility
+{
+
+namespace details
+{
+
+/** tuple_to_array - Create std::array from std::tuple.
+ *
+ *  @tparam V - Type of the first tuple element.
+ *  @tparam Types - Sequence of types for remaining elements, which must
+ *                  be automatically castable to V.
+ *  @tparam I - Sequence of integral indexes (0...N) for each tuple elemeent.
+ *
+ *  @param tuple - Tuple of N same-typed elements.
+ *  @param [unnamed] - std::integer_sequence of tuple's index values.
+ *
+ *  @return A std::array where each I-th element is tuple's I-th element.
+ */
+template <typename V, typename... Types, std::size_t... I>
+constexpr auto tuple_to_array(
+    std::tuple<V, Types...>&& tuple,
+    std::integer_sequence<std::size_t, I...>)
+{
+    return std::array<V, sizeof...(I) >({ std::get<I>(tuple)..., });
+}
+
+} // namespace details
+
+/** tuple_to_array - Create std::array from std::tuple.
+ *
+ *  @tparam Types - Sequence of types of the tuple elements.
+ *  @tparam I - std::integer_sequence of indexes (0..N) for each tuple element.
+ *
+ *  @param tuple - Tuple of N same-typed elements.
+ *
+ *  @return A std::array where each I-th element is tuple's I-th element.
+ */
+template <typename... Types,
+          typename I = std::make_index_sequence<sizeof...(Types)>>
+constexpr auto tuple_to_array(std::tuple<Types...>&& tuple)
+{
+    return details::tuple_to_array(std::move(tuple), I());
+}
+
+} // namespace utility
+
+} // namespace sdbusplus
diff --git a/test/utility/tuple_to_array.cpp b/test/utility/tuple_to_array.cpp
new file mode 100644
index 0000000..e7472f9
--- /dev/null
+++ b/test/utility/tuple_to_array.cpp
@@ -0,0 +1,17 @@
+#include <sdbusplus/utility/tuple_to_array.hpp>
+#include <cassert>
+
+int main()
+{
+    std::array<char, 3> a{'a', 'b', 'c'};
+    auto t = std::make_tuple('a', 'b', 'c');
+
+    assert(a == sdbusplus::utility::tuple_to_array(std::move(t)));
+
+    std::array<int, 4> b{1, 2, 3, 4};
+    auto t2 = std::make_tuple(1, 2, 3, 4);
+
+    assert(b == sdbusplus::utility::tuple_to_array(std::move(t2)));
+
+    return 0;
+}
