diff --git a/src/util.cpp b/src/util.cpp
index 5c5e427..094e4bf 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -633,14 +633,31 @@
     return fromString(std::get<std::string>(value));
 }
 
-ether_addr fromString(const char* str)
+ether_addr fromString(std::string_view str)
 {
-    struct ether_addr* mac = ether_aton(str);
-    if (mac == nullptr)
+    std::string mac_str{};
+    ether_addr mac{};
+
+    auto mac_c_str = str.data();
+
+    // MAC address without colons
+    if (str.size() == 12 && str.find(":") == std::string::npos)
     {
-        throw std::invalid_argument("Invalid MAC Address");
+        mac_str = std::string(str.substr(0, 2)) + ":" +
+                  std::string(str.substr(2, 2)) + ":" +
+                  std::string(str.substr(4, 2)) + ":" +
+                  std::string(str.substr(6, 2)) + ":" +
+                  std::string(str.substr(8, 2)) + ":" +
+                  std::string(str.substr(10, 2));
+        mac_c_str = mac_str.c_str();
     }
-    return *mac;
+
+    if (ether_aton_r(mac_c_str, &mac) != nullptr)
+    {
+        return mac;
+    }
+
+    throw std::invalid_argument("Invalid MAC Address");
 }
 
 std::string toString(const ether_addr& mac)
diff --git a/src/util.hpp b/src/util.hpp
index 804d492..b1d27c4 100644
--- a/src/util.hpp
+++ b/src/util.hpp
@@ -44,11 +44,7 @@
  *  @returns A mac address in network byte order
  *  @throws std::runtime_error for bad mac
  */
-ether_addr fromString(const char* str);
-inline ether_addr fromString(const std::string& str)
-{
-    return fromString(str.c_str());
-}
+ether_addr fromString(std::string_view str);
 
 /** @brief Converts the given mac address bytes into a string
  *  @param[in] mac - The mac address
diff --git a/test/test_util.cpp b/test/test_util.cpp
index d335adc..fc895cf 100644
--- a/test/test_util.cpp
+++ b/test/test_util.cpp
@@ -269,6 +269,9 @@
     EXPECT_THROW(fromString("0x:00:00:00:00:00"), std::invalid_argument);
     EXPECT_THROW(fromString("00:00:00:00:00"), std::invalid_argument);
     EXPECT_THROW(fromString(""), std::invalid_argument);
+    EXPECT_THROW(fromString("123456789XYZ"), std::invalid_argument);
+    EXPECT_THROW(fromString("123456789AB"), std::invalid_argument);
+    EXPECT_THROW(fromString("123456789ABCD"), std::invalid_argument);
 }
 
 TEST(MacFromString, Valid)
@@ -281,6 +284,12 @@
     EXPECT_TRUE(
         stdplus::raw::equal(ether_addr{0x00, 0x01, 0x02, 0x03, 0x04, 0x05},
                             fromString("0:1:2:3:4:5")));
+    EXPECT_TRUE(
+        stdplus::raw::equal(ether_addr{0x01, 0x23, 0x45, 0x67, 0x89, 0xab},
+                            fromString("0123456789AB")));
+    EXPECT_TRUE(
+        stdplus::raw::equal(ether_addr{0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa},
+                            fromString("FFEEDDccbbaa")));
 }
 
 TEST(MacToString, Valid)
