diff --git a/indra/deps/CMakeLists.txt b/indra/deps/CMakeLists.txt
index 59a65958f2b6710427a1ecd711b90cb8c6c87b20..20bf9e57816870e3fda643717b744d024c019195 100644
--- a/indra/deps/CMakeLists.txt
+++ b/indra/deps/CMakeLists.txt
@@ -13,7 +13,7 @@ FetchContent_Declare(
 FetchContent_Declare(
   fmt
   GIT_REPOSITORY https://github.com/fmtlib/fmt.git
-  GIT_TAG        7512a55aa3ae309587ca89668ef9ec4074a51a1f
+  GIT_TAG        f94b7364b9409f05207c3af3fa4666730e11a854
   )
 FetchContent_Declare(
   absl
diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp
index 2d732d6b98e417b6d11527065a29c8dfed334fb7..e983e16f1c5b0c63b3f6ae7e990b82fb86b7d74d 100644
--- a/indra/llappearance/llavatarappearance.cpp
+++ b/indra/llappearance/llavatarappearance.cpp
@@ -219,7 +219,7 @@ void LLAvatarAppearance::initInstance()
 		for (U32 lod = 0; lod < mesh_dict->mLOD; lod++)
 		{
 			LLAvatarJointMesh* mesh = createAvatarJointMesh();
-			std::string mesh_name = fmt::format(fmt("m{:s}{:d}"), mesh_dict->mName, lod);
+			std::string mesh_name = fmt::format(FMT_STRING("m{:s}{:d}"), mesh_dict->mName, lod);
 			// We pre-pended an m - need to capitalize first character for camelCase
 			mesh_name[1] = toupper(mesh_name[1]);
 			mesh->setName(mesh_name);
diff --git a/indra/llappearance/llpolymesh.cpp b/indra/llappearance/llpolymesh.cpp
index 29a7db181875e2a9f8378d943319e077c6d6660b..824f369fc0a3a51a5e03a44905a5c2188835628c 100644
--- a/indra/llappearance/llpolymesh.cpp
+++ b/indra/llappearance/llpolymesh.cpp
@@ -923,7 +923,7 @@ void LLPolyMesh::dumpDiagInfo()
                 S32 num_faces = mesh->mNumFaces;
                 U32 num_kb = mesh->getNumKB();
 
-                buf = fmt::format(fmt("{:8d} {:8d} {:8d} {:s}"), num_verts, num_faces, num_kb, mesh_name);
+                buf = fmt::format(FMT_STRING("{:8d} {:8d} {:8d} {:s}"), num_verts, num_faces, num_kb, mesh_name);
                 LL_INFOS() << buf << LL_ENDL;
 
                 total_verts += num_verts;
@@ -932,7 +932,7 @@ void LLPolyMesh::dumpDiagInfo()
         }
 
         LL_INFOS() << "-----------------------------------------------------" << LL_ENDL;
-        buf = fmt::format(fmt("{:8d} {:8d} {:8d} TOTAL"), total_verts, total_faces, total_kb );
+        buf = fmt::format(FMT_STRING("{:8d} {:8d} {:8d} TOTAL"), total_verts, total_faces, total_kb );
         LL_INFOS() << buf << LL_ENDL;
         LL_INFOS() << "-----------------------------------------------------" << LL_ENDL;
 }
diff --git a/indra/llappearance/llwearable.cpp b/indra/llappearance/llwearable.cpp
index 9cae28ce0f3212ab486f3ee410687180a45093ee..ffa429a030bad0affd27309b0066df2c8ff7553f 100644
--- a/indra/llappearance/llwearable.cpp
+++ b/indra/llappearance/llwearable.cpp
@@ -779,7 +779,7 @@ void LLWearable::writeToAvatar(LLAvatarAppearance* avatarp)
 
 std::string terse_F32_to_string(F32 f)
 {
-	std::string r = fmt::format(fmt("{:.2f}"), f);
+	std::string r = fmt::format(FMT_STRING("{:.2f}"), f);
 	auto len = r.length();
 
     // "1.20"  -> "1.2"
diff --git a/indra/llaudio/llaudioengine_fmodstudio.cpp b/indra/llaudio/llaudioengine_fmodstudio.cpp
index 9fd8bd59683e32624d1bdefa8685cea7c9f73b46..f1feb92d8e194402f5f0448ce29d3497c7f69651 100644
--- a/indra/llaudio/llaudioengine_fmodstudio.cpp
+++ b/indra/llaudio/llaudioengine_fmodstudio.cpp
@@ -268,7 +268,7 @@ std::string LLAudioEngine_FMODSTUDIO::getDriverName(bool verbose)
 		U32 version;
 		if(!Check_FMOD_Error(mSystem->getVersion(&version), "FMOD::System::getVersion"))
 		{
-			return fmt::format(fmt("FMOD Studio {:1x}.{:02x}.{:02x}"), version >> 16, version >> 8 & 0x000000FF, version & 0x000000FF);
+			return fmt::format(FMT_STRING("FMOD Studio {:1x}.{:02x}.{:02x}"), version >> 16, version >> 8 & 0x000000FF, version & 0x000000FF);
 		}
 	}
 	return "FMOD Studio";
diff --git a/indra/llcharacter/llanimationstates.cpp b/indra/llcharacter/llanimationstates.cpp
index 2a5cda209e142d8844c064ce0cef36bc770caca6..6c1c7266c62a9b5cd0c716d46b38a447aae5f245 100644
--- a/indra/llcharacter/llanimationstates.cpp
+++ b/indra/llcharacter/llanimationstates.cpp
@@ -405,7 +405,7 @@ std::string LLAnimationLibrary::animationName( const LLUUID& id ) const
 	if (cptr)
 		return std::string(cptr);
 	else
-		return fmt::format(fmt("[{:s}]"), id.asString());
+		return fmt::format(FMT_STRING("[{:s}]"), id.asString());
 }
 
 // Animation states that the user can trigger as part of a gesture
diff --git a/indra/llcommon/llapr.cpp b/indra/llcommon/llapr.cpp
index 2e64ecccc02b2f0dff9a3935fc0df06f9fda6dd8..e5e5ca82774d02ce44e3d299c5d32bfef9ba176f 100644
--- a/indra/llcommon/llapr.cpp
+++ b/indra/llcommon/llapr.cpp
@@ -207,7 +207,7 @@ void LLVolatileAPRPool::clearVolatileAPRPool()
 	}
 	else
 	{
-		llassert_always_msg(mNumActiveRef > 0, fmt::format(fmt("Volatile APR Pool '{:s}' attempted to be cleared with {:d} references"), mName, mNumActiveRef));
+		llassert_always_msg(mNumActiveRef > 0, fmt::format(FMT_STRING("Volatile APR Pool '{:s}' attempted to be cleared with {:d} references"), mName, mNumActiveRef));
 	}
 
 	llassert(mNumTotalRef <= (FULL_VOLATILE_APR_POOL << 2)) ;
diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp
index a21c1b1103ca2d9f267d42840d5dfaac2188865b..164bb54e60e3323b3d0048c654f78b60ee3d5b37 100644
--- a/indra/llcommon/llerror.cpp
+++ b/indra/llcommon/llerror.cpp
@@ -614,7 +614,7 @@ namespace LLError
         default:          mLevelString = "XXX";     break;
 		};
 
-		mLocationString = fmt::format(fmt("{:s}({:d})"), abbreviateFile(mFile), mLine);
+		mLocationString = fmt::format(FMT_STRING("{:s}({:d})"), abbreviateFile(mFile), mLine);
 #if LL_WINDOWS
 		// DevStudio: __FUNCTION__ already includes the full class name
 #else
