diff --git a/quiche/quic/core/quic_stream.cc b/quiche/quic/core/quic_stream.cc
index 3d02d1c..3fa0d01 100644
--- a/quiche/quic/core/quic_stream.cc
+++ b/quiche/quic/core/quic_stream.cc
@@ -108,9 +108,6 @@
 
 }  // namespace
 
-// static
-const SpdyPriority QuicStream::kDefaultPriority;
-
 PendingStream::PendingStream(QuicStreamId id, QuicSession* session)
     : id_(id),
       version_(session->version()),
@@ -339,7 +336,6 @@
       id_(id),
       session_(session),
       stream_delegate_(session),
-      priority_(CalculateDefaultPriority(session->transport_version())),
       stream_bytes_read_(stream_bytes_read),
       stream_error_(QuicResetStreamError::NoError()),
       connection_error_(QUIC_NO_ERROR),
@@ -1421,18 +1417,6 @@
   flow_controller_->UpdateReceiveWindowSize(size);
 }
 
-// static
-QuicStreamPriority QuicStream::CalculateDefaultPriority(
-    QuicTransportVersion version) {
-  if (VersionUsesHttp3(version)) {
-    return QuicStreamPriority{QuicStreamPriority::kDefaultUrgency,
-                              QuicStreamPriority::kDefaultIncremental};
-  } else {
-    return QuicStreamPriority{QuicStream::kDefaultPriority,
-                              QuicStreamPriority::kDefaultIncremental};
-  }
-}
-
 absl::optional<QuicByteCount> QuicStream::GetSendWindow() const {
   return flow_controller_.has_value()
              ? absl::optional<QuicByteCount>(flow_controller_->SendWindowSize())
diff --git a/quiche/quic/core/quic_stream.h b/quiche/quic/core/quic_stream.h
index 77213a8..b414528 100644
--- a/quiche/quic/core/quic_stream.h
+++ b/quiche/quic/core/quic_stream.h
@@ -138,16 +138,6 @@
 class QUIC_EXPORT_PRIVATE QuicStream
     : public QuicStreamSequencer::StreamInterface {
  public:
-  // Default priority for Google QUIC.
-  // This is somewhat arbitrary.  It's possible, but unlikely, we will either
-  // fail to set a priority client-side, or cancel a stream before stripping the
-  // priority from the wire server-side.  In either case, start out with a
-  // priority in the middle in case of Google QUIC.
-  static const spdy::SpdyPriority kDefaultPriority = 3;
-  static_assert(kDefaultPriority ==
-                    (spdy::kV3LowestPriority + spdy::kV3HighestPriority) / 2,
-                "Unexpected value of kDefaultPriority");
-
   // Creates a new stream with stream_id |id| associated with |session|. If
   // |is_static| is true, then the stream will be given precedence
   // over other streams when determing what streams should write next.
@@ -389,9 +379,6 @@
 
   bool was_draining() const { return was_draining_; }
 
-  static QuicStreamPriority CalculateDefaultPriority(
-      QuicTransportVersion version);
-
   QuicTime creation_time() const { return creation_time_; }
 
   bool fin_buffered() const { return fin_buffered_; }
