diff --git a/quic/core/quic_config.cc b/quic/core/quic_config.cc
index 20dcb90..55f356b 100644
--- a/quic/core/quic_config.cc
+++ b/quic/core/quic_config.cc
@@ -1336,17 +1336,14 @@
             params.preferred_address->ipv4_socket_address);
       }
     }
-    if (GetQuicReloadableFlag(quic_record_received_min_ack_delay)) {
-      if (params.min_ack_delay_us.value() != 0) {
-        if (params.min_ack_delay_us.value() >
-            params.max_ack_delay.value() * kNumMicrosPerMilli) {
-          *error_details = "MinAckDelay is greater than MaxAckDelay.";
-          return IETF_QUIC_PROTOCOL_VIOLATION;
-        }
-        QUIC_RELOADABLE_FLAG_COUNT(quic_record_received_min_ack_delay);
-        min_ack_delay_ms_.SetReceivedValue(params.min_ack_delay_us.value() /
-                                           kNumMicrosPerMilli);
+    if (params.min_ack_delay_us.value() != 0) {
+      if (params.min_ack_delay_us.value() >
+          params.max_ack_delay.value() * kNumMicrosPerMilli) {
+        *error_details = "MinAckDelay is greater than MaxAckDelay.";
+        return IETF_QUIC_PROTOCOL_VIOLATION;
       }
+      min_ack_delay_ms_.SetReceivedValue(params.min_ack_delay_us.value() /
+                                         kNumMicrosPerMilli);
     }
   }
 
diff --git a/quic/core/quic_config_test.cc b/quic/core/quic_config_test.cc
index f7f1618..144f495 100644
--- a/quic/core/quic_config_test.cc
+++ b/quic/core/quic_config_test.cc
@@ -437,7 +437,6 @@
     // TransportParameters are only used for QUIC+TLS.
     return;
   }
-  SetQuicReloadableFlag(quic_record_received_min_ack_delay, true);
   TransportParameters params;
 
   params.max_ack_delay.set_value(25 /*ms*/);
@@ -637,13 +636,9 @@
   ASSERT_TRUE(config_.HasReceivedMaxAckDelayMs());
   EXPECT_EQ(config_.ReceivedMaxAckDelayMs(), kMaxAckDelayForTest);
 
-  if (GetQuicReloadableFlag(quic_record_received_min_ack_delay)) {
-    ASSERT_TRUE(config_.HasReceivedMinAckDelayMs());
-    EXPECT_EQ(config_.ReceivedMinAckDelayMs(),
-              kMinAckDelayUsForTest / kNumMicrosPerMilli);
-  } else {
-    ASSERT_FALSE(config_.HasReceivedMinAckDelayMs());
-  }
+  ASSERT_TRUE(config_.HasReceivedMinAckDelayMs());
+  EXPECT_EQ(config_.ReceivedMinAckDelayMs(),
+            kMinAckDelayUsForTest / kNumMicrosPerMilli);
 
   ASSERT_TRUE(config_.HasReceivedAckDelayExponent());
   EXPECT_EQ(config_.ReceivedAckDelayExponent(), kAckDelayExponentForTest);
diff --git a/quic/core/quic_flags_list.h b/quic/core/quic_flags_list.h
index 0a8a19c..8122266 100644
--- a/quic/core/quic_flags_list.h
+++ b/quic/core/quic_flags_list.h
@@ -53,7 +53,6 @@
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_new_priority_update_frame, true)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_pass_path_response_to_validator, false)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_process_undecryptable_packets_after_async_decrypt_callback, true)
-QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_record_received_min_ack_delay, true)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_reject_spdy_frames, true)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_reject_spdy_settings, true)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_require_handshake_confirmation, false)