diff --git a/indra/llcommon/llinitparam.cpp b/indra/llcommon/llinitparam.cpp
index 3faac3af56079d64aba66df4b5792221b73bc517..164d3796ee902182489669df4b0fd1487b25aa54 100644
--- a/indra/llcommon/llinitparam.cpp
+++ b/indra/llcommon/llinitparam.cpp
@@ -194,7 +194,7 @@ namespace LLInitParam
 		{
 			if (!silent)
 			{
-				p.parserWarning(fmt::format(fmt("Failed to parse parameter \"{:s}\""), p.getCurrentElementName()));
+				p.parserWarning(fmt::format(FMT_STRING("Failed to parse parameter \"{:s}\""), p.getCurrentElementName()));
 			}
 			return false;
 		}
diff --git a/indra/llcommon/llinitparam.h b/indra/llcommon/llinitparam.h
index b8ab5c9ad7a608027b495b84893d1a7a298a84f8..7567dfb38a7e8460bd936d46b38d45a61c344a74 100644
--- a/indra/llcommon/llinitparam.h
+++ b/indra/llcommon/llinitparam.h
@@ -2163,7 +2163,7 @@ namespace LLInitParam
 			{
 				if (name_stack_range.first == name_stack_range.second)
 				{
-					//std::string message = fmt::format(fmt("Deprecated value {:s} ignored", getName());
+					//std::string message = fmt::format(FMT_STRING("Deprecated value {:s} ignored", getName());
 					//parser.parserWarning(message);
 					return true;
 				}
diff --git a/indra/llcommon/llmetricperformancetester.cpp b/indra/llcommon/llmetricperformancetester.cpp
index 0b256275c390e4f08fb4070ea9cbb14dd4326300..28ffac2d995487e4f45d1d9905ea6be55bcbc5c2 100644
--- a/indra/llcommon/llmetricperformancetester.cpp
+++ b/indra/llcommon/llmetricperformancetester.cpp
@@ -222,7 +222,7 @@ void LLMetricPerformanceTesterBasic::analyzePerformance(llofstream* os, LLSD* ba
 
 		if(in_base && in_current)
 		{				
-			*os << fmt::format(fmt("{:s}\n"), label) ;
+			*os << fmt::format(FMT_STRING("{:s}\n"), label) ;
 
 			for (const auto& metric_string : mMetricStrings)
             {
@@ -253,14 +253,14 @@ void LLMetricPerformanceTesterBasic::analyzePerformance(llofstream* os, LLSD* ba
 /*virtual*/ 
 void LLMetricPerformanceTesterBasic::compareTestResults(llofstream* os, std::string metric_string, S32 v_base, S32 v_current) 
 {
-	*os << fmt::format(fmt(" ,{:s}, {:d}, {:d}, {:d}, {:.4f}\n"), metric_string, v_base, v_current, 
+	*os << fmt::format(FMT_STRING(" ,{:s}, {:d}, {:d}, {:d}, {:.4f}\n"), metric_string, v_base, v_current, 
 						v_current - v_base, (v_base != 0) ? 100.f * v_current / v_base : 0) ;
 }
 
 /*virtual*/ 
 void LLMetricPerformanceTesterBasic::compareTestResults(llofstream* os, std::string metric_string, F32 v_base, F32 v_current) 
 {
-	*os << fmt::format(fmt(" ,{:s}, {:.4f}, {:.4f}, {:.4f}, {:.4f}\n"), metric_string.c_str(), v_base, v_current,
+	*os << fmt::format(FMT_STRING(" ,{:s}, {:.4f}, {:.4f}, {:.4f}, {:.4f}\n"), metric_string.c_str(), v_base, v_current,
 						v_current - v_base, (fabs(v_base) > 0.0001f) ? 100.f * v_current / v_base : 0.f ) ;
 }
 
diff --git a/indra/llcommon/llmetricperformancetester.h b/indra/llcommon/llmetricperformancetester.h
index 3853ddcb922c0f0a079cd03df53b6092ef19d4ae..8e73445c4e349fc5f4e13620059cb32c32605f2f 100644
--- a/indra/llcommon/llmetricperformancetester.h
+++ b/indra/llcommon/llmetricperformancetester.h
@@ -107,7 +107,7 @@ protected:
 	/**
 	 * @return Returns the label to be used for the current count. It's "TesterName"-"Count".
 	 */
-	std::string getCurrentLabelName() const { return fmt::format(fmt("{:s}-{:d}"), mName, mCount) ;}
+	std::string getCurrentLabelName() const { return fmt::format(FMT_STRING("{:s}-{:d}"), mName, mCount) ;}
 
 	/**
 	 * @brief Write a test record to the LLSD. Implementers need to overload this method.
diff --git a/indra/llcommon/llqueuedthread.cpp b/indra/llcommon/llqueuedthread.cpp
index 0881044b5e8e5e6948b2a6a102c780b26c54e979..83b5d3602897cf2266f039517f7f791b87194ed0 100644
--- a/indra/llcommon/llqueuedthread.cpp
+++ b/indra/llcommon/llqueuedthread.cpp
@@ -193,7 +193,7 @@ void LLQueuedThread::printQueueStats()
 	if (!mRequestQueue.empty())
 	{
 		QueuedRequest *req = *mRequestQueue.begin();
-		LL_INFOS() << fmt::format(fmt("Pending Requests:{:d} Current status:{:d}"), mRequestQueue.size(), req->getStatus()) << LL_ENDL;
+		LL_INFOS() << fmt::format(FMT_STRING("Pending Requests:{:d} Current status:{:d}"), mRequestQueue.size(), req->getStatus()) << LL_ENDL;
 	}
 	else
 	{
diff --git a/indra/llcommon/llsd.cpp b/indra/llcommon/llsd.cpp
index f76a28c619ee338c0f48be685eb5e7dcb6590774..bec0d43721282237241152db4b6672c4a672ac4c 100644
--- a/indra/llcommon/llsd.cpp
+++ b/indra/llcommon/llsd.cpp
@@ -260,7 +260,7 @@ namespace
 		{ return !llisnan(mValue) ? static_cast<LLSD::Integer>(mValue) : 0; }
 		
 	LLSD::String ImplReal::asString() const
-		{ return fmt::format(fmt("{:g}"), mValue); }
+		{ return fmt::format(FMT_STRING("{:g}"), mValue); }
 
 
 	class ImplString final
diff --git a/indra/llcommon/llsdparam.cpp b/indra/llcommon/llsdparam.cpp
index f9f82c7b82aa0a566c7d96640807c496d2bc264c..decff2f1210c2c71161a14e209f1a9ed00d103e9 100644
--- a/indra/llcommon/llsdparam.cpp
+++ b/indra/llcommon/llsdparam.cpp
@@ -117,7 +117,7 @@ void LLParamSDParser::writeSDImpl(LLSD& sd, const LLInitParam::BaseBlock& block,
 		it != mNameStack.end();
 		++it)
 	{
-		full_name.append(fmt::format(fmt("[{:s}]"), it->first));
+		full_name.append(fmt::format(FMT_STRING("[{:s}]"), it->first));
 	}
 
 	return full_name;
diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp
index ace405337b95c9b5ae734c2ef82c6fb782119d22..ca1fd19b3b0642b035284808a4ae3e634b66a0d2 100644
--- a/indra/llcommon/llstring.cpp
+++ b/indra/llcommon/llstring.cpp
@@ -1100,19 +1100,19 @@ std::string LLStringOps::getReadableNumber(F64 num)
 {
     if (fabs(num)>=1e9)
     {
-		return fmt::format(fmt("{:.2f}B"), num / 1e9);
+		return fmt::format(FMT_STRING("{:.2f}B"), num / 1e9);
     }
     else if (fabs(num)>=1e6)
     {
-		return fmt::format(fmt("{:.2f}M"), num / 1e6);
+		return fmt::format(FMT_STRING("{:.2f}M"), num / 1e6);
     }
     else if (fabs(num)>=1e3)
     {
-		return fmt::format(fmt("{:.2f}K"), num / 1e3);
+		return fmt::format(FMT_STRING("{:.2f}K"), num / 1e3);
     }
     else
     {
-		return fmt::format(fmt("{:.2f}"), num);
+		return fmt::format(FMT_STRING("{:.2f}"), num);
     }
 }
 
@@ -1349,7 +1349,7 @@ void LLStringUtil::formatNumber(std::string& numStr, const std::string& decimals
 
 		if (convertToF32(numStr, floatStr))
 		{
-			numStr = fmt::format(fmt("{:#.{}f}"), floatStr, intDecimals);
+			numStr = fmt::format(FMT_STRING("{:#.{}f}"), floatStr, intDecimals);
 		}
 	}
 }
diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h
index 562e64e98577725a2c844cc77c416a19ac137142..9bae167b8c27654b600ad41d8e35fcc907ec7816 100644
--- a/indra/llcommon/llstring.h
+++ b/indra/llcommon/llstring.h
@@ -418,7 +418,7 @@ public:
 		const std::from_chars_result& ret = std::from_chars(str.data() + str.find_first_not_of(WHITESPACE), end, num);
 		if (ret.ec == std::errc::invalid_argument || ret.ec == std::errc::result_out_of_range)
 		{
-			LL_WARNS() << fmt::format(fmt("Failed to parse typeid<{:s}> from string \"{:s}\" with ec: {:d}"), typeid(U).name(), str, ret.ec) << LL_ENDL;
+			LL_WARNS() << fmt::format(FMT_STRING("Failed to parse typeid<{:s}> from string \"{:s}\" with ec: {:d}"), typeid(U).name(), str, ret.ec) << LL_ENDL;
 			return false;
 		}
 		else
diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index b5166a7719fa16782971dc0172f759f3af35ec93..f02ecac42a0519b856b965601ec9d3ff8a47ceb4 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -228,14 +228,14 @@ LLOSInfo::LLOSInfo() :
 		mMajorVer = osvi.dwMajorVersion;
 		mMinorVer = osvi.dwMinorVersion;
 		mBuild = osvi.dwBuildNumber;
-		tmpstr = fmt::format(fmt("{:s}(Build {:d})"), service_pack, mBuild);
+		tmpstr = fmt::format(FMT_STRING("{:s}(Build {:d})"), service_pack, mBuild);
 	}
 	else
 	{
 		mMajorVer = 0;
 		mMinorVer = 0;
 		mBuild = 0;
-		tmpstr = fmt::format(fmt("{:s}(Build {:d})"), service_pack, 0);
+		tmpstr = fmt::format(FMT_STRING("{:s}(Build {:d})"), service_pack, 0);
 	}
 
 	// Display version, service pack (if any), and build number.
diff --git a/indra/llcommon/lltimer.cpp b/indra/llcommon/lltimer.cpp
index 3c81e2dc31a72bdeb03b72ec4c2151ad3fe6aca1..3b5d5135cc4930813ee442ba0513b9b1832c1dda 100644
--- a/indra/llcommon/lltimer.cpp
+++ b/indra/llcommon/lltimer.cpp
@@ -551,7 +551,7 @@ void microsecondsToTimecodeString(U64MicrosecondsImplicit current_time, std::str
 	subframes = current_time / (U64)42;
 	subframes %= 100;
 
-	tcstring = fmt::format(fmt("{:3d}:{:2d}:{:2d}:{:2d}.{:2d}"), hours, minutes, seconds, frames, subframes);
+	tcstring = fmt::format(FMT_STRING("{:3d}:{:2d}:{:2d}:{:2d}.{:2d}"), hours, minutes, seconds, frames, subframes);
 }
 
 
diff --git a/indra/llcommon/lluri.cpp b/indra/llcommon/lluri.cpp
index 1821b46328b90cc082cefbf45ab1d56abb375ee6..9b1ab4b89aeb3a606dd2bac4d52c3781cf0af5eb 100644
--- a/indra/llcommon/lluri.cpp
+++ b/indra/llcommon/lluri.cpp
@@ -521,7 +521,7 @@ LLURI LLURI::buildHTTP(const std::string& scheme,
 	const LLSD& path,
 	const LLSD& query)
 {
-	return buildHTTP(fmt::format(fmt("{:s}://{:s}"), scheme, prefix), path, query);
+	return buildHTTP(fmt::format(FMT_STRING("{:s}://{:s}"), scheme, prefix), path, query);
 }
 
 // static
@@ -529,7 +529,7 @@ LLURI LLURI::buildHTTP(const std::string& host,
 					   const U32& port,
 					   const LLSD& path)
 {
-	return LLURI::buildHTTP(fmt::format(fmt("{:s}:{:d}"), host, port), path);
+	return LLURI::buildHTTP(fmt::format(FMT_STRING("{:s}:{:d}"), host, port), path);
 }
 
 // static
@@ -538,7 +538,7 @@ LLURI LLURI::buildHTTP(const std::string& host,
 					   const LLSD& path,
 					   const LLSD& query)
 {
-	return LLURI::buildHTTP(fmt::format(fmt("{:s}:{:d}"), host, port), path, query);
+	return LLURI::buildHTTP(fmt::format(FMT_STRING("{:s}:{:d}"), host, port), path, query);
 }
 
 std::string LLURI::asString() const
diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp
index fbc6b45dbf35d8415b326c256d7f6dbd848f7e0a..728192e35a27aa75ef85a92b653743cd58785c6e 100644
--- a/indra/llimage/llimage.cpp
+++ b/indra/llimage/llimage.cpp
@@ -680,7 +680,7 @@ U8* LLImageBase::allocateData(S32 size)
 		size = mWidth * mHeight * mComponents;
 		if (size <= 0)
 		{
-			LL_WARNS() << fmt::format(fmt("LLImageBase::allocateData called with bad dimensions: {:d}x{:d}x{:d}"), mWidth, mHeight, mComponents) << LL_ENDL;
+			LL_WARNS() << fmt::format(FMT_STRING("LLImageBase::allocateData called with bad dimensions: {:d}x{:d}x{:d}"), mWidth, mHeight, mComponents) << LL_ENDL;
 			mBadBufferAllocation = true;
 		}
 	}	
diff --git a/indra/llimage/llimagedxt.cpp b/indra/llimage/llimagedxt.cpp
index f9d8c3f7b36beedc87a855032273deca5a39e694..f2837fce34d93ce1697de2ef83ec37e2850e69dc 100644
--- a/indra/llimage/llimagedxt.cpp
+++ b/indra/llimage/llimagedxt.cpp
@@ -426,7 +426,7 @@ bool LLImageDXT::convertToDXR()
 	  case FORMAT_DXT4: newformat = FORMAT_DXR4; break;
 	  case FORMAT_DXT5: newformat = FORMAT_DXR5; break;
 	  default:
-		LL_WARNS() << "convertToDXR: can not convert format: " << fmt::format(fmt("{:#08x}"),getFourCC(mFileFormat)) << LL_ENDL;
+		LL_WARNS() << "convertToDXR: can not convert format: " << fmt::format(FMT_STRING("{:#08x}"),getFourCC(mFileFormat)) << LL_ENDL;
 		return false;
 	}
 	mFileFormat = newformat;
diff --git a/indra/llmath/llvolumemgr.cpp b/indra/llmath/llvolumemgr.cpp
index 797adb8511a2f5669c6a1ee2e0a53265716a6c21..a54539c21c929c64bc525958ec4d4db6084f47b3 100644
--- a/indra/llmath/llvolumemgr.cpp
+++ b/indra/llmath/llvolumemgr.cpp
@@ -386,7 +386,7 @@ F32 LLVolumeLODGroup::dump()
 	}
 	usage = usage / (F32)NUM_LODS;
 
-	std::string dump_str = fmt::format(fmt("{:.3f} {:d} {:d} {:d} {:d}"), usage, mAccessCount[0], mAccessCount[1], mAccessCount[2], mAccessCount[3]);
+	std::string dump_str = fmt::format(FMT_STRING("{:.3f} {:d} {:d} {:d} {:d}"), usage, mAccessCount[0], mAccessCount[1], mAccessCount[2], mAccessCount[3]);
 
 	LL_INFOS() << dump_str << LL_ENDL;
 	return usage;
diff --git a/indra/llmessage/llhost.cpp b/indra/llmessage/llhost.cpp
index 90eff4922b1ae696ba6de8b174197067bf1554d8..f172adb9e8f671797d3a860a7e80c29584905f7c 100644
--- a/indra/llmessage/llhost.cpp
+++ b/indra/llmessage/llhost.cpp
@@ -60,7 +60,7 @@ LLHost::LLHost(const std::string& ip_and_port)
 
 std::string LLHost::getString() const
 {
-	return fmt::format(fmt("{:s}:{:d}"), u32_to_ip_string(mIP), mPort);
+	return fmt::format(FMT_STRING("{:s}:{:d}"), u32_to_ip_string(mIP), mPort);
 }
 
 
diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp
index af4863228d331291cb4df303e499103548933c2a..0d3517a830a59c7dac01e3f32b476a36360ea1c6 100644
--- a/indra/llui/llfloaterreg.cpp
+++ b/indra/llui/llfloaterreg.cpp
@@ -367,7 +367,7 @@ std::string LLFloaterReg::declareRectControl(const std::string& name)
 {
 	std::string controlname = getRectControlName(name);
 	LLFloater::getControlGroup()->declareRect(controlname, LLRect(),
-											  fmt::format(fmt("Window Size for {:s}"), name),
+											  fmt::format(FMT_STRING("Window Size for {:s}"), name),
 											  LLControlVariable::PERSIST_NONDFT);
 	return controlname;
 }
@@ -377,7 +377,7 @@ std::string LLFloaterReg::declarePosXControl(const std::string& name)
 	std::string controlname = std::string("floater_pos_") + getBaseControlName(name) + "_x";
 	LLFloater::getControlGroup()->declareF32(controlname, 
 											10.f,
-											fmt::format(fmt("Window X Position for {:s}"), name),
+											fmt::format(FMT_STRING("Window X Position for {:s}"), name),
 											LLControlVariable::PERSIST_NONDFT);
 	return controlname;
 }
@@ -387,7 +387,7 @@ std::string LLFloaterReg::declarePosYControl(const std::string& name)
 	std::string controlname = std::string("floater_pos_") + getBaseControlName(name) + "_y";
 	LLFloater::getControlGroup()->declareF32(controlname,
 											10.f,
-											fmt::format(fmt("Window Y Position for {:s}"), name),
+											fmt::format(FMT_STRING("Window Y Position for {:s}"), name),
 											LLControlVariable::PERSIST_NONDFT);
 
 	return controlname;
@@ -414,7 +414,7 @@ std::string LLFloaterReg::declareVisibilityControl(const std::string& name)
 {
 	std::string controlname = getVisibilityControlName(name);
 	LLFloater::getControlGroup()->declareBOOL(controlname, FALSE,
-												 fmt::format(fmt("Window Visibility for {:s}"), name),
+												 fmt::format(FMT_STRING("Window Visibility for {:s}"), name),
 												 LLControlVariable::PERSIST_NONDFT);
 	return controlname;
 }
@@ -424,7 +424,7 @@ std::string LLFloaterReg::declareDockStateControl(const std::string& name)
 {
 	std::string controlname = getDockStateControlName(name);
 	LLFloater::getControlGroup()->declareBOOL(controlname, TRUE,
-												 fmt::format(fmt("Window Docking state for {:s}"), name),
+												 fmt::format(FMT_STRING("Window Docking state for {:s}"), name),
 												 LLControlVariable::PERSIST_NONDFT);
 	return controlname;
 
diff --git a/indra/llui/llmultisliderctrl.cpp b/indra/llui/llmultisliderctrl.cpp
index 0cf012ca8cf00007a0f48dea736e4a1c4a56ce25..66992e3a449c0744a47a04e67d94fc0f9ac9234a 100644
--- a/indra/llui/llmultisliderctrl.cpp
+++ b/indra/llui/llmultisliderctrl.cpp
@@ -309,7 +309,7 @@ void LLMultiSliderCtrl::updateText()
 		F32 displayed_value = (F32)(floor(getCurSliderValue() * pow(10.0, (F64)mPrecision) + 0.5) / pow(10.0, (F64)mPrecision));
 
 		std::string format = llformat("%%.%df", mPrecision);
-		std::string text = fmt::format(fmt("{:.{}f}"), displayed_value, mPrecision); // llformat(format.c_str(), displayed_value);
+		std::string text = fmt::format(FMT_STRING("{:.{}f}"), displayed_value, mPrecision); // llformat(format.c_str(), displayed_value);
 		if( mEditor )
 		{
 			mEditor->setText( text );
diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp
index 8139716c41871686018f4799c42211cb28b4070e..435214c2cdece11503dbe7b10002cd53249db3ce 100644
--- a/indra/llui/llpanel.cpp
+++ b/indra/llui/llpanel.cpp
@@ -601,7 +601,7 @@ std::string LLPanel::getString(const std::string_view name, const LLStringUtil::
 		formatted_string.setArgList(args);
 		return formatted_string.getString();
 	}
-	std::string err_str = fmt::format(fmt("Failed to find string {} in panel {}"), name, getName()); //*TODO: Translate
+	std::string err_str = fmt::format(FMT_STRING("Failed to find string {} in panel {}"), name, getName()); //*TODO: Translate
 	if(LLUI::getInstance()->mSettingGroups["config"]->getBOOL("QAMode"))
 	{
 		LL_ERRS() << err_str << LL_ENDL;
@@ -620,7 +620,7 @@ std::string LLPanel::getString(const std::string_view name) const
 	{
 		return found_it->second;
 	}
-	std::string err_str = fmt::format(fmt("Failed to find string {} in panel {}"), name, getName()); //*TODO: Translate
+	std::string err_str = fmt::format(FMT_STRING("Failed to find string {} in panel {}"), name, getName()); //*TODO: Translate
 	if(LLUI::getInstance()->mSettingGroups["config"]->getBOOL("QAMode"))
 	{
 		LL_ERRS() << err_str << LL_ENDL;
diff --git a/indra/llui/llresmgr.cpp b/indra/llui/llresmgr.cpp
index a931ac312158b57d02c25a35d6934cad5b60e76e..9bca835c0d3e3acc95a7e8e85c1115fbe1bddb50 100644
--- a/indra/llui/llresmgr.cpp
+++ b/indra/llui/llresmgr.cpp
@@ -217,7 +217,7 @@ void LLResMgr::getIntegerString( std::string& output, S32 input ) const
 			}
 			else
 			{
-				fraction_string = fmt::format(fmt("{:3d}"), fraction);
+				fraction_string = fmt::format(FMT_STRING("{:3d}"), fraction);
 			}
 			output = fraction_string;
 		}
diff --git a/indra/llui/llsliderctrl.cpp b/indra/llui/llsliderctrl.cpp
index 07a6921fa7cf78fba27e5d29458c29fb68aca6a4..8590c8fdb10b5c66473debb91f7e5c407141c616 100644
--- a/indra/llui/llsliderctrl.cpp
+++ b/indra/llui/llsliderctrl.cpp
@@ -266,7 +266,7 @@ void LLSliderCtrl::updateText()
 		// Don't display very small negative values as -0.000
 		F32 displayed_value = (F32)(floor(getValueF32() * pow(10.0, (F64)mPrecision) + 0.5) / pow(10.0, (F64)mPrecision));
 
-		std::string text = fmt::format(fmt("{:.{}f}"), displayed_value, mPrecision);
+		std::string text = fmt::format(FMT_STRING("{:.{}f}"), displayed_value, mPrecision);
 		if( mEditor )
 		{
 			// Setting editor text here to "" before using actual text is here because if text which
diff --git a/indra/llui/llspinctrl.cpp b/indra/llui/llspinctrl.cpp
index d4a89e2c93a3aa715b708cb9d88a6e01f7f30cc0..f781a64ace61ea222315e2d16496cc6a03123bf0 100644
--- a/indra/llui/llspinctrl.cpp
+++ b/indra/llui/llspinctrl.cpp
@@ -341,7 +341,7 @@ void LLSpinCtrl::updateEditor()
 //		displayed_value = 0.f;
 //	}
 
-	std::string text = fmt::format(fmt("{:.{}f}"), displayed_value, mPrecision);
+	std::string text = fmt::format(FMT_STRING("{:.{}f}"), displayed_value, mPrecision);
 	mEditor->setText( text );
 }
 
diff --git a/indra/llui/llstatbar.cpp b/indra/llui/llstatbar.cpp
index 9dd6dec1464ebfcdd57d5014c3770ce2e32b53a8..adf8ac8c29ca1b893a2df78d49a85c91aff86a10 100644
--- a/indra/llui/llstatbar.cpp
+++ b/indra/llui/llstatbar.cpp
@@ -628,7 +628,7 @@ void LLStatBar::drawLabelAndValue( F32 value, std::string &label, LLRect &bar_re
 		LLFontGL::LEFT, LLFontGL::TOP);
 
 	std::string value_str	= !llisnan(value)
-							? fmt::format(fmt("{:10.{}f} {:s}"), value, decimal_digits, label)
+							? fmt::format(FMT_STRING("{:10.{}f} {:s}"), value, decimal_digits, label)
 							: mNAString;
 
 	// Draw the current value.
@@ -700,7 +700,7 @@ void LLStatBar::drawTicks( F32 min, F32 max, F32 value_scale, LLRect &bar_rect )
 				decimal_digits = 0;
 			}
 
-			std::string tick_label = fmt::format(fmt("{:.{}f}"), tick_value, decimal_digits);
+			std::string tick_label = fmt::format(FMT_STRING("{:.{}f}"), tick_value, decimal_digits);
 			S32 tick_label_width = mFontMono->getWidth(tick_label);
 			if (mOrientation == HORIZONTAL)
 			{
diff --git a/indra/newview/llagentui.cpp b/indra/newview/llagentui.cpp
index 1464a8816e777f4dcdc417030d53fe16a069a1ad..3352eb2c07c8567d2e9695f165e00c0d150f4b94 100644
--- a/indra/newview/llagentui.cpp
+++ b/indra/newview/llagentui.cpp
@@ -125,29 +125,29 @@ BOOL LLAgentUI::buildLocationString(std::string& str, ELocationFormat fmt,const
 		switch (fmt)
 		{
 		case LOCATION_FORMAT_LANDMARK:
-			buffer = fmt::format(fmt("{:.100s}"), region_name);
+			buffer = fmt::format(FMT_STRING("{:.100s}"), region_name);
 			break;
 		case LOCATION_FORMAT_NORMAL:
-			buffer = fmt::format(fmt("{:s}"), region_name);
+			buffer = fmt::format(FMT_STRING("{:s}"), region_name);
 			break;
 		case LOCATION_FORMAT_NORMAL_COORDS:
-			buffer = fmt::format(fmt("{:s} ({:d}, {:d}, {:d})"),
+			buffer = fmt::format(FMT_STRING("{:s} ({:d}, {:d}, {:d})"),
 				region_name,
 				pos_x, pos_y, pos_z);
 			break;
 		case LOCATION_FORMAT_NO_COORDS:
-			buffer = fmt::format(fmt("{:s}{:s}{:s}"),
+			buffer = fmt::format(FMT_STRING("{:s}{:s}{:s}"),
 				region_name,
 				sim_access_string.empty() ? LLStringUtil::null : " - ",
 				sim_access_string);
 			break;
 		case LOCATION_FORMAT_NO_MATURITY:
-			buffer = fmt::format(fmt("{:s} ({:d}, {:d}, {:d})"),
+			buffer = fmt::format(FMT_STRING("{:s} ({:d}, {:d}, {:d})"),
 				region_name,
 				pos_x, pos_y, pos_z);
 			break;
 		case LOCATION_FORMAT_FULL:
-			buffer = fmt::format(fmt("{:s} ({:d}, {:d}, {:d}){:s}{:s}"),
+			buffer = fmt::format(FMT_STRING("{:s} ({:d}, {:d}, {:d}){:s}{:s}"),
 				region_name,
 				pos_x, pos_y, pos_z,
 				sim_access_string.empty() ? LLStringUtil::null : " - ",
@@ -161,31 +161,31 @@ BOOL LLAgentUI::buildLocationString(std::string& str, ELocationFormat fmt,const
 		switch (fmt)
 		{
 		case LOCATION_FORMAT_LANDMARK:
-			buffer = fmt::format(fmt("{:.100s}"), parcel_name);
+			buffer = fmt::format(FMT_STRING("{:.100s}"), parcel_name);
 			break;
 		case LOCATION_FORMAT_NORMAL:
-			buffer = fmt::format(fmt("{:s}, {:s}"), parcel_name, region_name);
+			buffer = fmt::format(FMT_STRING("{:s}, {:s}"), parcel_name, region_name);
 			break;
 		case LOCATION_FORMAT_NORMAL_COORDS:
-			buffer = fmt::format(fmt("{:s} ({:d}, {:d}, {:d})"),
+			buffer = fmt::format(FMT_STRING("{:s} ({:d}, {:d}, {:d})"),
 				parcel_name,
 				pos_x, pos_y, pos_z);
 			break;
 		case LOCATION_FORMAT_NO_MATURITY:
-			buffer = fmt::format(fmt("{:s}, {:s} ({:d}, {:d}, {:d})"),
+			buffer = fmt::format(FMT_STRING("{:s}, {:s} ({:d}, {:d}, {:d})"),
 				parcel_name,
 				region_name,
 				pos_x, pos_y, pos_z);
 			break;
 		case LOCATION_FORMAT_NO_COORDS:
-			buffer = fmt::format(fmt("{:s}, {:s}{:s}{:s}"),
+			buffer = fmt::format(FMT_STRING("{:s}, {:s}{:s}{:s}"),
 							  parcel_name,
 							  region_name,
 							  sim_access_string.empty() ? LLStringUtil::null : " - ",
 							  sim_access_string);
 				break;
 		case LOCATION_FORMAT_FULL:
-			buffer = fmt::format(fmt("{:s}, {:s} ({:d}, {:d}, {:d}){:s}{:s}"),
+			buffer = fmt::format(FMT_STRING("{:s}, {:s} ({:d}, {:d}, {:d}){:s}{:s}"),
 				parcel_name,
 				region_name,
 				pos_x, pos_y, pos_z,
diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp
index 4ebec69a7f19419bfe800d06cd93bd4912432130..7ce9852f80664ba11c2df47c3104bcce05e23068 100644
--- a/indra/newview/llavatarlistitem.cpp
+++ b/indra/newview/llavatarlistitem.cpp
@@ -334,7 +334,7 @@ void LLAvatarListItem::setDistance(F32 distance)
 	if (distance == 0)
 		mDistance->setValue(LLStringUtil::null);
 	else
-		mDistance->setValue(fmt::format(fmt("{:0.1f}m"), distance));
+		mDistance->setValue(fmt::format(FMT_STRING("{:0.1f}m"), distance));
 }
 
 void LLAvatarListItem::showLastInteractionTime(bool show)
diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp
index 29742b59ebc77428ac88fb3d214131296058ac53..7c339dae839c86ac3ffc099bd2d6909057feaeef 100644
--- a/indra/newview/llfasttimerview.cpp
+++ b/indra/newview/llfasttimerview.cpp
@@ -326,11 +326,11 @@ static std::string get_tooltip(BlockTimerStatHandle& timer, S32 history_index, P
 	if (history_index == 0)
 	{
 		// by default, show average number of call
-		tooltip = fmt::format(fmt("{:s} ({:d} ms, {:d} calls)"), timer.getName(), (S32)F64Milliseconds(frame_recording.getPeriodMean (timer, RUNNING_AVERAGE_WIDTH)).value(), (S32)frame_recording.getPeriodMean(timer.callCount(), RUNNING_AVERAGE_WIDTH));
+		tooltip = fmt::format(FMT_STRING("{:s} ({:d} ms, {:d} calls)"), timer.getName(), (S32)F64Milliseconds(frame_recording.getPeriodMean (timer, RUNNING_AVERAGE_WIDTH)).value(), (S32)frame_recording.getPeriodMean(timer.callCount(), RUNNING_AVERAGE_WIDTH));
 	}
 	else
 	{
-		tooltip = fmt::format(fmt("{:s} ({:d} ms, {:d} calls)"), timer.getName().c_str(), (S32)F64Milliseconds(frame_recording.getPrevRecording(history_index).getSum(timer)).value(), (S32)frame_recording.getPrevRecording(history_index).getSum(timer.callCount()));
+		tooltip = fmt::format(FMT_STRING("{:s} ({:d} ms, {:d} calls)"), timer.getName().c_str(), (S32)F64Milliseconds(frame_recording.getPrevRecording(history_index).getSum(timer)).value(), (S32)frame_recording.getPrevRecording(history_index).getSum(timer.callCount()));
 	}
 	return tooltip;
 }
@@ -469,7 +469,7 @@ void saveChart(const std::string& label, const char* suffix, LLImageRaw* scratch
 		result->encode(scratch, 0.f);
 
 		std::string ext = result->getExtension();
-		std::string filename = fmt::format(fmt("{:s}_{:s}.{:s}"), label, suffix, ext);
+		std::string filename = fmt::format(FMT_STRING("{:s}_{:s}.{:s}"), label, suffix, ext);
 	
 		std::string out_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, filename);
 		result->save(out_file);
@@ -906,7 +906,7 @@ void LLFastTimerView::doAnalysisDefault(std::string baseline, std::string target
 
 		LLSD::Real perc = diff/a * 100;
 
-		os << fmt::format(fmt("{:s}, {:.2f}, {:.4f}, {:.4f}, {:.4f}, {:.4f}, {:.4f}, {:.4f}, {:.4f}, {:d}, {:d}, {:.4f}, {:.4f}, {:.4f}, {:.4f}, {:.4f}, {:.4f}, {:d}, {:d}\n"),
+		os << fmt::format(FMT_STRING("{:s}, {:.2f}, {:.4f}, {:.4f}, {:.4f}, {:.4f}, {:.4f}, {:.4f}, {:.4f}, {:d}, {:d}, {:.4f}, {:.4f}, {:.4f}, {:.4f}, {:.4f}, {:.4f}, {:d}, {:d}\n"),
 			label.c_str(), 
 			(F32) perc, 
 			(F32) (current[label]["TotalTime"].asReal()/session_time * 100.0), 
@@ -1017,7 +1017,7 @@ void LLFastTimerView::printLineStats()
 			}
 			F32Milliseconds ms = ticks;
 
-			timer_stat.append(fmt::format(fmt("{:.1f}"), ms.value()));
+			timer_stat.append(fmt::format(FMT_STRING("{:.1f}"), ms.value()));
 
 			//if (idp->getTreeNode().mCollapsed)
 			//{
@@ -1189,13 +1189,13 @@ void LLFastTimerView::drawLineGraph()
 	switch(mDisplayType)
 	{
 	case DISPLAY_TIME:
-		axis_label = fmt::format(fmt("{:4.2f} ms"), F32Milliseconds(max_time).value());
+		axis_label = fmt::format(FMT_STRING("{:4.2f} ms"), F32Milliseconds(max_time).value());
 		break;
 	case DISPLAY_CALLS:
-		axis_label = fmt::format(fmt("{:d} calls"), max_calls);
+		axis_label = fmt::format(FMT_STRING("{:d} calls"), max_calls);
 		break;
 	case DISPLAY_HZ:
-		axis_label = fmt::format(fmt("{:4.2f} Hz"), max_time.value() ? 1.f / max_time.value() : 0.f);
+		axis_label = fmt::format(FMT_STRING("{:4.2f} Hz"), max_time.value() ? 1.f / max_time.value() : 0.f);
 		break;
 	}
 
@@ -1272,13 +1272,13 @@ void LLFastTimerView::drawLegend()
 			switch(mDisplayType)
 			{
 			case DISPLAY_TIME:
-				timer_label = fmt::format(fmt("{:s} [{:.1f}]"),idp->getName(),ms.value());
+				timer_label = fmt::format(FMT_STRING("{:s} [{:.1f}]"),idp->getName(),ms.value());
 				break;
 			case DISPLAY_CALLS:
-				timer_label = fmt::format(fmt("{:s} ({:d})"),idp->getName(),calls);
+				timer_label = fmt::format(FMT_STRING("{:s} ({:d})"),idp->getName(),calls);
 				break;
 			case DISPLAY_HZ:
-				timer_label = fmt::format(fmt("{:s} <{:.1f}>"), idp->getName(), ms.value() ? (1.f / ms.value()) : 0.f);
+				timer_label = fmt::format(FMT_STRING("{:s} <{:.1f}>"), idp->getName(), ms.value() ? (1.f / ms.value()) : 0.f);
 				break;
 			}
 			dx = (TEXT_HEIGHT+4) + get_depth(idp)*8;
@@ -1378,22 +1378,22 @@ void LLFastTimerView::drawTicks()
 		S32 x;
 		S32 barw = mBarRect.getWidth();
 
-		tick_label = fmt::format(fmt("{:.1f} ms |"), ((F32)ms.value())*.25f);
+		tick_label = fmt::format(FMT_STRING("{:.1f} ms |"), ((F32)ms.value())*.25f);
 		x = mBarRect.mLeft + barw/4 - mFontMonospace->getWidth(tick_label);
 		mFontMonospace->renderUTF8(tick_label, 0, x, mBarRect.mTop, LLColor4::white,
 			LLFontGL::LEFT, LLFontGL::TOP);
 
-		tick_label = fmt::format(fmt("{:.1f} ms |"), ((F32)ms.value())*.50f);
+		tick_label = fmt::format(FMT_STRING("{:.1f} ms |"), ((F32)ms.value())*.50f);
 		x = mBarRect.mLeft + barw/2 - mFontMonospace->getWidth(tick_label);
 		mFontMonospace->renderUTF8(tick_label, 0, x, mBarRect.mTop, LLColor4::white,
 			LLFontGL::LEFT, LLFontGL::TOP);
 
-		tick_label = fmt::format(fmt("{:.1f} ms |"), ((F32)ms.value())*.75f);
+		tick_label = fmt::format(FMT_STRING("{:.1f} ms |"), ((F32)ms.value())*.75f);
 		x = mBarRect.mLeft + (barw*3)/4 - mFontMonospace->getWidth(tick_label);
 		mFontMonospace->renderUTF8(tick_label, 0, x, mBarRect.mTop, LLColor4::white,
 			LLFontGL::LEFT, LLFontGL::TOP);
 
-		tick_label = fmt::format(fmt("{:d} ms |"), (U32)ms.value());
+		tick_label = fmt::format(FMT_STRING("{:d} ms |"), (U32)ms.value());
 		x = mBarRect.mLeft + barw - mFontMonospace->getWidth(tick_label);
 		mFontMonospace->renderUTF8(tick_label, 0, x, mBarRect.mTop, LLColor4::white,
 			LLFontGL::LEFT, LLFontGL::TOP);
diff --git a/indra/newview/llfloatermessagelog.cpp b/indra/newview/llfloatermessagelog.cpp
index 4d27dd14004d871e23e778455a29b5e55b23a19b..edd7f8690c0af0e17055d75f6f51ecc77c4a9279 100644
--- a/indra/newview/llfloatermessagelog.cpp
+++ b/indra/newview/llfloatermessagelog.cpp
@@ -296,7 +296,7 @@ void LLFloaterMessageLog::refreshNetList()
 			{
 				std::string name = regionp->getName();
 				if(name.empty())
-					name = fmt::format(fmt("{:s} (awaiting region name)"), itemp->mCircuitData->getHost().getString());
+					name = fmt::format(FMT_STRING("{:s} (awaiting region name)"), itemp->mCircuitData->getHost().getString());
 				itemp->mName = name;
 				itemp->mPreviousRegionName = name;
 				itemp->mHandle = regionp->getHandle();
@@ -305,7 +305,7 @@ void LLFloaterMessageLog::refreshNetList()
 			{
 				itemp->mName = itemp->mCircuitData->getHost().getString();
 				if(!itemp->mPreviousRegionName.empty())
-					itemp->mName.append(fmt::format(fmt(" (was {:s})"), itemp->mPreviousRegionName));
+					itemp->mName.append(fmt::format(FMT_STRING(" (was {:s})"), itemp->mPreviousRegionName));
 			}
 		}
 		else
@@ -339,7 +339,7 @@ void LLFloaterMessageLog::refreshNetList()
 		for(S32 i = 0; i < 2; ++i)
 		{
 			LLSD& icon_column = element["columns"][i + 1];
-			icon_column["column"] = fmt::format(fmt("icon{:d}"), i);
+			icon_column["column"] = fmt::format(FMT_STRING("icon{:d}"), i);
 			icon_column["type"] = "icon";
 			icon_column["value"] = "";
 		}
@@ -384,30 +384,30 @@ void LLFloaterMessageLog::refreshNetInfo(BOOL force)
 		{
             std::string info;
             info.reserve(512);
-		    (fmt::format(fmt("{:s}, {:d}\n--------------------------------\n\n"), itemp->mName, itemp->mHandle));
+		    (fmt::format(FMT_STRING("{:s}, {:d}\n--------------------------------\n\n"), itemp->mName, itemp->mHandle));
 			if(itemp->mCircuitData)
 			{
 				LLCircuitData* cdp = itemp->mCircuitData;
 				info.append("Circuit\n--------------------------------\n");
-				info.append(fmt::format(fmt(" * Host: {:s}\n"), cdp->getHost().getString()));
+				info.append(fmt::format(FMT_STRING(" * Host: {:s}\n"), cdp->getHost().getString()));
 				S32 seconds = (S32)cdp->getAgeInSeconds();
 				S32 minutes = seconds / 60;
 				seconds = seconds % 60;
 				S32 hours = minutes / 60;
 				minutes = minutes % 60;
-				info.append(fmt::format(fmt(" * Age: {:d}h {:d}m {:d}s\n"), hours, minutes, seconds));
-				info.append(fmt::format(fmt(" * Alive: {:s}\n"), cdp->isAlive() ? "yes" : "no"));
-				info.append(fmt::format(fmt(" * Blocked: {:s}\n"), cdp->isBlocked() ? "yes" : "no"));
-				info.append(fmt::format(fmt(" * Allow timeout: {:s}\n"), cdp->getAllowTimeout() ? "yes" : "no"));
-				info.append(fmt::format(fmt(" * Trusted: {:s}\n"), cdp->getTrusted() ? "yes" : "no"));
-				info.append(fmt::format(fmt(" * Ping delay: {:d}\n"), cdp->getPingDelay().value()));
-				info.append(fmt::format(fmt(" * Packets out: {:d}\n"), cdp->getPacketsOut()));
-				info.append(fmt::format(fmt(" * Bytes out: {:d}\n"), cdp->getBytesOut().value()));
-				info.append(fmt::format(fmt(" * Packets in: {:d}\n"), cdp->getPacketsIn()));
-				info.append(fmt::format(fmt(" * Bytes in: {:d}\n"), cdp->getBytesIn().value()));
-				info.append(fmt::format(fmt(" * Endpoint ID: {:s}\n"), cdp->getLocalEndPointID().asString()));
-				info.append(fmt::format(fmt(" * Remote ID: {:s}\n"), cdp->getRemoteID().asString()));
-				info.append(fmt::format(fmt(" * Remote session ID: {:s}\n\n"), cdp->getRemoteSessionID().asString()));
+				info.append(fmt::format(FMT_STRING(" * Age: {:d}h {:d}m {:d}s\n"), hours, minutes, seconds));
+				info.append(fmt::format(FMT_STRING(" * Alive: {:s}\n"), cdp->isAlive() ? "yes" : "no"));
+				info.append(fmt::format(FMT_STRING(" * Blocked: {:s}\n"), cdp->isBlocked() ? "yes" : "no"));
+				info.append(fmt::format(FMT_STRING(" * Allow timeout: {:s}\n"), cdp->getAllowTimeout() ? "yes" : "no"));
+				info.append(fmt::format(FMT_STRING(" * Trusted: {:s}\n"), cdp->getTrusted() ? "yes" : "no"));
+				info.append(fmt::format(FMT_STRING(" * Ping delay: {:d}\n"), cdp->getPingDelay().value()));
+				info.append(fmt::format(FMT_STRING(" * Packets out: {:d}\n"), cdp->getPacketsOut()));
+				info.append(fmt::format(FMT_STRING(" * Bytes out: {:d}\n"), cdp->getBytesOut().value()));
+				info.append(fmt::format(FMT_STRING(" * Packets in: {:d}\n"), cdp->getPacketsIn()));
+				info.append(fmt::format(FMT_STRING(" * Bytes in: {:d}\n"), cdp->getBytesIn().value()));
+				info.append(fmt::format(FMT_STRING(" * Endpoint ID: {:s}\n"), cdp->getLocalEndPointID().asString()));
+				info.append(fmt::format(FMT_STRING(" * Remote ID: {:s}\n"), cdp->getRemoteID().asString()));
+				info.append(fmt::format(FMT_STRING(" * Remote session ID: {:s}\n\n"), cdp->getRemoteSessionID().asString()));
 			}
 
 			getChild<LLTextBase>("net_info")->setText(info);
diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp
index 0c201cefe6b1f65b70f879754cb86b7ba2f89b23..bbdc2bcb6c3960671ca101531ff15875292fde03 100644
--- a/indra/newview/llgroupmgr.cpp
+++ b/indra/newview/llgroupmgr.cpp
@@ -937,7 +937,7 @@ static void formatDateString(std::string &date_string)
 		S32 day		= std::stoi(result[2]);
 
 		// ISO 8601 date format
-		date_string = fmt::format(fmt("{}/{}/{}"), year, month, day);
+		date_string = fmt::format(FMT_STRING("{}/{}/{}"), year, month, day);
 	}
 }
 
diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp
index e7389605124e10c4fd1c02555c7e47cc9071769a..0bd5ec0302106e55ffd7748e11b3d9da3739c1df 100644
--- a/indra/newview/llpaneltopinfobar.cpp
+++ b/indra/newview/llpaneltopinfobar.cpp
@@ -351,7 +351,7 @@ void LLPanelTopInfoBar::updateHealth()
 		S32 health = gStatusBar->getHealth();
 		if (health != last_health)
 		{
-			std::string text = fmt::format(fmt("{:d}%"), health);
+			std::string text = fmt::format(FMT_STRING("{:d}%"), health);
 			mDamageText->setText(text);
 			last_health = health;
 		}
diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp
index ff7051f1534e36bc6629fc5b97836a4f3a7470d3..a0eefda1d0493edf2ea333c07df5b1a840b652ff 100644
--- a/indra/newview/llpreviewtexture.cpp
+++ b/indra/newview/llpreviewtexture.cpp
@@ -617,7 +617,7 @@ void LLPreviewTexture::adjustAspectRatio()
 		LLComboBox* combo = getChild<LLComboBox>("combo_aspect_ratio");
 		if (combo)
 		{
-			auto ratio = fmt::format(fmt("{}:{}"), num, denom);
+			auto ratio = fmt::format(FMT_STRING("{}:{}"), num, denom);
 			std::vector<std::string>::const_iterator found = std::find(mRatiosList.begin(), mRatiosList.end(), ratio);
 			if (found == mRatiosList.end())
 			{
diff --git a/indra/newview/llslurl.cpp b/indra/newview/llslurl.cpp
index 52fb055f1cfde6f53112717f9a368312b54617f5..2a8643a6a5e41615b5fe9c8ee6b6649e18d63d2f 100644
--- a/indra/newview/llslurl.cpp
+++ b/indra/newview/llslurl.cpp
@@ -476,7 +476,7 @@ bool LLSLURL::operator !=(const LLSLURL& rhs)
 
 std::string LLSLURL::getLocationString() const
 {
-	return fmt::format(fmt("{:s}/{:d}/{:d}/{:d}"),
+	return fmt::format(FMT_STRING("{:s}/{:d}/{:d}/{:d}"),
 					mRegion,
 					(int)ll_round(mPosition[0]),
 					(int)ll_round(mPosition[1]),
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index 577568d2203228aa489be620295800833df422c0..71bbe24f7071d011a04ae33016f47c91f9dc846d 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -300,7 +300,7 @@ void LLStatusBar::refresh()
 	{
 		mFPSUpdateTimer.reset();
 		F32 fps = (F32)LLTrace::get_frame_recording().getLastRecording().getMean(LLStatViewer::FPS_SAMPLE);
-		mTextFPS->setText(fmt::format(fmt("{:.1f}"), fps));
+		mTextFPS->setText(fmt::format(FMT_STRING("{:.1f}"), fps));
 	}
 
 	// update clock every second
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index f1baeedcd517c6952465707d3964844f4ad07087..6bf3cfb7dcc7af57b14868fd7944f7e9aa9b2029 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -214,7 +214,7 @@ void display_stats()
 	if (fps_log_freq > 0.f && gRecentFPSTime.getElapsedTimeF32() >= fps_log_freq)
 	{
 		F32 fps = gRecentFrameCount / fps_log_freq;
-		LL_INFOS() << fmt::format(fmt("FPS: {:.2f}"), fps) << LL_ENDL;
+		LL_INFOS() << fmt::format(FMT_STRING("FPS: {:.2f}"), fps) << LL_ENDL;
 		gRecentFrameCount = 0;
 		gRecentFPSTime.reset();
 	}
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 015af93ae5e7b9cde55660e4682563350d38b73e..38ebe613d01d1e491158ed0b9d55d5ef9d1a04b1 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -3071,13 +3071,13 @@ void LLViewerObject::updateControlAvatar()
 
     if (should_have_control_avatar && !has_control_avatar)
     {
-        std::string vobj_name = fmt::format(fmt("Vol{:p}"), static_cast<void*>(root));
+        std::string vobj_name = fmt::format(FMT_STRING("Vol{:p}"), static_cast<void*>(root));
         LL_DEBUGS("AnimatedObjects") << vobj_name << " calling linkControlAvatar()" << LL_ENDL;
         root->linkControlAvatar();
     }
     if (!should_have_control_avatar && has_control_avatar)
     {
-        std::string vobj_name = fmt::format(fmt("Vol{:p}"), static_cast<void*>(root));
+        std::string vobj_name = fmt::format(FMT_STRING("Vol{:p}"), static_cast<void*>(root));
         LL_DEBUGS("AnimatedObjects") << vobj_name << " calling unlinkControlAvatar()" << LL_ENDL;
         root->unlinkControlAvatar();
     }
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 3833daa93d4617b6195bf38f5576778812f540c4..1a4c495c0d04c5f92490857efcf0a3e030cf0521 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -8233,7 +8233,7 @@ void LLVOAvatar::updateMeshTextures()
 	std::vector<BOOL> use_lkg_baked_layer; // lkg = "last known good"
 	use_lkg_baked_layer.resize(mBakedTextureDatas.size(), false);
 
-	mBakedTextureDebugText += fmt::format(fmt("{:06d}\n"),update_counter++);
+	mBakedTextureDebugText += fmt::format(FMT_STRING("{:06d}\n"),update_counter++);
 	mBakedTextureDebugText += "indx layerset linvld ltda ilb ulkg ltid\n";
 	for (U32 i=0; i < mBakedTextureDatas.size(); i++)
 	{
@@ -8274,7 +8274,7 @@ void LLVOAvatar::updateMeshTextures()
 		bool is_ltda = layerset
 			&& layerset->getViewerComposite()->isInitialized()
 			&& layerset->isLocalTextureDataAvailable();
-		mBakedTextureDebugText += fmt::format(fmt("{:4d}   {:4s}     {:4d} {:4d} {:4d} {:4d} {:4s}\n"),
+		mBakedTextureDebugText += fmt::format(FMT_STRING("{:4d}   {:4s}     {:4d} {:4d} {:4d} {:4d} {:4s}\n"),
 										   i,
 										   (layerset?"*":"0"),
 										   layerset_invalid,
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 8f0b9f1372577a4eeff2b7c67b9eb2cc9fe05ae8..a2b1a06eb17231ee92fe0b072fe001a2d810f21d 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -1529,7 +1529,7 @@ BOOL LLVOVolume::updateLOD()
         {
             if (isAnimatedObject() && isRiggedMesh())
             {
-                std::string vobj_name = fmt::format(fmt("Vol{:p}"), static_cast<void*>(this));
+                std::string vobj_name = fmt::format(FMT_STRING("Vol{:p}"), static_cast<void*>(this));
                 F32 est_tris = getEstTrianglesMax();
                 LL_DEBUGS("AnimatedObjectsLinkset") << vobj_name << " updateLOD to " << getLOD() << ", tris " << est_tris << LL_ENDL; 
             }
@@ -4468,7 +4468,7 @@ void LLVOVolume::markForUpdate(BOOL priority)
     {
         if (isAnimatedObject() && isRiggedMesh())
         {
-            std::string vobj_name = fmt::format(fmt("Vol{:p}"), static_cast<void*>(this));
+            std::string vobj_name = fmt::format(FMT_STRING("Vol{:p}"), static_cast<void*>(this));
             F32 est_tris = getEstTrianglesMax();
             LL_DEBUGS("AnimatedObjectsLinkset") << vobj_name << " markForUpdate, tris " << est_tris << LL_ENDL; 
         }
@@ -5559,7 +5559,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 			if (debug_log)
 			{
 				llassert_always(vobj);
-	            std::string vobj_name = fmt::format(fmt("Vol{:p}"), static_cast<void*>(vobj));
+	            std::string vobj_name = fmt::format(FMT_STRING("Vol{:p}"), static_cast<void*>(vobj));
 	            bool is_mesh = vobj->isMesh();
 	            F32 est_tris = vobj->getEstTrianglesMax();
 
@@ -6338,7 +6338,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
                 {
                     if (vobj->isAnimatedObject() && vobj->isRiggedMesh())
                     {
-                        std::string vobj_name = fmt::format(fmt("Vol{:p}"), static_cast<void*>(vobj));
+                        std::string vobj_name = fmt::format(FMT_STRING("Vol{:p}"), static_cast<void*>(vobj));
                         F32 est_tris = vobj->getEstTrianglesMax();
                         LL_DEBUGS("AnimatedObjectsLinkset") << vobj_name << " rebuildMesh, tris " << est_tris << LL_ENDL; 
                     }
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index eb4a29b79e9696e973eed5654834aaeca6ee8029..06389b506999a02026ab062d631febb230796736 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -3260,7 +3260,7 @@ void LLPipeline::markRebuild(LLDrawable *drawablep, LLDrawable::EDrawableFlags f
             LLVOVolume *vol_obj = drawablep->getVOVolume();
             if (vol_obj && vol_obj->isAnimatedObject() && vol_obj->isRiggedMesh())
             {
-                std::string vobj_name = fmt::format(fmt("Vol{:p}"), static_cast<void*>(vol_obj));
+                std::string vobj_name = fmt::format(FMT_STRING("Vol{:p}"), static_cast<void*>(vol_obj));
                 F32 est_tris = vol_obj->getEstTrianglesMax();
                 LL_DEBUGS("AnimatedObjectsLinkset") << vobj_name << " markRebuild, tris " << est_tris 
                                                     << " priority " << (S32) priority << " flag " << std::hex << flag << LL_ENDL;