diff --git a/common/quiche_data_reader.cc b/common/quiche_data_reader.cc
index bbb4b87..ee09407 100644
--- a/common/quiche_data_reader.cc
+++ b/common/quiche_data_reader.cc
@@ -7,9 +7,9 @@
 #include <cstring>
 
 #include "absl/strings/numbers.h"
+#include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_logging.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h"
 #include "net/third_party/quiche/src/common/quiche_endian.h"
 
@@ -209,7 +209,7 @@
 }
 
 std::string QuicheDataReader::DebugString() const {
-  return quiche::QuicheStrCat(" { length: ", len_, ", position: ", pos_, " }");
+  return absl::StrCat(" { length: ", len_, ", position: ", pos_, " }");
 }
 
 #undef ENDPOINT  // undef for jumbo builds
diff --git a/common/quiche_data_writer.cc b/common/quiche_data_writer.cc
index 5d80933..3aaabd0 100644
--- a/common/quiche_data_writer.cc
+++ b/common/quiche_data_writer.cc
@@ -7,8 +7,8 @@
 #include <algorithm>
 #include <limits>
 
+#include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 #include "net/third_party/quiche/src/common/quiche_endian.h"
 
 namespace quiche {
@@ -145,8 +145,7 @@
 }
 
 std::string QuicheDataWriter::DebugString() const {
-  return quiche::QuicheStrCat(" { capacity: ", capacity_, ", length: ", length_,
-                              " }");
+  return absl::StrCat(" { capacity: ", capacity_, ", length: ", length_, " }");
 }
 
 }  // namespace quiche
diff --git a/common/quiche_data_writer_test.cc b/common/quiche_data_writer_test.cc
index 22e8c08..453ddb0 100644
--- a/common/quiche_data_writer_test.cc
+++ b/common/quiche_data_writer_test.cc
@@ -8,8 +8,8 @@
 #include <cstring>
 
 #include "absl/base/macros.h"
+#include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_test.h"
 #include "net/third_party/quiche/src/common/quiche_data_reader.h"
 #include "net/third_party/quiche/src/common/quiche_endian.h"
@@ -31,7 +31,7 @@
 
 // Used by ::testing::PrintToStringParamName().
 std::string PrintToString(const TestParams& p) {
-  return quiche::QuicheStrCat(
+  return absl::StrCat(
       (p.endianness == quiche::NETWORK_BYTE_ORDER ? "Network" : "Host"),
       "ByteOrder");
 }
diff --git a/quic/core/qpack/qpack_encoder.cc b/quic/core/qpack/qpack_encoder.cc
index bf7cdc6..0e8c35c 100644
--- a/quic/core/qpack/qpack_encoder.cc
+++ b/quic/core/qpack/qpack_encoder.cc
@@ -7,6 +7,7 @@
 #include <algorithm>
 #include <utility>
 
+#include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/core/qpack/qpack_index_conversions.h"
 #include "net/third_party/quiche/src/quic/core/qpack/qpack_instruction_encoder.h"
@@ -14,7 +15,6 @@
 #include "net/third_party/quiche/src/quic/core/qpack/value_splitting_header_list.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 
@@ -416,13 +416,12 @@
 
   if (blocking_manager_.known_received_count() >
       header_table_.inserted_entry_count()) {
-    OnErrorDetected(
-        QUIC_QPACK_DECODER_STREAM_IMPOSSIBLE_INSERT_COUNT,
-        quiche::QuicheStrCat("Increment value ", increment,
-                             " raises known received count to ",
-                             blocking_manager_.known_received_count(),
-                             " exceeding inserted entry count ",
-                             header_table_.inserted_entry_count()));
+    OnErrorDetected(QUIC_QPACK_DECODER_STREAM_IMPOSSIBLE_INSERT_COUNT,
+                    absl::StrCat("Increment value ", increment,
+                                 " raises known received count to ",
+                                 blocking_manager_.known_received_count(),
+                                 " exceeding inserted entry count ",
+                                 header_table_.inserted_entry_count()));
   }
 }
 
@@ -430,8 +429,8 @@
   if (!blocking_manager_.OnHeaderAcknowledgement(stream_id)) {
     OnErrorDetected(
         QUIC_QPACK_DECODER_STREAM_INCORRECT_ACKNOWLEDGEMENT,
-        quiche::QuicheStrCat("Header Acknowledgement received for stream ",
-                             stream_id, " with no outstanding header blocks."));
+        absl::StrCat("Header Acknowledgement received for stream ", stream_id,
+                     " with no outstanding header blocks."));
   }
 }
 
