diff --git a/quiche/common/quiche_feature_flags_list.h b/quiche/common/quiche_feature_flags_list.h
index fea0eff..81bddf9 100755
--- a/quiche/common/quiche_feature_flags_list.h
+++ b/quiche/common/quiche_feature_flags_list.h
@@ -11,7 +11,6 @@
 QUICHE_FLAG(bool, quiche_reloadable_flag_enable_h3_origin_frame, false, true, "If true, enables support for parsing HTTP/3 ORIGIN frames.")
 QUICHE_FLAG(bool, quiche_reloadable_flag_quic_act_upon_invalid_header, true, true, "If true, reject or send error response code upon receiving invalid request or response headers.")
 QUICHE_FLAG(bool, quiche_reloadable_flag_quic_add_stream_info_to_idle_close_detail, false, true, "If true, include stream information in idle timeout connection close detail.")
-QUICHE_FLAG(bool, quiche_reloadable_flag_quic_allow_client_enabled_2x_initial_cwnd, true, true, "Doubles the initial congestion window for QUIC connections when initiated by the client")
 QUICHE_FLAG(bool, quiche_reloadable_flag_quic_allow_client_enabled_bbr_v2, true, true, "If true, allow client to enable BBRv2 on server via connection option 'B2ON'.")
 QUICHE_FLAG(bool, quiche_reloadable_flag_quic_bbr2_extra_acked_window, false, true, "When true, the BBR4 copt sets the extra_acked window to 20 RTTs and BBR5 sets it to 40 RTTs.")
 QUICHE_FLAG(bool, quiche_reloadable_flag_quic_bbr2_probe_two_rounds, true, true, "When true, the BB2U copt causes BBR2 to wait two rounds with out draining the queue before exiting PROBE_UP and BB2S has the same effect in STARTUP.")
diff --git a/quiche/quic/core/http/end_to_end_test.cc b/quiche/quic/core/http/end_to_end_test.cc
index 451632a..f0a3803 100644
--- a/quiche/quic/core/http/end_to_end_test.cc
+++ b/quiche/quic/core/http/end_to_end_test.cc
@@ -4026,7 +4026,6 @@
 }
 
 TEST_P(EndToEndTest, NegotiatedDoubledInitialCongestionWindow) {
-  SetQuicReloadableFlag(quic_allow_client_enabled_2x_initial_cwnd, true);
   client_extra_copts_.push_back(kIW2X);
 
   ASSERT_TRUE(Initialize());
diff --git a/quiche/quic/core/quic_sent_packet_manager.cc b/quiche/quic/core/quic_sent_packet_manager.cc
index 6d11224..3771c79 100644
--- a/quiche/quic/core/quic_sent_packet_manager.cc
+++ b/quiche/quic/core/quic_sent_packet_manager.cc
@@ -191,9 +191,7 @@
     initial_congestion_window_ = 50;
     send_algorithm_->SetInitialCongestionWindowInPackets(50);
   }
-  if (config.HasClientRequestedIndependentOption(kIW2X, perspective) &&
-      GetQuicReloadableFlag(quic_allow_client_enabled_2x_initial_cwnd)) {
-    QUIC_RELOADABLE_FLAG_COUNT(quic_allow_client_enabled_2x_initial_cwnd);
+  if (config.HasClientRequestedIndependentOption(kIW2X, perspective)) {
     initial_congestion_window_ *= 2;
     send_algorithm_->SetInitialCongestionWindowInPackets(
         initial_congestion_window_);
diff --git a/quiche/quic/core/quic_sent_packet_manager_test.cc b/quiche/quic/core/quic_sent_packet_manager_test.cc
index aa38362..d0d3c22 100644
--- a/quiche/quic/core/quic_sent_packet_manager_test.cc
+++ b/quiche/quic/core/quic_sent_packet_manager_test.cc
@@ -2177,7 +2177,6 @@
 }
 
 TEST_F(QuicSentPacketManagerTest, ServerCongestionWindowDoubledWithIW2X) {
-  SetQuicReloadableFlag(quic_allow_client_enabled_2x_initial_cwnd, true);
   QuicConfig config;
   QuicConfigPeer::SetReceivedConnectionOptions(&config, {kIW2X});
   EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
@@ -2189,37 +2188,6 @@
   EXPECT_EQ(manager_.initial_congestion_window(), kInitialCongestionWindow * 2);
 }
 
-TEST_F(QuicSentPacketManagerTest,
-       ServerCongestionWindowIsDefaultWithIW2XAndNoFlag) {
-  SetQuicReloadableFlag(quic_allow_client_enabled_2x_initial_cwnd, false);
-  QuicConfig config;
-  QuicConfigPeer::SetReceivedConnectionOptions(&config, {kIW2X});
-  EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
-  EXPECT_CALL(*send_algorithm_, SetInitialCongestionWindowInPackets(_))
-      .Times(0);
-  EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
-  manager_.SetFromConfig(config);
-
-  EXPECT_EQ(manager_.initial_congestion_window(), kInitialCongestionWindow);
-}
-
-TEST_F(QuicSentPacketManagerTest,
-       ClientCongestionWindowIsDefaultWithIW2XAndNoFlag) {
-  QuicSentPacketManagerPeer::SetPerspective(&manager_, Perspective::IS_CLIENT);
-  SetQuicReloadableFlag(quic_allow_client_enabled_2x_initial_cwnd, false);
-  QuicConfig config;
-  config.SetConnectionOptionsToSend({kIW2X});
-  config.SetClientConnectionOptions({});
-
-  EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
-  EXPECT_CALL(*send_algorithm_,
-              SetInitialCongestionWindowInPackets(kInitialCongestionWindow * 2))
-      .Times(0);
-  EXPECT_CALL(*network_change_visitor_, OnCongestionChange());
-  manager_.SetFromConfig(config);
-
-  EXPECT_EQ(manager_.initial_congestion_window(), kInitialCongestionWindow);
-}
 
 TEST_F(QuicSentPacketManagerTest, ClientMultiplePacketNumberSpacePtoTimeout) {
   manager_.EnableMultiplePacketNumberSpacesSupport();
