diff --git a/quiche/quic/core/quic_flags_list.h b/quiche/quic/core/quic_flags_list.h
index 1e403cb..e84b98d 100644
--- a/quiche/quic/core/quic_flags_list.h
+++ b/quiche/quic/core/quic_flags_list.h
@@ -55,8 +55,6 @@
 QUIC_FLAG(quic_reloadable_flag_quic_donot_pto_stream_data_before_handshake_confirmed, true)
 // If true, do not issue a new connection ID that has been claimed by another connection.
 QUIC_FLAG(quic_reloadable_flag_quic_check_cid_collision_when_issue_new_cid, true)
-// If true, do not mark stream connection level write blocked if its write side has been closed.
-QUIC_FLAG(quic_reloadable_flag_quic_donot_mark_stream_write_blocked_if_write_side_closed, true)
 // If true, enable server retransmittable on wire PING.
 QUIC_FLAG(quic_reloadable_flag_quic_enable_server_on_wire_ping, true)
 // If true, flush pending frames as well as pending padding bytes on connection migration.
diff --git a/quiche/quic/core/quic_session_test.cc b/quiche/quic/core/quic_session_test.cc
index 280d8a8..a55035f 100644
--- a/quiche/quic/core/quic_session_test.cc
+++ b/quiche/quic/core/quic_session_test.cc
@@ -3078,14 +3078,7 @@
             ConnectionCloseBehavior::SILENT_CLOSE);
         return false;
       }));
-  std::string msg =
-      absl::StrCat("Marking unknown stream ", stream->id(), " blocked.");
-  if (GetQuicReloadableFlag(
-          quic_donot_mark_stream_write_blocked_if_write_side_closed)) {
-    stream->WriteOrBufferData(body, false, nullptr);
-  } else {
-    EXPECT_QUIC_BUG(stream->WriteOrBufferData(body, false, nullptr), msg);
-  }
+  stream->WriteOrBufferData(body, false, nullptr);
 }
 
 TEST_P(QuicSessionTestServer, BufferedCryptoFrameCausesWriteError) {
diff --git a/quiche/quic/core/quic_stream.cc b/quiche/quic/core/quic_stream.cc
index 921682d..29a6d04 100644
--- a/quiche/quic/core/quic_stream.cc
+++ b/quiche/quic/core/quic_stream.cc
@@ -746,20 +746,12 @@
     return;
   }
   connection_flow_controller_->MaybeSendBlocked();
-  if (GetQuicReloadableFlag(
-          quic_donot_mark_stream_write_blocked_if_write_side_closed)) {
-    QUIC_RELOADABLE_FLAG_COUNT(
-        quic_donot_mark_stream_write_blocked_if_write_side_closed);
-  }
 
   // If the stream is blocked by connection-level flow control but not by
   // stream-level flow control, add the stream to the write blocked list so that
   // the stream will be given a chance to write when a connection-level
   // WINDOW_UPDATE arrives.
-  if ((!GetQuicReloadableFlag(
-           quic_donot_mark_stream_write_blocked_if_write_side_closed) ||
-       !write_side_closed_) &&
-      connection_flow_controller_->IsBlocked() &&
+  if (!write_side_closed_ && connection_flow_controller_->IsBlocked() &&
       !flow_controller_->IsBlocked()) {
     session_->MarkConnectionLevelWriteBlocked(id());
   }
@@ -1300,11 +1292,7 @@
         was_draining_ = true;
       }
       CloseWriteSide();
-    } else if (
-        fin && !consumed_data.fin_consumed &&
-        (!GetQuicReloadableFlag(
-             quic_donot_mark_stream_write_blocked_if_write_side_closed) ||
-         !write_side_closed_)) {
+    } else if (fin && !consumed_data.fin_consumed && !write_side_closed_) {
       session_->MarkConnectionLevelWriteBlocked(id());
     }
   } else {