diff --git a/quic/core/qpack/qpack_encoder_test.cc b/quic/core/qpack/qpack_encoder_test.cc
index 08c6123..b991dd2 100644
--- a/quic/core/qpack/qpack_encoder_test.cc
+++ b/quic/core/qpack/qpack_encoder_test.cc
@@ -8,6 +8,7 @@
 #include <string>
 
 #include "absl/strings/escaping.h"
+#include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_test.h"
@@ -15,7 +16,6 @@
 #include "net/third_party/quiche/src/quic/test_tools/qpack/qpack_encoder_test_utils.h"
 #include "net/third_party/quiche/src/quic/test_tools/qpack/qpack_header_table_peer.h"
 #include "net/third_party/quiche/src/quic/test_tools/qpack/qpack_test_utils.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h"
 
 using ::testing::_;
@@ -251,8 +251,8 @@
       "c5"          // insert with name reference, static index 5
       "0362617a");  // value "baz"
   EXPECT_CALL(encoder_stream_sender_delegate_,
-              WriteStreamData(Eq(quiche::QuicheStrCat(
-                  set_dyanamic_table_capacity, insert_entries))));
+              WriteStreamData(Eq(
+                  absl::StrCat(set_dyanamic_table_capacity, insert_entries))));
 
   EXPECT_EQ(absl::HexStringToBytes(
                 "0400"      // prefix
@@ -283,8 +283,8 @@
       "94e7"        // Huffman-encoded name "foo"
       "03626172");  // value "bar"
   EXPECT_CALL(encoder_stream_sender_delegate_,
-              WriteStreamData(Eq(quiche::QuicheStrCat(
-                  set_dyanamic_table_capacity, insert_entry))));
+              WriteStreamData(
+                  Eq(absl::StrCat(set_dyanamic_table_capacity, insert_entry))));
 
   EXPECT_EQ(absl::HexStringToBytes("0200"  // prefix
                                    "80"    // dynamic entry 0
@@ -315,8 +315,8 @@
       "94e7"        // Huffman-encoded name "foo"
       "03626172");  // value "bar"
   EXPECT_CALL(encoder_stream_sender_delegate_,
-              WriteStreamData(Eq(quiche::QuicheStrCat(
-                  set_dyanamic_table_capacity, insert_entry1))));
+              WriteStreamData(Eq(
+                  absl::StrCat(set_dyanamic_table_capacity, insert_entry1))));
 
   EXPECT_EQ(absl::HexStringToBytes("0200"  // prefix
                                    "80"),  // dynamic entry 0
diff --git a/quic/core/qpack/qpack_send_stream_test.cc b/quic/core/qpack/qpack_send_stream_test.cc
index 80c8986..acc0d0f 100644
--- a/quic/core/qpack/qpack_send_stream_test.cc
+++ b/quic/core/qpack/qpack_send_stream_test.cc
@@ -4,6 +4,7 @@
 
 #include "net/third_party/quiche/src/quic/core/qpack/qpack_send_stream.h"
 
+#include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/core/crypto/null_encrypter.h"
 #include "net/third_party/quiche/src/quic/core/http/http_constants.h"
@@ -12,7 +13,6 @@
 #include "net/third_party/quiche/src/quic/test_tools/quic_connection_peer.h"
 #include "net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.h"
 #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 namespace test {
@@ -40,7 +40,7 @@
 
 // Used by ::testing::PrintToStringParamName().
 std::string PrintToString(const TestParams& tp) {
-  return quiche::QuicheStrCat(
+  return absl::StrCat(
       ParsedQuicVersionToString(tp.version), "_",
       (tp.perspective == Perspective::IS_CLIENT ? "client" : "server"));
 }
diff --git a/quic/qbone/platform/ip_range.h b/quic/qbone/platform/ip_range.h
index 0cea943..b6c5a32 100644
--- a/quic/qbone/platform/ip_range.h
+++ b/quic/qbone/platform/ip_range.h
@@ -5,8 +5,8 @@
 #ifndef QUICHE_QUIC_QBONE_PLATFORM_IP_RANGE_H_
 #define QUICHE_QUIC_QBONE_PLATFORM_IP_RANGE_H_
 
+#include "absl/strings/str_cat.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_ip_address.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 
@@ -29,7 +29,7 @@
   // Returns the string representation of this object.
   std::string ToString() const {
     if (IsInitialized()) {
-      return quiche::QuicheStrCat(prefix_.ToString(), "/", prefix_length_);
+      return absl::StrCat(prefix_.ToString(), "/", prefix_length_);
     }
     return "(uninitialized)";
   }
diff --git a/quic/qbone/platform/netlink.cc b/quic/qbone/platform/netlink.cc
index d19c28b..8f6b5f2 100644
--- a/quic/qbone/platform/netlink.cc
+++ b/quic/qbone/platform/netlink.cc
@@ -8,12 +8,12 @@
 #include <utility>
 
 #include "absl/base/attributes.h"
+#include "absl/strings/str_cat.h"
 #include "net/third_party/quiche/src/quic/core/crypto/quic_random.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_ip_address.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h"
 #include "net/quic/platform/impl/quic_ip_address_impl.h"
 #include "net/third_party/quiche/src/quic/qbone/platform/rtnetlink_message.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 
@@ -80,7 +80,7 @@
 
   void Run(struct nlmsghdr* netlink_message) override {
     if (netlink_message->nlmsg_type != RTM_NEWLINK) {
-      QUIC_LOG(INFO) << quiche::QuicheStrCat(
+      QUIC_LOG(INFO) << absl::StrCat(
           "Unexpected nlmsg_type: ", netlink_message->nlmsg_type,
           " expected: ", RTM_NEWLINK);
       return;
@@ -91,7 +91,7 @@
 
     // make sure interface_info is what we asked for.
     if (interface_info->ifi_family != AF_UNSPEC) {
-      QUIC_LOG(INFO) << quiche::QuicheStrCat(
+      QUIC_LOG(INFO) << absl::StrCat(
           "Unexpected ifi_family: ", interface_info->ifi_family,
           " expected: ", AF_UNSPEC);
       return;
@@ -221,8 +221,8 @@
     // Make sure this is for an address family we're interested in.
     if (interface_address->ifa_family != AF_INET &&
         interface_address->ifa_family != AF_INET6) {
-      QUIC_VLOG(2) << quiche::QuicheStrCat("uninteresting ifa family: ",
-                                           interface_address->ifa_family);
+      QUIC_VLOG(2) << absl::StrCat("uninteresting ifa family: ",
+                                   interface_address->ifa_family);
       return;
     }
 
@@ -236,8 +236,7 @@
 
     uint8_t unwanted_flags = interface_address->ifa_flags & unwanted_flags_;
     if (unwanted_flags != 0) {
-      QUIC_VLOG(2) << quiche::QuicheStrCat("unwanted ifa flags: ",
-                                           unwanted_flags);
+      QUIC_VLOG(2) << absl::StrCat("unwanted ifa flags: ", unwanted_flags);
       return;
     }
 
@@ -276,8 +275,8 @@
           }
           break;
         default:
-          QUIC_LOG(ERROR) << quiche::QuicheStrCat(
-              "Unknown address family: ", interface_address->ifa_family);
+          QUIC_LOG(ERROR) << absl::StrCat("Unknown address family: ",
+                                          interface_address->ifa_family);
       }
     }
 
@@ -413,7 +412,7 @@
 
   void Run(struct nlmsghdr* netlink_message) override {
     if (netlink_message->nlmsg_type != RTM_NEWROUTE) {
-      QUIC_LOG(WARNING) << quiche::QuicheStrCat(
+      QUIC_LOG(WARNING) << absl::StrCat(
           "Unexpected nlmsg_type: ", netlink_message->nlmsg_type,
           " expected: ", RTM_NEWROUTE);
       return;
@@ -423,8 +422,7 @@
     int payload_length = RTM_PAYLOAD(netlink_message);
 
     if (route->rtm_family != AF_INET && route->rtm_family != AF_INET6) {
-      QUIC_VLOG(2) << quiche::QuicheStrCat("Uninteresting family: ",
-                                           route->rtm_family);
+      QUIC_VLOG(2) << absl::StrCat("Uninteresting family: ", route->rtm_family);
       return;
     }
 
@@ -458,8 +456,8 @@
           break;
         }
         default: {
-          QUIC_VLOG(2) << quiche::QuicheStrCat("Uninteresting attribute: ",
-                                               rta->rta_type);
+          QUIC_VLOG(2) << absl::StrCat("Uninteresting attribute: ",
+                                       rta->rta_type);
         }
       }
     }
@@ -601,7 +599,7 @@
 
   void Run(struct nlmsghdr* netlink_message) override {
     if (netlink_message->nlmsg_type != RTM_NEWRULE) {
-      QUIC_LOG(WARNING) << quiche::QuicheStrCat(
+      QUIC_LOG(WARNING) << absl::StrCat(
           "Unexpected nlmsg_type: ", netlink_message->nlmsg_type,
           " expected: ", RTM_NEWRULE);
       return;
@@ -611,8 +609,7 @@
     int payload_length = RTM_PAYLOAD(netlink_message);
 
     if (rule->rtm_family != AF_INET6) {
-      QUIC_LOG(ERROR) << quiche::QuicheStrCat("Unexpected family: ",
-                                              rule->rtm_family);
+      QUIC_LOG(ERROR) << absl::StrCat("Unexpected family: ", rule->rtm_family);
       return;
     }
 
@@ -636,8 +633,8 @@
           break;
         }
         default: {
-          QUIC_VLOG(2) << quiche::QuicheStrCat("Uninteresting attribute: ",
-                                               rta->rta_type);
+          QUIC_VLOG(2) << absl::StrCat("Uninteresting attribute: ",
+                                       rta->rta_type);
         }
       }
     }
diff --git a/quic/qbone/platform/netlink_test.cc b/quic/qbone/platform/netlink_test.cc
index f8d0f19..d415f91 100644
--- a/quic/qbone/platform/netlink_test.cc
+++ b/quic/qbone/platform/netlink_test.cc
@@ -195,8 +195,8 @@
       family = AF_INET6;
       break;
     default:
-      QUIC_BUG << quiche::QuicheStrCat("unexpected address family: ",
-                                       ip.address_family());
+      QUIC_BUG << absl::StrCat("unexpected address family: ",
+                               ip.address_family());
       family = AF_UNSPEC;
   }
   auto* msg = reinterpret_cast<struct ifaddrmsg*>(NLMSG_DATA(nlm));
diff --git a/quic/quic_transport/quic_transport_server_session.cc b/quic/quic_transport/quic_transport_server_session.cc
index 083e6fc..e151b31 100644
--- a/quic/quic_transport/quic_transport_server_session.cc
+++ b/quic/quic_transport/quic_transport_server_session.cc
@@ -8,6 +8,7 @@
 #include <memory>
 #include <string>
 
+#include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
 #include "url/gurl.h"
 #include "url/url_constants.h"
@@ -16,7 +17,6 @@
 #include "net/third_party/quiche/src/quic/core/quic_types.h"
 #include "net/third_party/quiche/src/quic/quic_transport/quic_transport_protocol.h"
 #include "net/third_party/quiche/src/quic/quic_transport/quic_transport_stream.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 
@@ -88,8 +88,8 @@
   if (buffer_.size() > ClientIndicationMaxSize()) {
     session_->connection()->CloseConnection(
         QUIC_TRANSPORT_INVALID_CLIENT_INDICATION,
-        quiche::QuicheStrCat("Client indication size exceeds ",
-                             ClientIndicationMaxSize(), " bytes"),
+        absl::StrCat("Client indication size exceeds ",
+                     ClientIndicationMaxSize(), " bytes"),
         ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
     return;
   }
@@ -111,7 +111,7 @@
 
     absl::string_view value;
     if (!reader_.ReadStringPiece16(&value)) {
-      ParseError(quiche::QuicheStrCat("Failed to read value for key ", key));
+      ParseError(absl::StrCat("Failed to read value for key ", key));
       return false;
     }
 
@@ -169,9 +169,9 @@
 
   // TODO(b/145674008): use the SNI value from the handshake instead of the IP
   // address.
-  std::string url_text = quiche::QuicheStrCat(
-      url::kQuicTransportScheme, url::kStandardSchemeSeparator,
-      session_->self_address().ToString(), path);
+  std::string url_text =
+      absl::StrCat(url::kQuicTransportScheme, url::kStandardSchemeSeparator,
+                   session_->self_address().ToString(), path);
   GURL url{url_text};
   if (!url.is_valid()) {
     Error("Invalid path specified");
@@ -194,8 +194,8 @@
 
 void QuicTransportServerSession::ClientIndicationParser::ParseError(
     absl::string_view error_message) {
-  Error(quiche::QuicheStrCat("Failed to parse the client indication stream: ",
-                             error_message, reader_.DebugString()));
+  Error(absl::StrCat("Failed to parse the client indication stream: ",
+                     error_message, reader_.DebugString()));
 }
 
 void QuicTransportServerSession::ProcessClientIndication(
diff --git a/quic/quic_transport/web_transport_fingerprint_proof_verifier.cc b/quic/quic_transport/web_transport_fingerprint_proof_verifier.cc
index 5932b9c..489295e 100644
--- a/quic/quic_transport/web_transport_fingerprint_proof_verifier.cc
+++ b/quic/quic_transport/web_transport_fingerprint_proof_verifier.cc
@@ -7,13 +7,13 @@
 #include <cstdint>
 #include <memory>
 
+#include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
 #include "third_party/boringssl/src/include/openssl/sha.h"
 #include "net/third_party/quiche/src/quic/core/crypto/certificate_view.h"
 #include "net/third_party/quiche/src/quic/core/quic_time.h"
 #include "net/third_party/quiche/src/quic/core/quic_types.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_bug_tracker.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h"
 
 namespace quic {
@@ -163,9 +163,9 @@
 
   if (!HasValidExpiry(*view)) {
     *details = std::make_unique<Details>(Status::kExpiryTooLong);
-    *error_details = quiche::QuicheStrCat(
-        "Certificate expiry exceeds the configured limit of ",
-        max_validity_days_, " days");
+    *error_details =
+        absl::StrCat("Certificate expiry exceeds the configured limit of ",
+                     max_validity_days_, " days");
     return QUIC_FAILURE;
   }
 
diff --git a/quic/test_tools/quic_test_utils.h b/quic/test_tools/quic_test_utils.h
index b575311..fe6e8f3 100644
--- a/quic/test_tools/quic_test_utils.h
+++ b/quic/test_tools/quic_test_utils.h
@@ -13,6 +13,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/strings/str_cat.h"
 #include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/core/congestion_control/loss_detection_interface.h"
 #include "net/third_party/quiche/src/quic/core/congestion_control/send_algorithm_interface.h"
@@ -37,7 +38,6 @@
 #include "net/third_party/quiche/src/quic/test_tools/mock_random.h"
 #include "net/third_party/quiche/src/quic/test_tools/quic_framer_peer.h"
 #include "net/third_party/quiche/src/quic/test_tools/simple_quic_framer.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 
@@ -1821,8 +1821,8 @@
 // EXPECT_THAT(stream_->connection_error(), IsError(QUIC_INTERNAL_ERROR));
 MATCHER_P(IsError,
           expected,
-          quiche::QuicheStrCat(negation ? "isn't equal to " : "is equal to ",
-                               QuicErrorCodeToString(expected))) {
+          absl::StrCat(negation ? "isn't equal to " : "is equal to ",
+                       QuicErrorCodeToString(expected))) {
   *result_listener << QuicErrorCodeToString(static_cast<QuicErrorCode>(arg));
   return arg == expected;
 }
@@ -1830,8 +1830,8 @@
 // Shorthand for IsError(QUIC_NO_ERROR).
 // Example usage: EXPECT_THAT(stream_->connection_error(), IsQuicNoError());
 MATCHER(IsQuicNoError,
-        quiche::QuicheStrCat(negation ? "isn't equal to " : "is equal to ",
-                             QuicErrorCodeToString(QUIC_NO_ERROR))) {
+        absl::StrCat(negation ? "isn't equal to " : "is equal to ",
+                     QuicErrorCodeToString(QUIC_NO_ERROR))) {
   *result_listener << QuicErrorCodeToString(arg);
   return arg == QUIC_NO_ERROR;
 }
@@ -1841,8 +1841,8 @@
 // EXPECT_THAT(stream_->stream_error(), IsStreamError(QUIC_INTERNAL_ERROR));
 MATCHER_P(IsStreamError,
           expected,
-          quiche::QuicheStrCat(negation ? "isn't equal to " : "is equal to ",
-                               QuicRstStreamErrorCodeToString(expected))) {
+          absl::StrCat(negation ? "isn't equal to " : "is equal to ",
+                       QuicRstStreamErrorCodeToString(expected))) {
   *result_listener << QuicRstStreamErrorCodeToString(arg);
   return arg == expected;
 }
@@ -1850,9 +1850,8 @@
 // Shorthand for IsStreamError(QUIC_STREAM_NO_ERROR).  Example usage:
 // EXPECT_THAT(stream_->stream_error(), IsQuicStreamNoError());
 MATCHER(IsQuicStreamNoError,
-        quiche::QuicheStrCat(
-            negation ? "isn't equal to " : "is equal to ",
-            QuicRstStreamErrorCodeToString(QUIC_STREAM_NO_ERROR))) {
+        absl::StrCat(negation ? "isn't equal to " : "is equal to ",
+                     QuicRstStreamErrorCodeToString(QUIC_STREAM_NO_ERROR))) {
   *result_listener << QuicRstStreamErrorCodeToString(arg);
   return arg == QUIC_STREAM_NO_ERROR;
 }
diff --git a/quic/test_tools/send_algorithm_test_utils.cc b/quic/test_tools/send_algorithm_test_utils.cc
index f5ca6ee..07b371c 100644
--- a/quic/test_tools/send_algorithm_test_utils.cc
+++ b/quic/test_tools/send_algorithm_test_utils.cc
@@ -4,10 +4,10 @@
 
 #include "net/third_party/quiche/src/quic/test_tools/send_algorithm_test_utils.h"
 
+#include "absl/strings/str_cat.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_test.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_test_output.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 namespace test {
@@ -49,9 +49,8 @@
       test_info->type_param() ? test_info->type_param() : "";
   const std::string value_param =
       test_info->value_param() ? test_info->value_param() : "";
-  return quiche::QuicheStrCat(test_info->test_suite_name(), ".",
-                              test_info->name(), "_", type_param, "_",
-                              value_param);
+  return absl::StrCat(test_info->test_suite_name(), ".", test_info->name(), "_",
+                      type_param, "_", value_param);
 }
 
 std::string GetSendAlgorithmTestResultFilename() {
diff --git a/quic/test_tools/simulator/quic_endpoint_base.cc b/quic/test_tools/simulator/quic_endpoint_base.cc
index c05740d..729c770 100644
--- a/quic/test_tools/simulator/quic_endpoint_base.cc
+++ b/quic/test_tools/simulator/quic_endpoint_base.cc
@@ -7,6 +7,7 @@
 #include <memory>
 #include <utility>
 
+#include "absl/strings/str_cat.h"
 #include "net/third_party/quiche/src/quic/core/crypto/crypto_handshake_message.h"
 #include "net/third_party/quiche/src/quic/core/crypto/crypto_protocol.h"
 #include "net/third_party/quiche/src/quic/core/quic_connection.h"
@@ -73,7 +74,7 @@
     const char* perspective_prefix =
         connection_->perspective() == Perspective::IS_CLIENT ? "C" : "S";
 
-    std::string identifier = quiche::QuicheStrCat(
+    std::string identifier = absl::StrCat(
         perspective_prefix, connection_->connection_id().ToString());
     QuicRecordTrace(identifier, trace_visitor_->trace()->SerializeAsString());
   }
diff --git a/quic/test_tools/simulator/switch.cc b/quic/test_tools/simulator/switch.cc
index dcfc2d8..177be9d 100644
--- a/quic/test_tools/simulator/switch.cc
+++ b/quic/test_tools/simulator/switch.cc
@@ -5,6 +5,7 @@
 #include <cinttypes>
 #include <utility>
 
+#include "absl/strings/str_cat.h"
 #include "net/third_party/quiche/src/quic/test_tools/simulator/switch.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
 
@@ -17,8 +18,8 @@
                QuicByteCount queue_capacity) {
   for (size_t port_number = 1; port_number <= port_count; port_number++) {
     ports_.emplace_back(simulator,
-                        quiche::QuicheStrCat(name, " (port ", port_number, ")"),
-                        this, port_number, queue_capacity);
+                        absl::StrCat(name, " (port ", port_number, ")"), this,
+                        port_number, queue_capacity);
   }
 }
 
