diff --git a/COMMON_ERRORS.md b/COMMON_ERRORS.md
index 6cb7340..aa4b042 100644
--- a/COMMON_ERRORS.md
+++ b/COMMON_ERRORS.md
@@ -23,7 +23,7 @@
 ## 2. String views aren't null terminated
 
 ```cpp
-int getIntFromString(const std::string_view s){
+int getIntFromString(std::string_view s){
     return std::atoi(s.data());
 }
 ```
diff --git a/http/http_request.hpp b/http/http_request.hpp
index d203077..405db87 100644
--- a/http/http_request.hpp
+++ b/http/http_request.hpp
@@ -92,7 +92,7 @@
         return req.target();
     }
 
-    bool target(const std::string_view target)
+    bool target(std::string_view target)
     {
         req.target(target);
         return setUrlInfo();
diff --git a/http/http_response.hpp b/http/http_response.hpp
index f9204e4..5cbdb28 100644
--- a/http/http_response.hpp
+++ b/http/http_response.hpp
@@ -27,7 +27,7 @@
 
     nlohmann::json jsonValue;
 
-    void addHeader(const std::string_view key, const std::string_view value)
+    void addHeader(std::string_view key, std::string_view value)
     {
         stringResponse->set(key, value);
     }
diff --git a/http/routing.hpp b/http/routing.hpp
index 5b3ddfe..ae63f05 100644
--- a/http/routing.hpp
+++ b/http/routing.hpp
@@ -422,7 +422,7 @@
         return *p;
     }
 
-    self_t& name(const std::string_view name) noexcept
+    self_t& name(std::string_view name) noexcept
     {
         self_t* self = static_cast<self_t*>(this);
         self->nameStr = name;
@@ -663,7 +663,7 @@
     }
 
     template <typename Func>
-    void operator()(const std::string_view name, Func&& f)
+    void operator()(std::string_view name, Func&& f)
     {
         nameStr = name;
         (*this).template operator()<Func>(std::forward(f));
@@ -807,7 +807,7 @@
     }
 
     std::pair<unsigned, RoutingParams>
