diff --git a/common/platform/api/quiche_str_cat.h b/common/platform/api/quiche_str_cat.h
deleted file mode 100644
index b996401..0000000
--- a/common/platform/api/quiche_str_cat.h
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef QUICHE_COMMON_PLATFORM_API_QUICHE_STR_CAT_H_
-#define QUICHE_COMMON_PLATFORM_API_QUICHE_STR_CAT_H_
-
-#include <string>
-#include <utility>
-
-#include "net/quiche/common/platform/impl/quiche_str_cat_impl.h"
-
-namespace quiche {
-
-template <typename... Args>
-inline std::string QuicheStringPrintf(const Args&... args) {
-  return QuicheStringPrintfImpl(std::forward<const Args&>(args)...);
-}
-
-}  // namespace quiche
-
-#endif  // QUICHE_COMMON_PLATFORM_API_QUICHE_STR_CAT_H_
diff --git a/http2/platform/api/http2_string_utils_test.cc b/http2/platform/api/http2_string_utils_test.cc
index 4d3f02f..1621b52 100644
--- a/http2/platform/api/http2_string_utils_test.cc
+++ b/http2/platform/api/http2_string_utils_test.cc
@@ -7,7 +7,6 @@
 #include <cstdint>
 
 #include "absl/strings/string_view.h"
-#include "common/platform/api/quiche_str_cat.h"
 #include "common/platform/api/quiche_test.h"
 
 namespace http2 {
diff --git a/quic/core/crypto/crypto_handshake_message.cc b/quic/core/crypto/crypto_handshake_message.cc
index e663eec..9628ed9 100644
--- a/quic/core/crypto/crypto_handshake_message.cc
+++ b/quic/core/crypto/crypto_handshake_message.cc
@@ -8,6 +8,7 @@
 #include <string>
 
 #include "absl/strings/escaping.h"
+#include "absl/strings/str_format.h"
 #include "absl/strings/string_view.h"
 #include "quic/core/crypto/crypto_framer.h"
 #include "quic/core/crypto/crypto_protocol.h"
@@ -15,7 +16,6 @@
 #include "quic/core/quic_socket_address_coder.h"
 #include "quic/core/quic_utils.h"
 #include "quic/platform/api/quic_map_util.h"
-#include "common/platform/api/quiche_str_cat.h"
 #include "common/platform/api/quiche_text_utils.h"
 #include "common/quiche_endian.h"
 
@@ -357,8 +357,7 @@
         }
         break;
       case kPAD:
-        ret += quiche::QuicheStringPrintf("(%d bytes of padding)",
-                                          static_cast<int>(it->second.size()));
+        ret += absl::StrFormat("(%d bytes of padding)", it->second.size());
         done = true;
         break;
       case kSNI:
diff --git a/quic/core/http/quic_spdy_client_session_test.cc b/quic/core/http/quic_spdy_client_session_test.cc
index 8a02cf7..e2b5003 100644
--- a/quic/core/http/quic_spdy_client_session_test.cc
+++ b/quic/core/http/quic_spdy_client_session_test.cc
@@ -39,7 +39,6 @@
 #include "quic/test_tools/quic_stream_peer.h"
 #include "quic/test_tools/quic_test_utils.h"
 #include "quic/test_tools/simple_session_cache.h"
-#include "common/platform/api/quiche_str_cat.h"
 
 using spdy::SpdyHeaderBlock;
 using ::testing::_;
