diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
index 00d77c8..67f1800 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
@@ -40,6 +40,7 @@
 #include <ctime>
 #include <fstream>
 #include <memory>
+#include <ranges>
 #include <span>
 
 namespace redfish
@@ -83,10 +84,9 @@
     getMsgFromRegistry(const std::string& messageKey,
                        const std::span<const MessageEntry>& registry)
 {
-    std::span<const MessageEntry>::iterator messageIt =
-        std::find_if(registry.begin(), registry.end(),
-                     [&messageKey](const MessageEntry& messageEntry) {
-        return messageKey == messageEntry.first;
+    std::span<const MessageEntry>::iterator messageIt = std::ranges::find_if(
+        registry, [&messageKey](const MessageEntry& messageEntry) {
+            return messageKey == messageEntry.first;
         });
     if (messageIt != registry.end())
     {
@@ -278,9 +278,8 @@
                        std::vector<std::string>& registryPrefixes,
                        std::vector<std::string>& metricReportDefinitions)
 {
-    sseFilter.erase(std::remove_if(sseFilter.begin(), sseFilter.end(),
-                                   isFilterQuerySpecialChar),
-                    sseFilter.end());
+    auto remove = std::ranges::remove_if(sseFilter, isFilterQuerySpecialChar);
+    sseFilter.erase(std::ranges::begin(remove), sseFilter.end());
 
     std::vector<std::string> result;
 
@@ -447,8 +446,7 @@
             // send everything.
             if (!registryPrefixes.empty())
             {
-                auto obj = std::find(registryPrefixes.begin(),
-                                     registryPrefixes.end(), registryName);
+                auto obj = std::ranges::find(registryPrefixes, registryName);
                 if (obj == registryPrefixes.end())
                 {
                     continue;
@@ -459,8 +457,7 @@
             // send everything.
             if (!registryMsgIds.empty())
             {
-                auto obj = std::find(registryMsgIds.begin(),
-                                     registryMsgIds.end(), messageKey);
+                auto obj = std::ranges::find(registryMsgIds, messageKey);
                 if (obj == registryMsgIds.end())
                 {
                     continue;
@@ -509,9 +506,8 @@
         // Empty list means no filter. Send everything.
         if (!metricReportDefinitions.empty())
         {
-            if (std::find(metricReportDefinitions.begin(),
-                          metricReportDefinitions.end(),
-                          mrdUri.buffer()) == metricReportDefinitions.end())
+            if (std::ranges::find(metricReportDefinitions, mrdUri.buffer()) ==
+                metricReportDefinitions.end())
             {
                 return;
             }
@@ -997,8 +993,8 @@
 
     size_t getNumberOfSSESubscriptions() const
     {
-        auto size = std::count_if(
-            subscriptionsMap.begin(), subscriptionsMap.end(),
+        auto size = std::ranges::count_if(
+            subscriptionsMap,
             [](const std::pair<std::string, std::shared_ptr<Subscription>>&
                    entry) {
             return (entry.second->subscriptionType == subscriptionTypeSSE);
@@ -1369,9 +1365,8 @@
         std::vector<std::string> invalidProps;
         msg.read(interface, props, invalidProps);
 
-        auto found =
-            std::find_if(props.begin(), props.end(),
-                         [](const auto& x) { return x.first == "Readings"; });
+        auto found = std::ranges::find_if(
+            props, [](const auto& x) { return x.first == "Readings"; });
         if (found == props.end())
         {
             BMCWEB_LOG_INFO("Failed to get Readings from Report properties");
diff --git a/redfish-core/include/redfish_aggregator.hpp b/redfish-core/include/redfish_aggregator.hpp
index 0cdf081..2514fae 100644
--- a/redfish-core/include/redfish_aggregator.hpp
+++ b/redfish-core/include/redfish_aggregator.hpp
@@ -9,6 +9,8 @@
 #include <boost/algorithm/string/predicate.hpp>
 
 #include <array>
+#include <ranges>
+#include <string_view>
 
 namespace redfish
 {
@@ -100,9 +102,8 @@
         return (searchType == SearchType::ContainsSubordinate) ||
                (searchType == SearchType::CollOrCon);
     }
-
-    const auto* it = std::lower_bound(
-        topCollections.begin(), topCollections.end(), parsedUrl->buffer());
+    std::string_view url = parsedUrl->buffer();
+    const auto* it = std::ranges::lower_bound(topCollections, url);
     if (it == topCollections.end())
     {
         // parsedUrl is alphabetically after the last entry in the array so it
diff --git a/redfish-core/include/utils/collection.hpp b/redfish-core/include/utils/collection.hpp
index 862be90..0801cd5 100644
--- a/redfish-core/include/utils/collection.hpp
+++ b/redfish-core/include/utils/collection.hpp
@@ -9,6 +9,7 @@
 #include <boost/url/url.hpp>
 #include <nlohmann/json.hpp>
 
+#include <ranges>
 #include <span>
 #include <string>
 #include <string_view>
@@ -68,8 +69,7 @@
             }
             pathNames.push_back(leaf);
         }
-        std::sort(pathNames.begin(), pathNames.end(),
-                  AlphanumLess<std::string>());
+        std::ranges::sort(pathNames, AlphanumLess<std::string>());
 
         nlohmann::json& members = asyncResp->res.jsonValue["Members"];
         members = nlohmann::json::array();
diff --git a/redfish-core/include/utils/json_utils.hpp b/redfish-core/include/utils/json_utils.hpp
index 5b4ad9a..f4e5385 100644
--- a/redfish-core/include/utils/json_utils.hpp
+++ b/redfish-core/include/utils/json_utils.hpp
@@ -32,6 +32,7 @@
 #include <limits>
 #include <map>
 #include <optional>
+#include <ranges>
 #include <span>
 #include <string>
 #include <string_view>
@@ -670,7 +671,7 @@
 // those whose |element[key]| is string.
 inline void sortJsonArrayByOData(nlohmann::json::array_t& array)
 {
-    std::sort(array.begin(), array.end(), ODataObjectLess());
+    std::ranges::sort(array, ODataObjectLess());
 }
 
 // Returns the estimated size of the JSON value
diff --git a/redfish-core/include/utils/query_param.hpp b/redfish-core/include/utils/query_param.hpp
index 696e323..5fa4852 100644
--- a/redfish-core/include/utils/query_param.hpp
+++ b/redfish-core/include/utils/query_param.hpp
@@ -30,6 +30,7 @@
 #include <map>
 #include <memory>
 #include <optional>
+#include <ranges>
 #include <string>
 #include <string_view>
 #include <system_error>
@@ -960,9 +961,8 @@
             constexpr std::array<std::string_view, 5> reservedProperties = {
                 "@odata.id", "@odata.type", "@odata.context", "@odata.etag",
                 "error"};
-            bool reserved = std::find(reservedProperties.begin(),
-                                      reservedProperties.end(),
-                                      it.key()) != reservedProperties.end();
+            bool reserved = std::ranges::find(reservedProperties, it.key()) !=
+                            reservedProperties.end();
             if (reserved || (nextNode != nullptr && nextNode->isSelected()))
             {
                 it = nextIt;
diff --git a/redfish-core/include/utils/sw_utils.hpp b/redfish-core/include/utils/sw_utils.hpp
index cffc637..4e1e066 100644
--- a/redfish-core/include/utils/sw_utils.hpp
+++ b/redfish-core/include/utils/sw_utils.hpp
@@ -13,6 +13,7 @@
 
 #include <algorithm>
 #include <array>
+#include <ranges>
 #include <string>
 #include <string_view>
 #include <vector>
@@ -125,8 +126,8 @@
                 // Look at Ids from
                 // /xyz/openbmc_project/software/functional
                 // to determine if this is a running image
-                if (std::find(functionalSwIds.begin(), functionalSwIds.end(),
-                              swId) != functionalSwIds.end())
+                if (std::ranges::find(functionalSwIds, swId) !=
+                    functionalSwIds.end())
                 {
                     runningImage = true;
                 }
@@ -367,8 +368,7 @@
         }
         std::string reqSwObjPath = "/xyz/openbmc_project/software/" + *swId;
 
-        if (std::find(objPaths.begin(), objPaths.end(), reqSwObjPath) !=
-            objPaths.end())
+        if (std::ranges::find(objPaths, reqSwObjPath) != objPaths.end())
         {
             asyncResp->res.jsonValue["Updateable"] = true;
             return;
