diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp
index ad91d4318b45e8196c1424e942751dd70fd9c934..e0c7702b1036dcd47c40a681c60727c1d9bb30fd 100644
--- a/indra/llcommon/llerror.cpp
+++ b/indra/llcommon/llerror.cpp
@@ -49,7 +49,6 @@
 
 #include "absl/synchronization/mutex.h"
 #include "absl/container/flat_hash_map.h"
-#include "absl/strings/str_format.h"
 
 #include "llapp.h"
 #include "llapr.h"
@@ -654,7 +653,7 @@ namespace LLError
         default:          mLevelString = "XXX";     break;
 		};
 
-		mLocationString = absl::StrFormat("%s(%d)", abbreviateFile(mFile), mLine);
+		mLocationString = llformat("%s(%d)", abbreviateFile(mFile).c_str(), mLine);
 #if LL_WINDOWS
 		// DevStudio: __FUNCTION__ already includes the full class name
 #else
@@ -1413,7 +1412,7 @@ namespace LLError
 			return;
 		}
 
-		if (out->str().length() < 128)
+		if(strlen(out->str().c_str()) < 128)
 		{
 			strcpy(message, out->str().c_str());
 		}
diff --git a/indra/llcommon/llsdparam.cpp b/indra/llcommon/llsdparam.cpp
index ef845e157b3c675a419655218e043387b543f731..6a824e2faf2d9c163dee9e2637da4d8dce0c97a8 100644
--- a/indra/llcommon/llsdparam.cpp
+++ b/indra/llcommon/llsdparam.cpp
@@ -32,8 +32,6 @@
 #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;
@@ -121,7 +119,7 @@ void LLParamSDParser::writeSDImpl(LLSD& sd, const LLInitParam::BaseBlock& block,
 		it != mNameStack.end();
 		++it)
 	{
-		absl::StrAppendFormat(&full_name, "[%s]", it->first);
+		full_name += llformat("[%s]", it->first.c_str());
 	}
 
 	return full_name;
diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp
index a7beab3e2a37d6a0f01d851f88b646d15bd6a42c..4e4ad0fcf41cbb94f44bc3161724d7093a38f3dc 100644
--- a/indra/llcommon/llstring.cpp
+++ b/indra/llcommon/llstring.cpp
@@ -37,8 +37,6 @@
 #include <winnls.h> // for WideCharToMultiByte
 #endif
 
-#include <absl/strings/str_format.h>
-
 LLTrace::BlockTimerStatHandle FT_STRING_FORMAT("String Format");
 
 
@@ -1041,19 +1039,19 @@ std::string LLStringOps::getReadableNumber(F64 num)
 {
     if (fabs(num)>=1e9)
     {
-		return absl::StrFormat("%.2lfB", num / 1e9);
+		return llformat("%.2lfB", num / 1e9);
     }
     else if (fabs(num)>=1e6)
     {
-		return absl::StrFormat("%.2lfM", num / 1e6);
+		return llformat("%.2lfM", num / 1e6);
     }
     else if (fabs(num)>=1e3)
     {
-		return absl::StrFormat("%.2lfK", num / 1e3);
+		return llformat("%.2lfK", num / 1e3);
     }
     else
     {
-		return absl::StrFormat("%.2lf", num);
+		return llformat("%.2lf", num);
     }
 }
 
@@ -1361,14 +1359,14 @@ bool LLStringUtil::formatDatetime(std::string& replacement, std::string token,
 	{
 		struct tm * gmt = gmtime (&loc_seconds);
 		LLStringUtil::format_map_t args;
-		args["[MDAY]"] = absl::StrFormat("%d", gmt->tm_mday);
+		args["[MDAY]"] = llformat ("%d", gmt->tm_mday);
 		replacement = LLStringOps::sDayFormat;
 		LLStringUtil::format(replacement, args);
 	}
 	else if (code == "%-d")
 	{
 		struct tm * gmt = gmtime (&loc_seconds);
-		replacement = absl::StrFormat("%d", gmt->tm_mday); // day of the month without leading zero
+		replacement = llformat ("%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 43a4cc2dd087288ab93bb04effc2c7522f37fa7b..6909cca917245b0057b04628a7aec5a6489f9854 100644
--- a/indra/llcommon/lltimer.cpp
+++ b/indra/llcommon/lltimer.cpp
@@ -39,8 +39,6 @@
 #	error "architecture not supported"
 #endif
 
-#include <absl/strings/str_format.h>
-
 #include <chrono>
 #include <thread>
 
@@ -469,7 +467,7 @@ void microsecondsToTimecodeString(U64MicrosecondsImplicit current_time, std::str
 	subframes = current_time / (U64)42;
 	subframes %= 100;
 
-	tcstring = absl::StrFormat("%3.3d:%2.2d:%2.2d:%2.2d.%2.2d", hours, minutes, seconds, frames, subframes);
+	tcstring = llformat("%3.3d:%2.2d:%2.2d:%2.2d.%2.2d",(int)hours,(int)minutes,(int)seconds,(int)frames,(int)subframes);
 }
 
 
diff --git a/indra/llcommon/lluuid.cpp b/indra/llcommon/lluuid.cpp
index c6ddf575b9f32e4cc428996e0c8b93b2d4f5fc51..3c1a79e30717535f417831c2be0698b616ab6b86 100644
--- a/indra/llcommon/lluuid.cpp
+++ b/indra/llcommon/lluuid.cpp
@@ -45,8 +45,6 @@
 #include "llthread.h"
 #include "llmutex.h"
 
-#include <absl/strings/str_format.h>
-
 const LLUUID LLUUID::null;
 const LLTransactionID LLTransactionID::tnull;
 
@@ -156,7 +154,7 @@ U32 janky_fast_random_seeded_bytes(U32 seed, U32 val)
 // Common to all UUID implementations
 void LLUUID::toString(std::string& out) const
 {
-	out = absl::StrFormat(
+	out = llformat(
 		"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
 		(U8)(mData[0]),
 		(U8)(mData[1]),