diff --git a/indra/llprimitive/llmaterialid.cpp b/indra/llprimitive/llmaterialid.cpp
index b1127b12f3b2ab4f511ba110596a2141424e9131..4c1993213f2c42930ad4d57fb6d9bc6ab6c82f83 100644
--- a/indra/llprimitive/llmaterialid.cpp
+++ b/indra/llprimitive/llmaterialid.cpp
@@ -87,23 +87,17 @@ LLSD LLMaterialID::asLLSD() const
 
 std::string LLMaterialID::asString() const
 {
-	return fmt::format(FMT_COMPILE("{:02x}{:02x}{:02x}{:02x}-{:02x}{:02x}-{:02x}{:02x}-{:02x}{:02x}-{:02x}{:02x}{:02x}{:02x}{:02x}{:02x}"),
-		(U8)(mID[0]),
-		(U8)(mID[1]),
-		(U8)(mID[2]),
-		(U8)(mID[3]),
-		(U8)(mID[4]),
-		(U8)(mID[5]),
-		(U8)(mID[6]),
-		(U8)(mID[7]),
-		(U8)(mID[8]),
-		(U8)(mID[9]),
-		(U8)(mID[10]),
-		(U8)(mID[11]),
-		(U8)(mID[12]),
-		(U8)(mID[13]),
-		(U8)(mID[14]),
-		(U8)(mID[15]));
+	std::string materialIDString;
+	for (unsigned int i = 0U; i < static_cast<unsigned int>(MATERIAL_ID_SIZE / sizeof(U32)); ++i)
+	{
+		if (i != 0U)
+		{
+			materialIDString += "-";
+		}
+		const U32* value = reinterpret_cast<const U32*>(&get()[i * sizeof(U32)]);
+		materialIDString += llformat("%08x", *value);
+	}
+	return materialIDString;
 }
 
 std::ostream& operator<<(std::ostream& s, const LLMaterialID &material_id)