diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc
index d660380d5d9ca..4230fb5664f32 100644
--- a/content/browser/child_process_security_policy_impl.cc
+++ b/content/browser/child_process_security_policy_impl.cc
@@ -2931,7 +2931,7 @@ ChildProcessSecurityPolicyImpl::ParseIsolatedOrigins(
   std::vector<IsolatedOriginPattern> patterns;
   patterns.reserve(origin_strings.size());
 
-  for (const std::string_view& origin_string : origin_strings) {
+  for (std::string_view origin_string : origin_strings) {
     patterns.emplace_back(origin_string);
   }
 
diff --git a/content/browser/devtools/protocol/target_handler.cc b/content/browser/devtools/protocol/target_handler.cc
index 459e67a6adf33..9182bb327fdfb 100644
--- a/content/browser/devtools/protocol/target_handler.cc
+++ b/content/browser/devtools/protocol/target_handler.cc
@@ -545,7 +545,7 @@ class TargetHandler::Session : public DevToolsAgentHostClient {
     // TODO(johannes): For now, We need to copy here because
     // ReceivedMessageFromTarget is generated code and we're using const
     // std::string& for such parameters. Perhaps we should switch this to
-    // base::StringPiece?
+    // std::string_view?
     std::string message_copy(message.begin(), message.end());
     handler_->frontend_->ReceivedMessageFromTarget(id_, message_copy,
                                                    agent_host_->GetId());
diff --git a/content/browser/preloading/preloading_data_impl.cc b/content/browser/preloading/preloading_data_impl.cc
index 7c9cc65b99c4a..39d8356bed254 100644
--- a/content/browser/preloading/preloading_data_impl.cc
+++ b/content/browser/preloading/preloading_data_impl.cc
@@ -31,7 +31,7 @@ namespace {
 // static variable.
 static void CheckPreloadingPredictorValidity(PreloadingPredictor predictor) {
 #if DCHECK_IS_ON()
-  // Use `std::string` because we can't guarantee base::StringPiece has a static
+  // Use `std::string` because we can't guarantee std::string_view has a static
   // lifetime.
   static base::NoDestructor<std::vector<std::pair<int64_t, std::string>>>
       seen_predictors;
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 344610bc45327..5e6aaee94dd66 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -10285,7 +10285,7 @@ WebContentsImpl::ParseDownloadHeaders(const std::string& headers) {
   OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::ParseDownloadHeaders",
                         "headers", headers);
   download::DownloadUrlParameters::RequestHeadersType request_headers;
-  for (const std::string_view& key_value : base::SplitStringPiece(
+  for (std::string_view key_value : base::SplitStringPiece(
            headers, "\r\n", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY)) {
     std::vector<std::string> pair = base::SplitString(
         key_value, ":", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
diff --git a/content/browser/web_package/signed_exchange_cert_fetcher_unittest.cc b/content/browser/web_package/signed_exchange_cert_fetcher_unittest.cc
index 18d06ef690932..84a911554111e 100644
--- a/content/browser/web_package/signed_exchange_cert_fetcher_unittest.cc
+++ b/content/browser/web_package/signed_exchange_cert_fetcher_unittest.cc
@@ -186,7 +186,7 @@ class SignedExchangeCertFetcherTest : public testing::Test {
     return net::ImportCertFromFile(net::GetTestCertsDirectory(), "ok_cert.pem");
   }
 
-  static std::string CreateCertMessage(const std::string_view& cert_data) {
+  static std::string CreateCertMessage(std::string_view cert_data) {
     cbor::Value::MapValue cbor_map;
     cbor_map[cbor::Value("sct")] =
         cbor::Value("SCT", cbor::Value::Type::BYTE_STRING);
diff --git a/content/common/input/web_input_event_builders_mac_unittest.mm b/content/common/input/web_input_event_builders_mac_unittest.mm
index f53fced7dc16a..a8e9c6fc2e088 100644
--- a/content/common/input/web_input_event_builders_mac_unittest.mm
+++ b/content/common/input/web_input_event_builders_mac_unittest.mm
@@ -3,14 +3,16 @@
 // found in the LICENSE file.
 
 #include "content/common/input/web_input_event_builders_mac.h"
-#include "base/check.h"
 
 #include <Carbon/Carbon.h>
 #import <Cocoa/Cocoa.h>
 #include <stddef.h>
 
+#import <string_view>
+
 #include "base/apple/owned_objc.h"
 #include "base/apple/scoped_cftyperef.h"
+#include "base/check.h"
 #include "base/mac/mac_util.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/strings/utf_string_conversion_utils.h"
@@ -55,7 +57,7 @@ const ModifierKey kModifierKeys[] = {
 };
 
 NSEvent* BuildFakeKeyEvent(NSUInteger key_code,
-                           base::StringPiece16 character,
+                           std::u16string_view character,
                            NSUInteger modifier_flags,
                            NSEventType event_type) {
   NSString* string = base::SysUTF16ToNSString(character);
@@ -75,7 +77,7 @@ NSEvent* BuildFakeKeyEvent(NSUInteger key_code,
                            char16_t code_point,
                            NSUInteger modifier_flags,
                            NSEventType event_type) {
-  return BuildFakeKeyEvent(key_code, base::StringPiece16(&code_point, 1),
+  return BuildFakeKeyEvent(key_code, std::u16string_view(&code_point, 1),
                            modifier_flags, event_type);
 }
 
diff --git a/content/public/common/content_client.h b/content/public/common/content_client.h
index 42d78899b33b2..9dc2d5a33858d 100644
--- a/content/public/common/content_client.h
+++ b/content/public/common/content_client.h
@@ -166,7 +166,8 @@ class CONTENT_EXPORT ContentClient {
   virtual std::u16string GetLocalizedString(int message_id,
                                             const std::u16string& replacement);
 
-  // Return the contents of a resource in a StringPiece given the resource id.
+  // Return the contents of a resource in a std::string_view given the resource
+  // id.
   virtual std::string_view GetDataResource(
       int resource_id,
       ui::ResourceScaleFactor scale_factor);
diff --git a/content/public/test/browser_test_utils.cc b/content/public/test/browser_test_utils.cc
index 84ae94eb25c06..346a54403ba21 100644
--- a/content/public/test/browser_test_utils.cc
+++ b/content/public/test/browser_test_utils.cc
@@ -1549,7 +1549,7 @@ std::string AnnotateAndAdjustJsStackTraces(std::string_view js_error,
   // Loop over each line of |js_error|, and append each to |annotated_error| --
   // possibly rewriting to include extra context.
   std::ostringstream annotated_error;
-  for (const std::string_view& error_line : base::SplitStringPiece(
+  for (std::string_view error_line : base::SplitStringPiece(
            js_error, "\n", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL)) {
     // Does this look like a stack frame whose URL source matches |source_name|?
     if (base::MatchPattern(error_line, source_frame_pattern)) {
diff --git a/content/public/test/browser_test_utils.h b/content/public/test/browser_test_utils.h
index d7e74008663df..33ec41f43cf2d 100644
--- a/content/public/test/browser_test_utils.h
+++ b/content/public/test/browser_test_utils.h
@@ -630,8 +630,8 @@ void ExecuteScriptAsyncWithoutUserGesture(const ToRenderFrameHost& adapter,
                                           std::string_view script);
 
 // JsLiteralHelper is a helper class that determines what types are legal to
-// pass to StringifyJsLiteral. Legal types include int, string, StringPiece,
-// char*, bool, double, GURL, url::Origin, and base::Value&&.
+// pass to StringifyJsLiteral. Legal types include int, string,
+// std::string_view, char*, bool, double, GURL, url::Origin, and base::Value&&.
 template <typename T>
 struct JsLiteralHelper {
   // This generic version enables passing any type from which base::Value can be
@@ -663,7 +663,7 @@ struct JsLiteralHelper<url::Origin> {
 // Construct a list-type base::Value from a mix of arguments.
 //
 // Each |arg| can be any type explicitly convertible to base::Value
-// (including int/string/StringPiece/char*/double/bool), or any type that
+// (including int/string/std::string_view/char*/double/bool), or any type that
 // JsLiteralHelper is specialized for -- like URL and url::Origin, which emit
 // string literals. |args| can be a mix of different types.
 template <typename... Args>
@@ -683,7 +683,7 @@ base::Value ListValueOf(Args&&... args) {
 // escape string content, even if it contains slashes or quotation marks.
 //
 // Each |arg| can be any type explicitly convertible to base::Value
-// (including int/string/StringPiece/char*/double/bool), or any type that
+// (including int/string/std::string_view/char*/double/bool), or any type that
 // JsLiteralHelper is specialized for -- like URL and url::Origin, which emit
 // string literals. |args| can be a mix of different types.
 //
diff --git a/content/renderer/accessibility/annotations/ax_image_stopwords.cc b/content/renderer/accessibility/annotations/ax_image_stopwords.cc
index cb6b9b267f739..4703a0b7439a8 100644
--- a/content/renderer/accessibility/annotations/ax_image_stopwords.cc
+++ b/content/renderer/accessibility/annotations/ax_image_stopwords.cc
@@ -503,10 +503,10 @@ AXImageStopwords& AXImageStopwords::GetInstance() {
 
 AXImageStopwords::AXImageStopwords() {
   // Parse the newline-delimited stopwords from kImageStopwordsUtf8 and store
-  // them as a flat_set of type StringPiece. This is very memory-efficient
-  // because it avoids ever needing to copy any of the strings; each StringPiece
-  // is just a pointer into kImageStopwordsUtf8 and flat_set acts like a set but
-  // basically just does a binary search.
+  // them as a flat_set of type string_view. This is very memory-efficient
+  // because it avoids ever needing to copy any of the strings; each
+  // string_view is just a pointer into kImageStopwordsUtf8 and flat_set
+  // acts like a set but basically just does a binary search.
   std::vector<std::string_view> stopwords =
       base::SplitStringPiece(kImageStopwordsUtf8, "\n", base::TRIM_WHITESPACE,
                              base::SPLIT_WANT_NONEMPTY);
diff --git a/content/renderer/gpu_benchmarking_extension.cc b/content/renderer/gpu_benchmarking_extension.cc
index 628f7fe243141..b584ad615fcab 100644
--- a/content/renderer/gpu_benchmarking_extension.cc
+++ b/content/renderer/gpu_benchmarking_extension.cc
@@ -353,7 +353,7 @@ std::optional<gfx::Vector2dF> ToVector(const std::string& direction,
   return std::nullopt;
 }
 
-int ToKeyModifiers(const std::string_view& key) {
+int ToKeyModifiers(std::string_view key) {
   if (key == "Alt")
     return blink::WebInputEvent::kAltKey;
   if (key == "Control")
@@ -372,7 +372,7 @@ int ToKeyModifiers(const std::string_view& key) {
   return 0;
 }
 
-int ToButtonModifiers(const std::string_view& button) {
+int ToButtonModifiers(std::string_view button) {
   if (button == "Left")
     return blink::WebMouseEvent::kLeftButtonDown;
   if (button == "Middle")
@@ -854,7 +854,7 @@ bool GpuBenchmarking::SmoothScrollBy(gin::Arguments* args) {
   int modifiers = 0;
   std::vector<std::string_view> key_list = base::SplitStringPiece(
       keys_value, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
-  for (const std::string_view& key : key_list) {
+  for (std::string_view key : key_list) {
     int key_modifier = ToKeyModifiers(key);
     if (key_modifier == 0) {
       return false;
@@ -942,7 +942,7 @@ bool GpuBenchmarking::SmoothScrollByXY(gin::Arguments* args) {
   int modifiers = 0;
   std::vector<std::string_view> key_list = base::SplitStringPiece(
       keys_value, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
-  for (const std::string_view& key : key_list) {
+  for (std::string_view key : key_list) {
     int key_modifier = ToKeyModifiers(key);
     if (key_modifier == 0) {
       return false;
@@ -952,7 +952,7 @@ bool GpuBenchmarking::SmoothScrollByXY(gin::Arguments* args) {
 
   std::vector<std::string_view> button_list = base::SplitStringPiece(
       buttons_value, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
-  for (const std::string_view& button : button_list) {
+  for (std::string_view button : button_list) {
     int button_modifier = ToButtonModifiers(button);
     if (button_modifier == 0) {
       return false;
diff --git a/content/shell/browser/shell_content_browser_client.cc b/content/shell/browser/shell_content_browser_client.cc
index 14ff0f8a163b7..4b9938236c245 100644
--- a/content/shell/browser/shell_content_browser_client.cc
+++ b/content/shell/browser/shell_content_browser_client.cc
@@ -243,7 +243,7 @@ base::flat_set<url::Origin> GetIsolatedContextOriginSetFromFlag() {
       cmdline_origins, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
 
   base::flat_set<url::Origin> origin_set;
-  for (const std::string_view& origin_string : origin_strings) {
+  for (std::string_view origin_string : origin_strings) {
     url::Origin allowed_origin = url::Origin::Create(GURL(origin_string));
     if (!allowed_origin.opaque()) {
       origin_set.insert(allowed_origin);
diff --git a/content/web_test/renderer/test_runner.cc b/content/web_test/renderer/test_runner.cc
index 0cd72b59f3f4b..0714a0e04cf4b 100644
--- a/content/web_test/renderer/test_runner.cc
+++ b/content/web_test/renderer/test_runner.cc
@@ -2786,7 +2786,7 @@ printing::PageRanges TestRunner::GetPrintingPageRanges(
                              base::SPLIT_WANT_NONEMPTY);
   printing::PageRanges result;
 
-  for (const std::string_view& range_string : range_strings) {
+  for (std::string_view range_string : range_strings) {
     // The format for each range is "<int> | <int>? - <int>?" where the page
     // numbers are 1-indexed.
     const std::vector<std::string_view> page_strings = base::SplitStringPiece(