diff --git a/test/utest.cpp b/test/utest.cpp
index 04fa492..ff75a60 100644
--- a/test/utest.cpp
+++ b/test/utest.cpp
@@ -1,4 +1,5 @@
 #include "powercap.hpp"
+#include "utils.hpp"
 
 #include <experimental/filesystem>
 #include <occ_events.hpp>
@@ -7,6 +8,7 @@
 #include <gtest/gtest.h>
 
 using namespace open_power::occ;
+using namespace open_power::occ::utils;
 
 class VerifyOccInput : public ::testing::Test
 {
@@ -66,3 +68,17 @@
 
     EXPECT_STREQ(parsed.c_str(), "bar");
 }
+
+TEST(VerifyLabelValue, checkLabelValue)
+{
+    const std::string value = "D0000002";
+
+    auto labelValue = checkLabelValue(value);
+    EXPECT_NE(labelValue, std::nullopt);
+
+    std::string reType = "D0";
+    uint16_t reID = 2;
+    auto& [type, instanceID] = *labelValue;
+    EXPECT_EQ(type, reType);
+    EXPECT_EQ(instanceID, reID);
+}
diff --git a/utils.cpp b/utils.cpp
index 9a412a3..b1fd8b6 100644
--- a/utils.cpp
+++ b/utils.cpp
@@ -75,6 +75,40 @@
     return value;
 }
 
+std::optional<LABELVALUE> checkLabelValue(const std::string& value)
+{
+    // The ID 0xD0000002 is only 4 bytes long, but when converted to a string it
+    // is 8 characters long
+    // eg: Dimm2, the lable file is `D0000002` so value
+    // length = 2 byte(type) + 2 byte(reserve) + 4 byte(instace ID)
+    size_t valueLen = value.length();
+    size_t typeLen = 2;
+    size_t reserveLen = 2;
+    size_t instanceIDLen = 4;
+    if (valueLen != typeLen + reserveLen + instanceIDLen)
+    {
+        return std::nullopt;
+    }
+
+    size_t offset = 0;
+    std::string type = value.substr(offset, typeLen);
+    offset += typeLen;
+    std::string reserve = value.substr(offset, reserveLen);
+    offset += reserveLen;
+
+    if ("00" != reserve)
+    {
+        return std::nullopt;
+    }
+
+    const char* start = value.data() + offset;
+    uint16_t instanceID = static_cast<uint16_t>(std::strtol(start, NULL, 16));
+
+    LABELVALUE labelValue{type, instanceID};
+
+    return std::make_optional(std::move(labelValue));
+}
+
 } // namespace utils
 } // namespace occ
 } // namespace open_power
diff --git a/utils.hpp b/utils.hpp
index 1d173a3..6254ed7 100644
--- a/utils.hpp
+++ b/utils.hpp
@@ -1,13 +1,19 @@
 #pragma once
 
+#include <optional>
 #include <sdbusplus/bus.hpp>
 #include <string>
+#include <tuple>
+
 namespace open_power
 {
 namespace occ
 {
 namespace utils
 {
+
+using LABELVALUE = std::tuple<std::string, uint16_t>;
+
 constexpr auto MAPPER_BUSNAME = "xyz.openbmc_project.ObjectMapper";
 constexpr auto MAPPER_OBJ_PATH = "/xyz/openbmc_project/object_mapper";
 constexpr auto MAPPER_IFACE = "xyz.openbmc_project.ObjectMapper";
@@ -49,6 +55,15 @@
                                 const std::string& interface,
                                 const std::string& propertyName);
 
+/**
+ * @brief Check the value of the `tempX_label` file
+ *
+ * @param[in] value  -  the value of the `tempX_label` file
+ *
+ * @return              Sensors type and Sensors ID
+ */
+std::optional<LABELVALUE> checkLabelValue(const std::string& value);
+
 } // namespace utils
 } // namespace occ
 } // namespace open_power
