diff --git a/quiche/quic/core/http/quic_server_session_base.cc b/quiche/quic/core/http/quic_server_session_base.cc
index d59602e..f94f09f 100644
--- a/quiche/quic/core/http/quic_server_session_base.cc
+++ b/quiche/quic/core/http/quic_server_session_base.cc
@@ -88,7 +88,7 @@
 
   enable_sending_bandwidth_estimate_when_network_idle_ =
       GetQuicRestartFlag(
-          quic_enable_sending_bandwidth_estimate_when_network_idle) &&
+          quic_enable_sending_bandwidth_estimate_when_network_idle_v2) &&
       version().HasIetfQuicFrames() &&
       ContainsQuicTag(config()->ReceivedConnectionOptions(), kBWID);
 
@@ -146,7 +146,7 @@
     const bool success = MaybeSendAddressToken();
     QUIC_BUG_IF(QUIC_BUG_25522, !success) << "Failed to send address token.";
     QUIC_RESTART_FLAG_COUNT_N(
-        quic_enable_sending_bandwidth_estimate_when_network_idle, 2, 3);
+        quic_enable_sending_bandwidth_estimate_when_network_idle_v2, 2, 3);
   }
 }
 
@@ -154,9 +154,9 @@
   // Sending bandwidth is no longer conditioned on if session does bandwidth
   // resumption.
   if (GetQuicRestartFlag(
-          quic_enable_sending_bandwidth_estimate_when_network_idle)) {
+          quic_enable_sending_bandwidth_estimate_when_network_idle_v2)) {
     QUIC_RESTART_FLAG_COUNT_N(
-        quic_enable_sending_bandwidth_estimate_when_network_idle, 3, 3);
+        quic_enable_sending_bandwidth_estimate_when_network_idle_v2, 3, 3);
     return;
   }
   if (!bandwidth_resumption_enabled_) {
diff --git a/quiche/quic/core/http/quic_server_session_base_test.cc b/quiche/quic/core/http/quic_server_session_base_test.cc
index df099a6..a722240 100644
--- a/quiche/quic/core/http/quic_server_session_base_test.cc
+++ b/quiche/quic/core/http/quic_server_session_base_test.cc
@@ -608,7 +608,7 @@
                                     HAS_RETRANSMITTABLE_DATA, true);
 
   if (GetQuicRestartFlag(
-          quic_enable_sending_bandwidth_estimate_when_network_idle)) {
+          quic_enable_sending_bandwidth_estimate_when_network_idle_v2)) {
     EXPECT_CALL(*connection_, OnSendConnectionState(_)).Times(0);
   } else {
     // Verify that the proto has exactly the values we expect.
diff --git a/quiche/quic/core/quic_flags_list.h b/quiche/quic/core/quic_flags_list.h
index 050f26e..2f651ad 100644
--- a/quiche/quic/core/quic_flags_list.h
+++ b/quiche/quic/core/quic_flags_list.h
@@ -80,7 +80,7 @@
 // If true, server proactively retires client issued connection ID on reverse path validation failure. 
 QUIC_FLAG(quic_reloadable_flag_quic_retire_cid_on_reverse_path_validation_failure, true)
 // If true, server sends bandwidth eastimate when network is idle for a while.
-QUIC_FLAG(quic_restart_flag_quic_enable_sending_bandwidth_estimate_when_network_idle, false)
+QUIC_FLAG(quic_restart_flag_quic_enable_sending_bandwidth_estimate_when_network_idle_v2, false)
 // If true, set burst token to 2 in cwnd bootstrapping experiment.
 QUIC_FLAG(quic_reloadable_flag_quic_conservative_bursts, false)
 // If true, stop resetting ideal_next_packet_send_time_ in pacing sender.
diff --git a/quiche/quic/core/quic_idle_network_detector.cc b/quiche/quic/core/quic_idle_network_detector.cc
index a5bd8ad..5a63ebc 100644
--- a/quiche/quic/core/quic_idle_network_detector.cc
+++ b/quiche/quic/core/quic_idle_network_detector.cc
@@ -74,10 +74,10 @@
   bandwidth_update_timeout_ = QuicTime::Delta::Infinite();
 
   if (GetQuicRestartFlag(
-          quic_enable_sending_bandwidth_estimate_when_network_idle) &&
+          quic_enable_sending_bandwidth_estimate_when_network_idle_v2) &&
       handshake_timeout_.IsInfinite()) {
     QUIC_RESTART_FLAG_COUNT_N(
-        quic_enable_sending_bandwidth_estimate_when_network_idle, 1, 3);
+        quic_enable_sending_bandwidth_estimate_when_network_idle_v2, 1, 3);
     bandwidth_update_timeout_ = idle_network_timeout_ * 0.5;
   }
 
diff --git a/quiche/quic/core/quic_idle_network_detector_test.cc b/quiche/quic/core/quic_idle_network_detector_test.cc
index 9105ec9..a139eb2 100644
--- a/quiche/quic/core/quic_idle_network_detector_test.cc
+++ b/quiche/quic/core/quic_idle_network_detector_test.cc
@@ -103,7 +103,7 @@
       /*handshake_timeout=*/QuicTime::Delta::Infinite(),
       /*idle_network_timeout=*/QuicTime::Delta::FromSeconds(600));
   if (!GetQuicRestartFlag(
-          quic_enable_sending_bandwidth_estimate_when_network_idle)) {
+          quic_enable_sending_bandwidth_estimate_when_network_idle_v2)) {
     EXPECT_EQ(clock_.Now() + QuicTime::Delta::FromSeconds(600),
               alarm_->deadline());
 
@@ -141,7 +141,7 @@
   // Handshake completes in 200ms.
   const bool enable_sending_bandwidth_estimate_when_network_idle =
       GetQuicRestartFlag(
-          quic_enable_sending_bandwidth_estimate_when_network_idle);
+          quic_enable_sending_bandwidth_estimate_when_network_idle_v2);
   clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(200));
   detector_->OnPacketReceived(clock_.Now());
   detector_->SetTimeouts(
@@ -195,7 +195,7 @@
   detector_->enable_shorter_idle_timeout_on_sent_packet();
   QuicTime::Delta idle_network_timeout = QuicTime::Delta::Zero();
   if (GetQuicRestartFlag(
-          quic_enable_sending_bandwidth_estimate_when_network_idle)) {
+          quic_enable_sending_bandwidth_estimate_when_network_idle_v2)) {
     idle_network_timeout = QuicTime::Delta::FromSeconds(60);
   } else {
     idle_network_timeout = QuicTime::Delta::FromSeconds(30);
@@ -250,7 +250,7 @@
 TEST_F(QuicIdleNetworkDetectorTest,
        ResetBandwidthTimeoutWhenHandshakeTimeoutIsSet) {
   if (!GetQuicRestartFlag(
-          quic_enable_sending_bandwidth_estimate_when_network_idle)) {
+          quic_enable_sending_bandwidth_estimate_when_network_idle_v2)) {
     return;
   }
   detector_->SetTimeouts(