-        find(const std::string_view reqUrl, const Node* node = nullptr,
+        find(std::string_view reqUrl, const Node* node = nullptr,
              size_t pos = 0, RoutingParams* params = nullptr) const
     {
         RoutingParams empty;
diff --git a/http/utility.hpp b/http/utility.hpp
index 4ea44d5..71f39c8 100644
--- a/http/utility.hpp
+++ b/http/utility.hpp
@@ -378,7 +378,7 @@
     using arg = std::tuple_element_t<i, boost::callable_traits::args_t<T>>;
 };
 
-inline std::string base64encode(const std::string_view data)
+inline std::string base64encode(std::string_view data)
 {
     const std::array<char, 64> key = {
         'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
@@ -438,7 +438,7 @@
 
 // TODO this is temporary and should be deleted once base64 is refactored out of
 // crow
-inline bool base64Decode(const std::string_view input, std::string& output)
+inline bool base64Decode(std::string_view input, std::string& output)
 {
     static const char nop = static_cast<char>(-1);
     // See note on encoding_data[] in above function
@@ -541,8 +541,7 @@
     return true;
 }
 
-inline bool constantTimeStringCompare(const std::string_view a,
-                                      const std::string_view b)
+inline bool constantTimeStringCompare(std::string_view a, std::string_view b)
 {
     // Important note, this function is ONLY constant time if the two input
     // sizes are the same
@@ -555,7 +554,7 @@
 
 struct ConstantTimeCompare
 {
-    bool operator()(const std::string_view a, const std::string_view b) const
+    bool operator()(std::string_view a, std::string_view b) const
     {
         return constantTimeStringCompare(a, b);
     }
@@ -567,7 +566,7 @@
     appendUrlPieces(boost::urls::url& url,
                     const std::initializer_list<std::string_view> args)
 {
-    for (const std::string_view& arg : args)
+    for (std::string_view arg : args)
     {
         url.segments().push_back(arg);
     }
@@ -696,7 +695,7 @@
 
 inline boost::urls::url replaceUrlSegment(const boost::urls::url_view& urlView,
                                           const uint replaceLoc,
-                                          const std::string_view newSegment)
+                                          std::string_view newSegment)
 {
     const boost::urls::segments_view& urlSegments = urlView.segments();
     boost::urls::url url("/");
diff --git a/http/websocket.hpp b/http/websocket.hpp
index 0ab13f2..c36e579 100644
--- a/http/websocket.hpp
+++ b/http/websocket.hpp
@@ -148,7 +148,7 @@
         });
     }
 
-    void sendBinary(const std::string_view msg) override
+    void sendBinary(std::string_view msg) override
     {
         ws.binary(true);
         outBuffer.emplace_back(msg);
@@ -162,7 +162,7 @@
         doWrite();
     }
 
-    void sendText(const std::string_view msg) override
+    void sendText(std::string_view msg) override
     {
         ws.text(true);
         outBuffer.emplace_back(msg);
@@ -176,7 +176,7 @@
         doWrite();
     }
 
-    void close(const std::string_view msg) override
+    void close(std::string_view msg) override
     {
         ws.async_close(
             {boost::beast::websocket::close_code::normal, msg},
diff --git a/include/http_utility.hpp b/include/http_utility.hpp
index cf3ddc2..8f2478f 100644
--- a/include/http_utility.hpp
+++ b/include/http_utility.hpp
@@ -109,7 +109,7 @@
     return type == allowed;
 }
 
-inline std::string urlEncode(const std::string_view value)
+inline std::string urlEncode(std::string_view value)
 {
     std::ostringstream escaped;
     escaped.fill('0');
diff --git a/include/human_sort.hpp b/include/human_sort.hpp
index f4dfbe0..7ab326d 100644
--- a/include/human_sort.hpp
+++ b/include/human_sort.hpp
@@ -22,8 +22,7 @@
 
 } // namespace details
 
-inline int alphanumComp(const std::string_view left,
-                        const std::string_view right)
+inline int alphanumComp(std::string_view left, std::string_view right)
 {
 
     std::string_view::const_iterator l = left.begin();
diff --git a/include/ibm/utils.hpp b/include/ibm/utils.hpp
index 256cbc5..bb439ee 100644
--- a/include/ibm/utils.hpp
+++ b/include/ibm/utils.hpp
@@ -10,7 +10,7 @@
 namespace ibm_utils
 {
 
-inline bool createDirectory(const std::string_view path)
+inline bool createDirectory(std::string_view path)
 {
     // Create persistent directory
     std::error_code ec;
diff --git a/include/nbd_proxy.hpp b/include/nbd_proxy.hpp
index 3472c3a..500ea76 100644
--- a/include/nbd_proxy.hpp
+++ b/include/nbd_proxy.hpp
@@ -109,7 +109,7 @@
             "xyz.openbmc_project.VirtualMedia.Proxy", "Mount");
     }
 
-    void send(const std::string_view data)
+    void send(std::string_view data)
     {
         boost::asio::buffer_copy(ws2uxBuf.prepare(data.size()),
                                  boost::asio::buffer(data));
diff --git a/include/openbmc_dbus_rest.hpp b/include/openbmc_dbus_rest.hpp
index 9bf968a..3035105 100644
--- a/include/openbmc_dbus_rest.hpp
+++ b/include/openbmc_dbus_rest.hpp
@@ -108,8 +108,7 @@
 
 inline void setErrorResponse(crow::Response& res,
                              boost::beast::http::status result,
-                             const std::string& desc,
-                             const std::string_view msg)
+                             const std::string& desc, std::string_view msg)
 {
     res.result(result);
     res.jsonValue["data"]["description"] = desc;
diff --git a/include/pam_authenticate.hpp b/include/pam_authenticate.hpp
index ca8c8d3..5802078 100644
--- a/include/pam_authenticate.hpp
+++ b/include/pam_authenticate.hpp
@@ -83,8 +83,8 @@
  * @param username The provided username aka account name.
  * @param password The provided password.
  * @returns PAM error code or PAM_SUCCESS for success. */
-inline int pamAuthenticateUser(const std::string_view username,
-                               const std::string_view password)
+inline int pamAuthenticateUser(std::string_view username,
+                               std::string_view password)
 {
     std::string userStr(username);
     std::string passStr(password);
diff --git a/include/security_headers.hpp b/include/security_headers.hpp
index d724de4..9877bb0 100644
--- a/include/security_headers.hpp
+++ b/include/security_headers.hpp
@@ -58,7 +58,7 @@
                                                  "object-src *; "
                                                  "base-uri *");
 
-        const std::string_view origin = req.getHeaderValue("Origin");
+        std::string_view origin = req.getHeaderValue("Origin");
         res.addHeader(bf::access_control_allow_origin, origin);
         res.addHeader(bf::access_control_allow_methods, "GET, "
                                                         "POST, "
diff --git a/include/sessions.hpp b/include/sessions.hpp
index 19a1793..9795719 100644
--- a/include/sessions.hpp
+++ b/include/sessions.hpp
@@ -201,8 +201,7 @@
 {
   public:
     std::shared_ptr<UserSession> generateUserSession(
-        const std::string_view username,
-        const boost::asio::ip::address& clientIp,
+        std::string_view username, const boost::asio::ip::address& clientIp,
         const std::optional<std::string>& clientId,
         PersistenceType persistence = PersistenceType::TIMEOUT,
         bool isConfigureSelfOnly = false)
@@ -264,8 +263,7 @@
         return it.first->second;
     }
 
-    std::shared_ptr<UserSession>
-        loginSessionByToken(const std::string_view token)
+    std::shared_ptr<UserSession> loginSessionByToken(std::string_view token)
     {
         applySessionTimeouts();
         if (token.size() != sessionTokenSize)
@@ -282,7 +280,7 @@
         return userSession;
     }
 
-    std::shared_ptr<UserSession> getSessionByUid(const std::string_view uid)
+    std::shared_ptr<UserSession> getSessionByUid(std::string_view uid)
     {
         applySessionTimeouts();
         // TODO(Ed) this is inefficient
diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
index 976d043..9668e5d 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
@@ -114,7 +114,7 @@
     return nullptr;
 }
 
-static const Message* formatMessage(const std::string_view& messageID)
+static const Message* formatMessage(std::string_view messageID)
 {
     // Redfish MessageIds are in the form
     // RegistryName.MajorVersion.MinorVersion.MessageKey, so parse it to find
diff --git a/redfish-core/include/privileges.hpp b/redfish-core/include/privileges.hpp
index 6227681..08e554a 100644
--- a/redfish-core/include/privileges.hpp
+++ b/redfish-core/include/privileges.hpp
@@ -110,7 +110,7 @@
      * @return               None
      *
      */
-    bool setSinglePrivilege(const std::string_view privilege)
+    bool setSinglePrivilege(std::string_view privilege)
     {
         for (size_t searchIndex = 0; searchIndex < privilegeNames.size();
              searchIndex++)
diff --git a/redfish-core/include/redfish_aggregator.hpp b/redfish-core/include/redfish_aggregator.hpp
index c2c2e1d..080e67e 100644
--- a/redfish-core/include/redfish_aggregator.hpp
+++ b/redfish-core/include/redfish_aggregator.hpp
@@ -44,7 +44,7 @@
 // Determines if the passed property contains a URI.  Those property names
 // either end with a case-insensitive version of "uri" or are specifically
 // defined in the above array.
-inline bool isPropertyUri(const std::string_view propertyName)
+inline bool isPropertyUri(std::string_view propertyName)
 {
     return boost::iends_with(propertyName, "uri") ||
            std::binary_search(nonUriProperties.begin(), nonUriProperties.end(),
diff --git a/redfish-core/include/registries.hpp b/redfish-core/include/registries.hpp
index da8fa85..03e8bc5 100644
--- a/redfish-core/include/registries.hpp
+++ b/redfish-core/include/registries.hpp
@@ -61,7 +61,7 @@
 {
     std::string ret;
     size_t reserve = msg.size();
-    for (const std::string_view& arg : messageArgs)
+    for (std::string_view arg : messageArgs)
     {
         reserve += arg.size();
     }
@@ -102,7 +102,7 @@
     std::string msg =
         redfish::registries::fillMessageArgs(args, entry.second.message);
     nlohmann::json jArgs = nlohmann::json::array();
-    for (const std::string_view arg : args)
+    for (std::string_view arg : args)
     {
         jArgs.push_back(arg);
     }
diff --git a/redfish-core/include/resource_messages.hpp b/redfish-core/include/resource_messages.hpp
index 3153935..309b293 100644
--- a/redfish-core/include/resource_messages.hpp
+++ b/redfish-core/include/resource_messages.hpp
@@ -11,7 +11,7 @@
 
 inline nlohmann::json
     getLogResourceEvent(redfish::registries::resource_event::Index name,
-                        std::span<const std::string_view> args)
+                        std::span<std::string_view> args)
 {
     size_t index = static_cast<size_t>(name);
     if (index >= redfish::registries::resource_event::registry.size())
diff --git a/redfish-core/lib/certificate_service.hpp b/redfish-core/lib/certificate_service.hpp
index 16f26e3..93cb366 100644
--- a/redfish-core/lib/certificate_service.hpp
+++ b/redfish-core/lib/certificate_service.hpp
@@ -148,7 +148,7 @@
  * @return None
  */
 static void updateCertIssuerOrSubject(nlohmann::json& out,
-                                      const std::string_view value)
+                                      std::string_view value)
 {
     // example: O=openbmc-project.xyz,CN=localhost
     std::string_view::iterator i = value.begin();
@@ -163,16 +163,14 @@
         {
             break;
         }
-        const std::string_view key(tokenBegin,
-                                   static_cast<size_t>(i - tokenBegin));
+        std::string_view key(tokenBegin, static_cast<size_t>(i - tokenBegin));
         ++i;
         tokenBegin = i;
         while (i != value.end() && *i != ',')
         {
             ++i;
         }
-        const std::string_view val(tokenBegin,
-                                   static_cast<size_t>(i - tokenBegin));
+        std::string_view val(tokenBegin, static_cast<size_t>(i - tokenBegin));
         if (key == "L")
         {
             out["City"] = val;
diff --git a/redfish-core/lib/log_services.hpp b/redfish-core/lib/log_services.hpp
index bb9552a..ee57557 100644
--- a/redfish-core/lib/log_services.hpp
+++ b/redfish-core/lib/log_services.hpp
@@ -91,7 +91,7 @@
     return nullptr;
 }
 
-static const Message* getMessage(const std::string_view& messageID)
+static const Message* getMessage(std::string_view messageID)
 {
     // Redfish MessageIds are in the form
     // RegistryName.MajorVersion.MinorVersion.MessageKey, so parse it to find
@@ -157,7 +157,7 @@
 }
 
 inline static int getJournalMetadata(sd_journal* journal,
-                                     const std::string_view& field,
+                                     std::string_view field,
                                      std::string_view& contents)
 {
     const char* data = nullptr;
@@ -179,8 +179,8 @@
 }
 
 inline static int getJournalMetadata(sd_journal* journal,
-                                     const std::string_view& field,
-                                     const int& base, long int& contents)
+                                     std::string_view field, const int& base,
+                                     long int& contents)
 {
     int ret = 0;
     std::string_view metadata;
@@ -3321,8 +3321,7 @@
     invalid,
 };
 
-inline OEMDiagnosticType
-    getOEMDiagnosticType(const std::string_view& oemDiagStr)
+inline OEMDiagnosticType getOEMDiagnosticType(std::string_view oemDiagStr)
 {
     if (oemDiagStr == "OnDemand")
     {
diff --git a/redfish-core/lib/redfish_v1.hpp b/redfish-core/lib/redfish_v1.hpp
index b4349ab..4cae985 100644
--- a/redfish-core/lib/redfish_v1.hpp
+++ b/redfish-core/lib/redfish_v1.hpp
@@ -83,7 +83,7 @@
     json["Name"] = "JsonSchemaFile Collection";
     json["Description"] = "Collection of JsonSchemaFiles";
     nlohmann::json::array_t members;
-    for (const std::string_view schema : schemas)
+    for (std::string_view schema : schemas)
     {
         nlohmann::json::object_t member;
         member["@odata.id"] = crow::utility::urlFromPieces(
diff --git a/redfish-core/lib/task.hpp b/redfish-core/lib/task.hpp
index 563f06f..95fa0c0 100644
--- a/redfish-core/lib/task.hpp
+++ b/redfish-core/lib/task.hpp
@@ -196,7 +196,7 @@
         });
     }
 
-    static void sendTaskEvent(const std::string_view state, size_t index)
+    static void sendTaskEvent(std::string_view state, size_t index)
     {
         std::string origin =
             "/redfish/v1/TaskService/Tasks/" + std::to_string(index);
diff --git a/test/http/router_test.cpp b/test/http/router_test.cpp
index 9b5d9be..79320f7 100644
--- a/test/http/router_test.cpp
+++ b/test/http/router_test.cpp
@@ -36,7 +36,7 @@
     Router router;
     std::error_code ec;
 
-    constexpr const std::string_view url = "/foo";
+    constexpr std::string_view url = "/foo";
 
     Request req{{boost::beast::http::verb::get, url, 11}, ec};
 
@@ -75,7 +75,7 @@
     Router router;
     std::error_code ec;
 
-    constexpr const std::string_view url = "/foo/bar";
+    constexpr std::string_view url = "/foo/bar";
 
     Request req{{boost::beast::http::verb::get, url, 11}, ec};
 
@@ -105,7 +105,7 @@
     Router router;
     std::error_code ec;
 
-    constexpr const std::string_view url = "/foo/bar";
+    constexpr std::string_view url = "/foo/bar";
 
     Request req{{boost::beast::http::verb::patch, url, 11}, ec};
 
