diff --git a/impl.cpp b/impl.cpp
index ba85346..765b1ac 100644
--- a/impl.cpp
+++ b/impl.cpp
@@ -29,6 +29,14 @@
 static constexpr auto UUID_TIME_HIGH_END = 18;
 static constexpr auto UUID_CLK_SEQ_END = 23;
 
+static constexpr auto MB_RESULT_LEN = 19;
+static constexpr auto MB_LEN_BYTES = 8;
+static constexpr auto MB_YEAR_END = 4;
+static constexpr auto MB_MONTH_END = 7;
+static constexpr auto MB_DAY_END = 10;
+static constexpr auto MB_HOUR_END = 13;
+static constexpr auto MB_MIN_END = 16;
+
 static const std::unordered_map<std::string, internal::KeywordInfo>
     supportedKeywords = {
         {"DR", std::make_tuple(record::Keyword::DR, keyword::Encoding::ASCII)},
@@ -38,7 +46,7 @@
         {"HW", std::make_tuple(record::Keyword::HW, keyword::Encoding::RAW)},
         {"B1", std::make_tuple(record::Keyword::B1, keyword::Encoding::B1)},
         {"VN", std::make_tuple(record::Keyword::VN, keyword::Encoding::ASCII)},
-        {"MB", std::make_tuple(record::Keyword::MB, keyword::Encoding::RAW)},
+        {"MB", std::make_tuple(record::Keyword::MB, keyword::Encoding::MB)},
         {"MM", std::make_tuple(record::Keyword::MM, keyword::Encoding::ASCII)},
         {"UD", std::make_tuple(record::Keyword::UD, keyword::Encoding::UD)},
         {"VP", std::make_tuple(record::Keyword::VP, keyword::Encoding::ASCII)},
@@ -221,6 +229,31 @@
             return result;
         }
 
+        case keyword::Encoding::MB:
+        {
+            // MB is BuildDate, represent as
+            // 1997-01-01-08:30:00
+            // <year>-<month>-<day>-<hour>:<min>:<sec>
+            auto stop = std::next(iterator, MB_LEN_BYTES);
+            std::string data(iterator, stop);
+            std::string result;
+            result.reserve(MB_LEN_BYTES);
+            auto strItr = data.cbegin();
+            std::advance(strItr, 1);
+            std::for_each(strItr, data.cend(), [&result](size_t c) {
+                result += toHex(c >> 4);
+                result += toHex(c & 0x0F);
+            });
+
+            result.insert(MB_YEAR_END, 1, '-');
+            result.insert(MB_MONTH_END, 1, '-');
+            result.insert(MB_DAY_END, 1, '-');
+            result.insert(MB_HOUR_END, 1, ':');
+            result.insert(MB_MIN_END, 1, ':');
+
+            return result;
+        }
+
         case keyword::Encoding::B1:
         {
             // B1 is MAC address, represent as AA:BB:CC:DD:EE:FF
diff --git a/impl.hpp b/impl.hpp
index 15a9503..94a958e 100644
--- a/impl.hpp
+++ b/impl.hpp
@@ -20,6 +20,7 @@
     RAW,   /**< raw data */
     // Keywords needing custom decoding
     B1, /**< The keyword B1 needs to be decoded specially */
+    MB, /**< Special decoding of MB meant for Build Date */
     UD  /**< Special decoding of UD meant for UUID */
 };
 
diff --git a/test/parser/parser.cpp b/test/parser/parser.cpp
index 69b2005..139c4f2 100644
--- a/test/parser/parser.cpp
+++ b/test/parser/parser.cpp
@@ -18,6 +18,8 @@
         auto vpdStore = parse(std::move(vpd));
 
         assert(("P012" == vpdStore.get<Record::VINI, record::Keyword::CC>()));
+        assert(("2019-01-01-08:30:00" ==
+                vpdStore.get<Record::VINI, record::Keyword::MB>()));
     }
 }
 
diff --git a/test/parser/test.vpd b/test/parser/test.vpd
index bc4fc0e..ba17611 100644
--- a/test/parser/test.vpd
+++ b/test/parser/test.vpd
Binary files differ
