diff --git a/quic/masque/masque_client_bin.cc b/quic/masque/masque_client_bin.cc
index 8bdeef5..0e44092 100644
--- a/quic/masque/masque_client_bin.cc
+++ b/quic/masque/masque_client_bin.cc
@@ -9,6 +9,7 @@
 
 #include <memory>
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/core/quic_server_id.h"
 #include "net/third_party/quiche/src/quic/masque/masque_client_tools.h"
 #include "net/third_party/quiche/src/quic/masque/masque_encapsulated_epoll_client.h"
@@ -21,7 +22,6 @@
 #include "net/third_party/quiche/src/quic/tools/fake_proof_verifier.h"
 #include "net/third_party/quiche/src/quic/tools/quic_url.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h"
 
 DEFINE_QUIC_COMMAND_LINE_FLAG(bool,
diff --git a/quic/masque/masque_client_session.cc b/quic/masque/masque_client_session.cc
index 3db36f3..4baf4ad 100644
--- a/quic/masque/masque_client_session.cc
+++ b/quic/masque/masque_client_session.cc
@@ -23,7 +23,7 @@
       owner_(owner),
       compression_engine_(this) {}
 
-void MasqueClientSession::OnMessageReceived(quiche::QuicheStringPiece message) {
+void MasqueClientSession::OnMessageReceived(absl::string_view message) {
   QUIC_DVLOG(1) << "Received DATAGRAM frame of length " << message.length();
 
   QuicConnectionId client_connection_id, server_connection_id;
@@ -46,7 +46,7 @@
   EncapsulatedClientSession* encapsulated_client_session =
       connection_id_registration->second;
   encapsulated_client_session->ProcessPacket(
-      quiche::QuicheStringPiece(packet.data(), packet.size()), server_address);
+      absl::string_view(packet.data(), packet.size()), server_address);
 
   QUIC_DVLOG(1) << "Sent " << packet.size() << " bytes to connection for "
                 << client_connection_id;
@@ -63,7 +63,7 @@
 
 void MasqueClientSession::SendPacket(QuicConnectionId client_connection_id,
                                      QuicConnectionId server_connection_id,
-                                     quiche::QuicheStringPiece packet,
+                                     absl::string_view packet,
                                      const QuicSocketAddress& server_address) {
   compression_engine_.CompressAndSendPacket(
       packet, client_connection_id, server_connection_id, server_address);
diff --git a/quic/masque/masque_client_session.h b/quic/masque/masque_client_session.h
index fee24c9..38fa929 100644
--- a/quic/masque/masque_client_session.h
+++ b/quic/masque/masque_client_session.h
@@ -5,11 +5,11 @@
 #ifndef QUICHE_QUIC_MASQUE_MASQUE_CLIENT_SESSION_H_
 #define QUICHE_QUIC_MASQUE_MASQUE_CLIENT_SESSION_H_
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/core/http/quic_spdy_client_session.h"
 #include "net/third_party/quiche/src/quic/masque/masque_compression_engine.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_export.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_socket_address.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace quic {
 
@@ -37,7 +37,7 @@
     virtual ~EncapsulatedClientSession() {}
 
     // Process packet that was just decapsulated.
-    virtual void ProcessPacket(quiche::QuicheStringPiece packet,
+    virtual void ProcessPacket(absl::string_view packet,
                                QuicSocketAddress server_address) = 0;
   };
 
@@ -58,7 +58,7 @@
   MasqueClientSession& operator=(const MasqueClientSession&) = delete;
 
   // From QuicSession.
-  void OnMessageReceived(quiche::QuicheStringPiece message) override;
+  void OnMessageReceived(absl::string_view message) override;
 
   void OnMessageAcked(QuicMessageId message_id,
                       QuicTime receive_timestamp) override;
@@ -68,7 +68,7 @@
   // Send encapsulated packet.
   void SendPacket(QuicConnectionId client_connection_id,
                   QuicConnectionId server_connection_id,
-                  quiche::QuicheStringPiece packet,
+                  absl::string_view packet,
                   const QuicSocketAddress& server_address);
 
   // Register encapsulated client. This allows clients that are encapsulated
diff --git a/quic/masque/masque_compression_engine.cc b/quic/masque/masque_compression_engine.cc
index dbc4580..008e2b8 100644
--- a/quic/masque/masque_compression_engine.cc
+++ b/quic/masque/masque_compression_engine.cc
@@ -6,6 +6,7 @@
 
 #include <cstdint>
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/core/quic_buffer_allocator.h"
 #include "net/third_party/quiche/src/quic/core/quic_data_reader.h"
 #include "net/third_party/quiche/src/quic/core/quic_data_writer.h"
@@ -14,7 +15,6 @@
 #include "net/third_party/quiche/src/quic/core/quic_types.h"
 #include "net/third_party/quiche/src/quic/core/quic_versions.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_containers.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_text_utils.h"
 
 namespace quic {
@@ -213,7 +213,7 @@
       return false;
     }
   }
-  quiche::QuicheStringPiece packet_payload = reader->ReadRemainingPayload();
+  absl::string_view packet_payload = reader->ReadRemainingPayload();
   if (!writer->WriteStringPiece(packet_payload)) {
     QUIC_BUG << "Failed to write packet_payload";
     return false;
@@ -222,7 +222,7 @@
 }
 
 void MasqueCompressionEngine::CompressAndSendPacket(
-    quiche::QuicheStringPiece packet,
+    absl::string_view packet,
     QuicConnectionId client_connection_id,
     QuicConnectionId server_connection_id,
     const QuicSocketAddress& server_address) {
@@ -452,7 +452,7 @@
       return false;
     }
   }
-  quiche::QuicheStringPiece payload = reader->ReadRemainingPayload();
+  absl::string_view payload = reader->ReadRemainingPayload();
   if (!writer.WriteStringPiece(payload)) {
     QUIC_BUG << "Failed to write payload";
     return false;
@@ -461,7 +461,7 @@
 }
 
 bool MasqueCompressionEngine::DecompressDatagram(
-    quiche::QuicheStringPiece datagram,
+    absl::string_view datagram,
     QuicConnectionId* client_connection_id,
     QuicConnectionId* server_connection_id,
     QuicSocketAddress* server_address,
@@ -514,8 +514,8 @@
 
   QUIC_DVLOG(2) << "Decompressed client " << context.client_connection_id
                 << " server " << context.server_connection_id << "\n"
-                << quiche::QuicheTextUtils::HexDump(quiche::QuicheStringPiece(
-                       packet->data(), packet->size()));
+                << quiche::QuicheTextUtils::HexDump(
+                       absl::string_view(packet->data(), packet->size()));
 
   return true;
 }
diff --git a/quic/masque/masque_compression_engine.h b/quic/masque/masque_compression_engine.h
index 5ab88bd..6eb7a44 100644
--- a/quic/masque/masque_compression_engine.h
+++ b/quic/masque/masque_compression_engine.h
@@ -5,13 +5,13 @@
 #ifndef QUICHE_QUIC_MASQUE_MASQUE_PROTOCOL_H_
 #define QUICHE_QUIC_MASQUE_MASQUE_PROTOCOL_H_
 
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/quic/core/quic_connection_id.h"
 #include "net/third_party/quiche/src/quic/core/quic_session.h"
 #include "net/third_party/quiche/src/quic/core/quic_types.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_containers.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_export.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_socket_address.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace quic {
 
@@ -47,7 +47,7 @@
   // hand off the uncompressed packet to an encapsulated session that will treat
   // it as having come from the provided |server_address|.
   // The connection IDs are the one used by the encapsulated |packet|.
-  void CompressAndSendPacket(quiche::QuicheStringPiece packet,
+  void CompressAndSendPacket(absl::string_view packet,
                              QuicConnectionId client_connection_id,
                              QuicConnectionId server_connection_id,
                              const QuicSocketAddress& server_address);
@@ -58,7 +58,7 @@
   // |server_address| will be filled with the |server_address| passed to
   // CompressAndSendPacket. |version_present| will contain whether the
   // encapsulated |packet| contains a Version field.
-  bool DecompressDatagram(quiche::QuicheStringPiece datagram,
+  bool DecompressDatagram(absl::string_view datagram,
                           QuicConnectionId* client_connection_id,
                           QuicConnectionId* server_connection_id,
                           QuicSocketAddress* server_address,
diff --git a/quic/masque/masque_dispatcher.cc b/quic/masque/masque_dispatcher.cc
index 098090a..bc3b3be 100644
--- a/quic/masque/masque_dispatcher.cc
+++ b/quic/masque/masque_dispatcher.cc
@@ -30,7 +30,7 @@
     QuicConnectionId connection_id,
     const QuicSocketAddress& self_address,
     const QuicSocketAddress& peer_address,
-    quiche::QuicheStringPiece /*alpn*/,
+    absl::string_view /*alpn*/,
     const ParsedQuicVersion& version) {
   // The MasqueServerSession takes ownership of |connection| below.
   QuicConnection* connection =
diff --git a/quic/masque/masque_dispatcher.h b/quic/masque/masque_dispatcher.h
index e663b1c..9ba52ef 100644
--- a/quic/masque/masque_dispatcher.h
+++ b/quic/masque/masque_dispatcher.h
@@ -36,7 +36,7 @@
       QuicConnectionId connection_id,
       const QuicSocketAddress& self_address,
       const QuicSocketAddress& peer_address,
-      quiche::QuicheStringPiece alpn,
+      absl::string_view alpn,
       const ParsedQuicVersion& version) override;
 
   bool OnFailedToDispatchPacket(const ReceivedPacketInfo& packet_info) override;
diff --git a/quic/masque/masque_encapsulated_client_session.cc b/quic/masque/masque_encapsulated_client_session.cc
index 818ff76..628e7c8 100644
--- a/quic/masque/masque_encapsulated_client_session.cc
+++ b/quic/masque/masque_encapsulated_client_session.cc
@@ -23,7 +23,7 @@
       masque_client_session_(masque_client_session) {}
 
 void MasqueEncapsulatedClientSession::ProcessPacket(
-    quiche::QuicheStringPiece packet,
+    absl::string_view packet,
     QuicSocketAddress server_address) {
   QuicTime now = connection()->clock()->ApproximateNow();
   QuicReceivedPacket received_packet(packet.data(), packet.length(), now);
diff --git a/quic/masque/masque_encapsulated_client_session.h b/quic/masque/masque_encapsulated_client_session.h
index 75ccc1f..11e9601 100644
--- a/quic/masque/masque_encapsulated_client_session.h
+++ b/quic/masque/masque_encapsulated_client_session.h
@@ -42,7 +42,7 @@
       const MasqueEncapsulatedClientSession&) = delete;
 
   // From MasqueClientSession::EncapsulatedClientSession.
-  void ProcessPacket(quiche::QuicheStringPiece packet,
+  void ProcessPacket(absl::string_view packet,
                      QuicSocketAddress server_address) override;
 
   // From QuicSession.
diff --git a/quic/masque/masque_encapsulated_epoll_client.cc b/quic/masque/masque_encapsulated_epoll_client.cc
index 1f39862..934a8e5 100644
--- a/quic/masque/masque_encapsulated_epoll_client.cc
+++ b/quic/masque/masque_encapsulated_epoll_client.cc
@@ -27,7 +27,7 @@
     DCHECK(peer_address.IsInitialized());
     QUIC_DVLOG(1) << "MasquePacketWriter trying to write " << buf_len
                   << " bytes to " << peer_address;
-    quiche::QuicheStringPiece packet(buffer, buf_len);
+    absl::string_view packet(buffer, buf_len);
     client_->masque_client()->masque_client_session()->SendPacket(
         client_->session()->connection()->client_connection_id(),
         client_->session()->connection()->connection_id(), packet,
diff --git a/quic/masque/masque_server_backend.cc b/quic/masque/masque_server_backend.cc
index a3c2b97..a8944f0 100644
--- a/quic/masque/masque_server_backend.cc
+++ b/quic/masque/masque_server_backend.cc
@@ -3,8 +3,8 @@
 // found in the LICENSE file.
 
 #include "net/third_party/quiche/src/quic/masque/masque_server_backend.h"
+#include "absl/strings/string_view.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
-#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace quic {
 
@@ -40,9 +40,9 @@
     // This request is missing required headers.
     return false;
   }
-  quiche::QuicheStringPiece path = path_pair->second;
-  quiche::QuicheStringPiece scheme = scheme_pair->second;
-  quiche::QuicheStringPiece method = method_pair->second;
+  absl::string_view path = path_pair->second;
+  absl::string_view scheme = scheme_pair->second;
+  absl::string_view method = method_pair->second;
   if (scheme != "https" || method != "POST" || request_body.empty()) {
     // MASQUE requests MUST be a non-empty https POST.
     return false;
@@ -60,7 +60,7 @@
       // Cannot enforce missing authority.
       return false;
     }
-    quiche::QuicheStringPiece authority = authority_pair->second;
+    absl::string_view authority = authority_pair->second;
     if (server_authority_ != authority) {
       // This request does not match server_authority.
       return false;
diff --git a/quic/masque/masque_server_session.cc b/quic/masque/masque_server_session.cc
index e884e41..940bb61 100644
--- a/quic/masque/masque_server_session.cc
+++ b/quic/masque/masque_server_session.cc
@@ -30,7 +30,7 @@
   masque_server_backend_->RegisterBackendClient(connection_id(), this);
 }
 
-void MasqueServerSession::OnMessageReceived(quiche::QuicheStringPiece message) {
+void MasqueServerSession::OnMessageReceived(absl::string_view message) {
   QUIC_DVLOG(1) << "Received DATAGRAM frame of length " << message.length();
 
   QuicConnectionId client_connection_id, server_connection_id;
diff --git a/quic/masque/masque_server_session.h b/quic/masque/masque_server_session.h
index bc70f5e..f8688b3 100644
--- a/quic/masque/masque_server_session.h
+++ b/quic/masque/masque_server_session.h
@@ -48,7 +48,7 @@
   MasqueServerSession& operator=(const MasqueServerSession&) = delete;
 
   // From QuicSession.
-  void OnMessageReceived(quiche::QuicheStringPiece message) override;
+  void OnMessageReceived(absl::string_view message) override;
   void OnMessageAcked(QuicMessageId message_id,
                       QuicTime receive_timestamp) override;
   void OnMessageLost(QuicMessageId message_id) override;
