diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp
index 723493a4455387bbec0d6b3a15accc72e1d43f3c..465cf7d40aa06f953051bd4a5f932e5c05ae85f1 100644
--- a/indra/llcommon/llerror.cpp
+++ b/indra/llcommon/llerror.cpp
@@ -47,6 +47,7 @@
 #include <string_view>
 #include "string.h"
 #include <absl/container/flat_hash_map.h>
+#include <absl/strings/str_format.h>
 
 #include "llapp.h"
 #include "llapr.h"
@@ -647,7 +648,7 @@ namespace LLError
         default:          mLevelString = "XXX";     break;
 		};
 
-		mLocationString = llformat("%s(%d)", abbreviateFile(mFile).c_str(), mLine);
+		mLocationString = absl::StrFormat("%s(%d)", abbreviateFile(mFile), mLine);
 #if LL_WINDOWS
 		// DevStudio: __FUNCTION__ already includes the full class name
 #else
@@ -1397,7 +1398,7 @@ namespace LLError
 			return;
 		}
 
-		if(strlen(out->str().c_str()) < 128)
+		if (out->str().length() < 128)
 		{
 			strcpy(message, out->str().c_str());
 		}
diff --git a/indra/llcommon/llsdparam.cpp b/indra/llcommon/llsdparam.cpp
index 6a824e2faf2d9c163dee9e2637da4d8dce0c97a8..ef845e157b3c675a419655218e043387b543f731 100644
--- a/indra/llcommon/llsdparam.cpp
+++ b/indra/llcommon/llsdparam.cpp
@@ -32,6 +32,8 @@
 #include "llsdutil.h"
 #include "boost/bind.hpp"
 
+#include <absl/strings/str_format.h>
+
 static 	LLInitParam::Parser::parser_read_func_map_t sReadFuncs;
 static 	LLInitParam::Parser::parser_write_func_map_t sWriteFuncs;
 static 	LLInitParam::Parser::parser_inspect_func_map_t sInspectFuncs;
@@ -119,7 +121,7 @@ void LLParamSDParser::writeSDImpl(LLSD& sd, const LLInitParam::BaseBlock& block,
 		it != mNameStack.end();
 		++it)
 	{
-		full_name += llformat("[%s]", it->first.c_str());
+		absl::StrAppendFormat(&full_name, "[%s]", it->first);
 	}
 
 	return full_name;
diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp
index fea9cb10b80a75fcb8c4d8d4a1f88541dc7dbf21..686aa0a1b1b652d46076c896e0bbf6e5510bdfa5 100644
--- a/indra/llcommon/llstring.cpp
+++ b/indra/llcommon/llstring.cpp
@@ -37,6 +37,8 @@
 #include <winnls.h> // for WideCharToMultiByte
 #endif
 
+#include <absl/strings/str_format.h>
+
 LLTrace::BlockTimerStatHandle FT_STRING_FORMAT("String Format");
 
 
@@ -1058,19 +1060,19 @@ std::string LLStringOps::getReadableNumber(F64 num)
 {
     if (fabs(num)>=1e9)
     {
-		return llformat("%.2lfB", num / 1e9);
+		return absl::StrFormat("%.2lfB", num / 1e9);
     }
     else if (fabs(num)>=1e6)
     {
-		return llformat("%.2lfM", num / 1e6);
+		return absl::StrFormat("%.2lfM", num / 1e6);
     }
     else if (fabs(num)>=1e3)
     {
-		return llformat("%.2lfK", num / 1e3);
+		return absl::StrFormat("%.2lfK", num / 1e3);
     }
     else
     {
-		return llformat("%.2lf", num);
+		return absl::StrFormat("%.2lf", num);
     }
 }
 
@@ -1376,14 +1378,14 @@ bool LLStringUtil::formatDatetime(std::string& replacement, std::string token,
 	{
 		struct tm * gmt = gmtime (&loc_seconds);
 		LLStringUtil::format_map_t args;
-		args["[MDAY]"] = llformat ("%d", gmt->tm_mday);
+		args["[MDAY]"] = absl::StrFormat("%d", gmt->tm_mday);
 		replacement = LLStringOps::sDayFormat;
 		LLStringUtil::format(replacement, args);
 	}
 	else if (code == "%-d")
 	{
 		struct tm * gmt = gmtime (&loc_seconds);
-		replacement = llformat ("%d", gmt->tm_mday); // day of the month without leading zero
+		replacement = absl::StrFormat("%d", gmt->tm_mday); // day of the month without leading zero
 	}
 	else if( !LLStringOps::sAM.empty() && !LLStringOps::sPM.empty() && code == "%p" )
 	{
diff --git a/indra/llcommon/lltimer.cpp b/indra/llcommon/lltimer.cpp
index 6909cca917245b0057b04628a7aec5a6489f9854..43a4cc2dd087288ab93bb04effc2c7522f37fa7b 100644
--- a/indra/llcommon/lltimer.cpp
+++ b/indra/llcommon/lltimer.cpp
@@ -39,6 +39,8 @@
 #	error "architecture not supported"
 #endif
 
+#include <absl/strings/str_format.h>
+
 #include <chrono>
 #include <thread>
 
@@ -467,7 +469,7 @@ void microsecondsToTimecodeString(U64MicrosecondsImplicit current_time, std::str
 	subframes = current_time / (U64)42;
 	subframes %= 100;
 
-	tcstring = llformat("%3.3d:%2.2d:%2.2d:%2.2d.%2.2d",(int)hours,(int)minutes,(int)seconds,(int)frames,(int)subframes);
+	tcstring = absl::StrFormat("%3.3d:%2.2d:%2.2d:%2.2d.%2.2d", hours, minutes, seconds, frames, subframes);
 }
 
 
diff --git a/indra/llcommon/lluuid.cpp b/indra/llcommon/lluuid.cpp
index fa66adc7b8fff80330dc07c09665eb5dff843d4f..4e349514c34cea06148b0521227f81f0e12edff0 100644
--- a/indra/llcommon/lluuid.cpp
+++ b/indra/llcommon/lluuid.cpp
@@ -45,6 +45,8 @@
 #include "llthread.h"
 #include "llmutex.h"
 
+#include <absl/strings/str_format.h>
+
 const LLUUID LLUUID::null;
 const LLTransactionID LLTransactionID::tnull;
 
@@ -154,7 +156,7 @@ U32 janky_fast_random_seeded_bytes(U32 seed, U32 val)
 // Common to all UUID implementations
 void LLUUID::toString(std::string& out) const
 {
-	out = llformat(
+	out = absl::StrFormat(
 		"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
 		(U8)(mData[0]),
 		(U8)(mData[1]),