@@ -769,7 +768,7 @@
 TEST_P(QuicSpdyClientSessionTest, ReceivingPromiseEnhanceYourCalm) {
   CompleteCryptoHandshake();
   for (size_t i = 0u; i < session_->get_max_promises(); i++) {
-    push_promise_[":path"] = quiche::QuicheStringPrintf("/bar%zu", i);
+    push_promise_[":path"] = absl::StrCat("/bar", i);
 
     QuicStreamId id =
         promised_stream_id_ +
@@ -787,7 +786,7 @@
 
   // One more promise, this should be refused.
   int i = session_->get_max_promises();
-  push_promise_[":path"] = quiche::QuicheStringPrintf("/bar%d", i);
+  push_promise_[":path"] = absl::StrCat("/bar", i);
 
   QuicStreamId id =
       promised_stream_id_ +
diff --git a/quic/core/legacy_quic_stream_id_manager.cc b/quic/core/legacy_quic_stream_id_manager.cc
index 36974af..07403f8 100644
--- a/quic/core/legacy_quic_stream_id_manager.cc
+++ b/quic/core/legacy_quic_stream_id_manager.cc
@@ -8,7 +8,6 @@
 #include "quic/core/quic_utils.h"
 #include "quic/core/quic_versions.h"
 #include "quic/platform/api/quic_map_util.h"
-#include "common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 
diff --git a/quic/core/quic_bandwidth.cc b/quic/core/quic_bandwidth.cc
index 4943f67..b4108be 100644
--- a/quic/core/quic_bandwidth.cc
+++ b/quic/core/quic_bandwidth.cc
@@ -7,16 +7,15 @@
 #include <cinttypes>
 #include <string>
 
+#include "absl/strings/str_format.h"
 #include "absl/strings/string_view.h"
-#include "common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 
 std::string QuicBandwidth::ToDebuggingValue() const {
   if (bits_per_second_ < 80000) {
-    return quiche::QuicheStringPrintf("%" PRId64 " bits/s (%" PRId64
-                                      " bytes/s)",
-                                      bits_per_second_, bits_per_second_ / 8);
+    return absl::StrFormat("%d bits/s (%d bytes/s)", bits_per_second_,
+                           bits_per_second_ / 8);
   }
 
   double divisor;
@@ -34,9 +33,9 @@
 
   double bits_per_second_with_unit = bits_per_second_ / divisor;
   double bytes_per_second_with_unit = bits_per_second_with_unit / 8;
-  return quiche::QuicheStringPrintf("%.2f %cbits/s (%.2f %cbytes/s)",
-                                    bits_per_second_with_unit, unit,
-                                    bytes_per_second_with_unit, unit);
+  return absl::StrFormat("%.2f %cbits/s (%.2f %cbytes/s)",
+                         bits_per_second_with_unit, unit,
+                         bytes_per_second_with_unit, unit);
 }
 
 }  // namespace quic
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h
index d00d523..5746d75 100644
--- a/quic/core/quic_connection.h
+++ b/quic/core/quic_connection.h
@@ -56,7 +56,6 @@
 #include "quic/platform/api/quic_export.h"
 #include "quic/platform/api/quic_flags.h"
 #include "quic/platform/api/quic_socket_address.h"
-#include "common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 
diff --git a/quic/core/quic_control_frame_manager.h b/quic/core/quic_control_frame_manager.h
index cb0a8cb..e4a5526 100644
--- a/quic/core/quic_control_frame_manager.h
+++ b/quic/core/quic_control_frame_manager.h
@@ -11,7 +11,6 @@
 #include "quic/core/frames/quic_frame.h"
 #include "quic/core/quic_circular_deque.h"
 #include "quic/core/quic_connection_id.h"
-#include "common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 
diff --git a/quic/core/quic_data_reader.cc b/quic/core/quic_data_reader.cc
index d15dd6e..7b605d3 100644
--- a/quic/core/quic_data_reader.cc
+++ b/quic/core/quic_data_reader.cc
@@ -9,7 +9,6 @@
 #include "quic/core/quic_utils.h"
 #include "quic/platform/api/quic_bug_tracker.h"
 #include "quic/platform/api/quic_flags.h"
-#include "common/platform/api/quiche_str_cat.h"
 #include "common/quiche_endian.h"
 
 namespace quic {
diff --git a/quic/core/quic_data_writer.cc b/quic/core/quic_data_writer.cc
index 39cbc5a..1753bbe 100644
--- a/quic/core/quic_data_writer.cc
+++ b/quic/core/quic_data_writer.cc
@@ -12,7 +12,6 @@
 #include "quic/core/quic_constants.h"
 #include "quic/platform/api/quic_bug_tracker.h"
 #include "quic/platform/api/quic_flags.h"
-#include "common/platform/api/quiche_str_cat.h"
 #include "common/quiche_endian.h"
 
 namespace quic {
diff --git a/quic/core/quic_time.cc b/quic/core/quic_time.cc
index 14217a9..daf8e29 100644
--- a/quic/core/quic_time.cc
+++ b/quic/core/quic_time.cc
@@ -9,25 +9,27 @@
 #include <limits>
 #include <string>
 
-#include "common/platform/api/quiche_str_cat.h"
+#include "absl/strings/str_cat.h"
 
 namespace quic {
 
 std::string QuicTime::Delta::ToDebuggingValue() const {
-  const int64_t one_ms = 1000;
-  const int64_t one_s = 1000 * one_ms;
+  constexpr int64_t kMillisecondInMicroseconds = 1000;
+  constexpr int64_t kSecondInMicroseconds = 1000 * kMillisecondInMicroseconds;
 
   int64_t absolute_value = std::abs(time_offset_);
 
   // For debugging purposes, always display the value with the highest precision
   // available.
-  if (absolute_value > one_s && absolute_value % one_s == 0) {
-    return quiche::QuicheStringPrintf("%" PRId64 "s", time_offset_ / one_s);
+  if (absolute_value > kSecondInMicroseconds &&
+      absolute_value % kSecondInMicroseconds == 0) {
+    return absl::StrCat(time_offset_ / kSecondInMicroseconds, "s");
   }
-  if (absolute_value > one_ms && absolute_value % one_ms == 0) {
-    return quiche::QuicheStringPrintf("%" PRId64 "ms", time_offset_ / one_ms);
+  if (absolute_value > kMillisecondInMicroseconds &&
+      absolute_value % kMillisecondInMicroseconds == 0) {
+    return absl::StrCat(time_offset_ / kMillisecondInMicroseconds, "ms");
   }
-  return quiche::QuicheStringPrintf("%" PRId64 "us", time_offset_);
+  return absl::StrCat(time_offset_, "us");
 }
 
 uint64_t QuicWallTime::ToUNIXSeconds() const {
diff --git a/quic/test_tools/simulator/alarm_factory.cc b/quic/test_tools/simulator/alarm_factory.cc
index 4e1ed2e..86ee49e 100644
--- a/quic/test_tools/simulator/alarm_factory.cc
+++ b/quic/test_tools/simulator/alarm_factory.cc
@@ -4,8 +4,8 @@
 
 #include "quic/test_tools/simulator/alarm_factory.h"
 
+#include "absl/strings/str_format.h"
 #include "quic/core/quic_alarm.h"
-#include "common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 namespace simulator {
@@ -58,7 +58,7 @@
 
 std::string AlarmFactory::GetNewAlarmName() {
   ++counter_;
-  return quiche::QuicheStringPrintf("%s (alarm %i)", name_.c_str(), counter_);
+  return absl::StrFormat("%s (alarm %i)", name_, counter_);
 }
 
 QuicAlarm* AlarmFactory::CreateAlarm(QuicAlarm::Delegate* delegate) {
diff --git a/quic/test_tools/simulator/link.cc b/quic/test_tools/simulator/link.cc
index 16850a9..6d43597 100644
--- a/quic/test_tools/simulator/link.cc
+++ b/quic/test_tools/simulator/link.cc
@@ -4,8 +4,9 @@
 
 #include "quic/test_tools/simulator/link.h"
 
+#include "absl/strings/str_cat.h"
+#include "absl/strings/str_format.h"
 #include "quic/test_tools/simulator/simulator.h"
-#include "common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 namespace simulator {
@@ -96,12 +97,12 @@
                              QuicBandwidth bandwidth,
                              QuicTime::Delta propagation_delay)
     : a_to_b_link_(simulator,
-                   quiche::QuicheStringPrintf("%s (A-to-B)", name.c_str()),
+                   absl::StrCat(name, " (A-to-B)"),
                    sink_b,
                    bandwidth,
                    propagation_delay),
       b_to_a_link_(simulator,
-                   quiche::QuicheStringPrintf("%s (B-to-A)", name.c_str()),
+                   absl::StrCat(name, " (B-to-A)"),
                    sink_a,
                    bandwidth,
                    propagation_delay) {}
@@ -111,9 +112,9 @@
                              QuicBandwidth bandwidth,
                              QuicTime::Delta propagation_delay)
     : SymmetricLink(endpoint_a->simulator(),
-                    quiche::QuicheStringPrintf("Link [%s]<->[%s]",
-                                               endpoint_a->name().c_str(),
-                                               endpoint_b->name().c_str()),
+                    absl::StrFormat("Link [%s]<->[%s]",
+                                    endpoint_a->name(),
+                                    endpoint_b->name()),
                     endpoint_a->GetRxPort(),
                     endpoint_b->GetRxPort(),
                     bandwidth,
diff --git a/quic/test_tools/simulator/quic_endpoint_base.cc b/quic/test_tools/simulator/quic_endpoint_base.cc
index a563a29..b4882b8 100644
--- a/quic/test_tools/simulator/quic_endpoint_base.cc
+++ b/quic/test_tools/simulator/quic_endpoint_base.cc
@@ -16,7 +16,6 @@
 #include "quic/test_tools/quic_connection_peer.h"
 #include "quic/test_tools/quic_test_utils.h"
 #include "quic/test_tools/simulator/simulator.h"
-#include "common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 namespace simulator {
@@ -61,7 +60,7 @@
       peer_name_(peer_name),
       writer_(this),
       nic_tx_queue_(simulator,
-                    quiche::QuicheStringPrintf("%s (TX Queue)", name.c_str()),
+                    absl::StrCat(name, " (TX Queue)"),
                     kMaxOutgoingPacketSize * kTxQueueSize),
       connection_(nullptr),
       write_blocked_count_(0),
diff --git a/quic/test_tools/simulator/switch.cc b/quic/test_tools/simulator/switch.cc
index cdfe6c1..3a8ee58 100644
--- a/quic/test_tools/simulator/switch.cc
+++ b/quic/test_tools/simulator/switch.cc
@@ -7,7 +7,6 @@
 
 #include "absl/strings/str_cat.h"
 #include "quic/test_tools/simulator/switch.h"
-#include "common/platform/api/quiche_str_cat.h"
 
 namespace quic {
 namespace simulator {
@@ -34,9 +33,7 @@
       parent_(parent),
       port_number_(port_number),
       connected_(false),
-      queue_(simulator,
-             quiche::QuicheStringPrintf("%s (queue)", name.c_str()),
-             queue_capacity) {}
+      queue_(simulator, absl::StrCat(name, " (queue)"), queue_capacity) {}
 
 void Switch::Port::AcceptPacket(std::unique_ptr<Packet> packet) {
   parent_->DispatchPacket(port_number_, std::move(packet));
