diff --git a/quic/core/http/end_to_end_test.cc b/quic/core/http/end_to_end_test.cc
index 027a2b2..873a893 100644
--- a/quic/core/http/end_to_end_test.cc
+++ b/quic/core/http/end_to_end_test.cc
@@ -3733,6 +3733,7 @@
 }
 
 TEST_P(EndToEndTest, PreSharedKey) {
+  SetQuicReloadableFlag(quic_check_handshake_timeout_before_idle_timeout, true);
   client_config_.set_max_time_before_crypto_handshake(
       QuicTime::Delta::FromSeconds(1));
   client_config_.set_max_idle_time_before_crypto_handshake(
@@ -3747,6 +3748,7 @@
 
 // TODO: reenable once we have a way to make this run faster.
 TEST_P(EndToEndTest, QUIC_TEST_DISABLED_IN_CHROME(PreSharedKeyMismatch)) {
+  SetQuicReloadableFlag(quic_check_handshake_timeout_before_idle_timeout, true);
   client_config_.set_max_time_before_crypto_handshake(
       QuicTime::Delta::FromSeconds(1));
   client_config_.set_max_idle_time_before_crypto_handshake(
@@ -3766,6 +3768,7 @@
 
 // TODO: reenable once we have a way to make this run faster.
 TEST_P(EndToEndTest, QUIC_TEST_DISABLED_IN_CHROME(PreSharedKeyNoClient)) {
+  SetQuicReloadableFlag(quic_check_handshake_timeout_before_idle_timeout, true);
   client_config_.set_max_time_before_crypto_handshake(
       QuicTime::Delta::FromSeconds(1));
   client_config_.set_max_idle_time_before_crypto_handshake(
@@ -3778,6 +3781,7 @@
 
 // TODO: reenable once we have a way to make this run faster.
 TEST_P(EndToEndTest, QUIC_TEST_DISABLED_IN_CHROME(PreSharedKeyNoServer)) {
+  SetQuicReloadableFlag(quic_check_handshake_timeout_before_idle_timeout, true);
   client_config_.set_max_time_before_crypto_handshake(
       QuicTime::Delta::FromSeconds(1));
   client_config_.set_max_idle_time_before_crypto_handshake(
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index 9a12311..09820f3 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -335,7 +335,9 @@
       address_validated_(false),
       use_handshake_delegate_(
           GetQuicReloadableFlag(quic_use_handshaker_delegate2) ||
-          version().handshake_protocol == PROTOCOL_TLS1_3) {
+          version().handshake_protocol == PROTOCOL_TLS1_3),
+      check_handshake_timeout_before_idle_timeout_(GetQuicReloadableFlag(
+          quic_check_handshake_timeout_before_idle_timeout)) {
   QUIC_DLOG(INFO) << ENDPOINT << "Created connection with server connection ID "
                   << server_connection_id
                   << " and version: " << ParsedQuicVersionToString(version());
@@ -349,6 +351,11 @@
     QUIC_RELOADABLE_FLAG_COUNT(quic_use_handshaker_delegate2);
   }
 
+  if (check_handshake_timeout_before_idle_timeout_) {
+    QUIC_RELOADABLE_FLAG_COUNT(
+        quic_check_handshake_timeout_before_idle_timeout);
+  }
+
   framer_.set_visitor(this);
   stats_.connection_creation_time = clock_->ApproximateNow();
   // TODO(ianswett): Supply the NetworkChangeVisitor as a constructor argument
@@ -3058,6 +3065,25 @@
 
 void QuicConnection::CheckForTimeout() {
   QuicTime now = clock_->ApproximateNow();
+  if (check_handshake_timeout_before_idle_timeout_ &&
+      !handshake_timeout_.IsInfinite()) {
+    QuicTime::Delta connected_duration = now - stats_.connection_creation_time;
+    QUIC_DVLOG(1) << ENDPOINT
+                  << "connection time: " << connected_duration.ToMicroseconds()
+                  << " handshake timeout: "
+                  << handshake_timeout_.ToMicroseconds();
+    if (connected_duration >= handshake_timeout_) {
+      const std::string error_details = quiche::QuicheStrCat(
+          "Handshake timeout expired after ",
+          connected_duration.ToDebuggingValue(),
+          ". Timeout:", handshake_timeout_.ToDebuggingValue());
+      QUIC_DVLOG(1) << ENDPOINT << error_details;
+      CloseConnection(QUIC_HANDSHAKE_TIMEOUT, error_details,
+                      ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
+      return;
+    }
+  }
+
   QuicTime time_of_last_packet =
       std::max(time_of_last_received_packet_,
                time_of_first_packet_sent_after_receiving_);
@@ -3089,7 +3115,8 @@
     return;
   }
 
-  if (!handshake_timeout_.IsInfinite()) {
+  if (!check_handshake_timeout_before_idle_timeout_ &&
+      !handshake_timeout_.IsInfinite()) {
     QuicTime::Delta connected_duration = now - stats_.connection_creation_time;
     QUIC_DVLOG(1) << ENDPOINT
                   << "connection time: " << connected_duration.ToMicroseconds()
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h
index 5bb3589..bcedee0 100644
--- a/quic/core/quic_connection.h
+++ b/quic/core/quic_connection.h
@@ -1517,6 +1517,9 @@
 
   // Latched value of quic_use_handshaker_delegate2.
   const bool use_handshake_delegate_;
+
+  // Latched value of quic_check_handshake_timeout_before_idle_timeout.
+  const bool check_handshake_timeout_before_idle_timeout_;
 };
 
 }  // namespace quic
