diff --git a/redfish-core/include/error_messages.hpp b/redfish-core/include/error_messages.hpp
index 6c5952d..09ac36e 100644
--- a/redfish-core/include/error_messages.hpp
+++ b/redfish-core/include/error_messages.hpp
@@ -554,7 +554,7 @@
 
 /**
  * @brief Formats OperationTimeout message into JSON
- * Message body: "A timeout internal to the service occured as part of the
+ * Message body: "A timeout internal to the service occurred as part of the
  * request.  Partial results may have been returned."
  *
  *
@@ -1058,7 +1058,7 @@
 
 /**
  * @brief Formats InsufficientStorage message into JSON
- * Message body: "Insufficent storage or memory available to complete the
+ * Message body: "Insufficient storage or memory available to complete the
  *  request."
  * @returns Message InsufficientStorage formatted to JSON */
 nlohmann::json insufficientStorage();
diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
index acdb00e..7399d2e 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
@@ -1072,7 +1072,7 @@
                 std::string strMsg = msgJson.dump(
                     2, ' ', true, nlohmann::json::error_handler_t::replace);
                 entry->sendEvent(std::move(strMsg));
-                eventId++; // increament the eventId
+                eventId++; // increment the eventId
             }
             else
             {
diff --git a/redfish-core/include/redfish_aggregator.hpp b/redfish-core/include/redfish_aggregator.hpp
index 680e1b0..4ce25fd 100644
--- a/redfish-core/include/redfish_aggregator.hpp
+++ b/redfish-core/include/redfish_aggregator.hpp
@@ -343,7 +343,7 @@
                 continue;
             }
 
-            // Recusively parse the rest of the json
+            // Recursively parse the rest of the json
             addPrefixes(item.second, prefix);
         }
         return;
diff --git a/redfish-core/include/utils/query_param.hpp b/redfish-core/include/utils/query_param.hpp
index 5fa4852..55c92bc 100644
--- a/redfish-core/include/utils/query_param.hpp
+++ b/redfish-core/include/utils/query_param.hpp
@@ -689,7 +689,7 @@
 // Formats a query parameter string for the sub-query.
 // Returns std::nullopt on failures.
 // This function shall handle $select when it is added.
-// There is no need to handle parameters that's not campatible with $expand,
+// There is no need to handle parameters that's not compatible with $expand,
 // e.g., $only, since this function will only be called in side $expand handlers
 inline std::optional<std::string> formatQueryForExpand(const Query& query)
 {
@@ -727,7 +727,7 @@
     return str;
 }
 
-// Propogates the worst error code to the final response.
+// Propagates the worst error code to the final response.
 // The order of error code is (from high to low)
 // 500 Internal Server Error
 // 511 Network Authentication Required
@@ -741,7 +741,7 @@
 // 502 Bad Gateway
 // 501 Not Implemented
 // 401 Unauthorized
-// 451 - 409 Error codes (not listed explictly)
+// 451 - 409 Error codes (not listed explicitly)
 // 408 Request Timeout
 // 407 Proxy Authentication Required
 // 406 Not Acceptable
@@ -753,7 +753,7 @@
 inline unsigned propogateErrorCode(unsigned finalCode, unsigned subResponseCode)
 {
     // We keep a explicit list for error codes that this project often uses
-    // Higer priority codes are in lower indexes
+    // Higher priority codes are in lower indexes
     constexpr std::array<unsigned, 13> orderedCodes = {
         500, 507, 503, 502, 501, 401, 412, 409, 406, 405, 404, 403, 400};
     size_t finalCodeIndex = std::numeric_limits<size_t>::max();
@@ -790,7 +790,7 @@
     return std::max(finalCode, subResponseCode);
 }
 
-// Propogates all error messages into |finalResponse|
+// Propagates all error messages into |finalResponse|
 inline void propogateError(crow::Response& finalResponse,
                            crow::Response& subResponse)
 {
diff --git a/redfish-core/include/utils/time_utils.hpp b/redfish-core/include/utils/time_utils.hpp
index fbee6ce..ee7dd4a 100644
--- a/redfish-core/include/utils/time_utils.hpp
+++ b/redfish-core/include/utils/time_utils.hpp
@@ -391,7 +391,7 @@
 
 /**
  * Returns the current Date, Time & the local Time Offset
- * infromation in a pair
+ * information in a pair
  *
  * @param[in] None
  *
@@ -404,7 +404,7 @@
     std::string dateTime = getDateTimeStdtime(time);
 
     /* extract the local Time Offset value from the
-     * recevied dateTime string.
+     * received dateTime string.
      */
     std::string timeOffset("Z00:00");
     std::size_t lastPos = dateTime.size();
diff --git a/redfish-core/lib/account_service.hpp b/redfish-core/lib/account_service.hpp
index a6b8c49..d897fcd 100644
--- a/redfish-core/lib/account_service.hpp
+++ b/redfish-core/lib/account_service.hpp
@@ -152,7 +152,7 @@
         }
         else
         {
-            // Invalid user group name. Caller throws an excption.
+            // Invalid user group name. Caller throws an exception.
             return false;
         }
     }
diff --git a/redfish-core/lib/certificate_service.hpp b/redfish-core/lib/certificate_service.hpp
index 00e509d..8bdcb53 100644
--- a/redfish-core/lib/certificate_service.hpp
+++ b/redfish-core/lib/certificate_service.hpp
@@ -583,7 +583,7 @@
  * @brief Read data from CSR D-bus object and set to response
  *
  * @param[in] asyncResp Shared pointer to the response message
- * @param[in] certURI Link to certifiate collection URI
+ * @param[in] certURI Link to certificate collection URI
  * @param[in] service D-Bus service name
  * @param[in] certObjPath certificate D-Bus object path
  * @param[in] csrObjPath CSR D-Bus object path
diff --git a/redfish-core/lib/chassis.hpp b/redfish-core/lib/chassis.hpp
index 72f5011..06ce583 100644
--- a/redfish-core/lib/chassis.hpp
+++ b/redfish-core/lib/chassis.hpp
@@ -224,7 +224,7 @@
     }
     if (upstreamChassisPaths.size() > 1)
     {
-        BMCWEB_LOG_ERROR("{} is contained by mutliple chassis", chassisId);
+        BMCWEB_LOG_ERROR("{} is contained by multiple chassis", chassisId);
         messages::internalError(asyncResp->res);
         return;
     }
diff --git a/redfish-core/lib/event_service.hpp b/redfish-core/lib/event_service.hpp
index ee8fc5d..8bc8f9b 100644
--- a/redfish-core/lib/event_service.hpp
+++ b/redfish-core/lib/event_service.hpp
@@ -452,7 +452,7 @@
 
         if (context)
         {
-            // This value is selected aribitrarily.
+            // This value is selected arbitrarily.
             constexpr const size_t maxContextSize = 256;
             if (context->size() > maxContextSize)
             {
diff --git a/redfish-core/lib/led.hpp b/redfish-core/lib/led.hpp
index b5d12fb..baf9235 100644
--- a/redfish-core/lib/led.hpp
+++ b/redfish-core/lib/led.hpp
@@ -46,7 +46,7 @@
         if (ec == boost::system::errc::invalid_argument)
         {
             BMCWEB_LOG_DEBUG(
-                "Get identity blinking LED failed, missmatch in property type");
+                "Get identity blinking LED failed, mismatch in property type");
             messages::internalError(asyncResp->res);
             return;
         }
@@ -68,7 +68,7 @@
             if (ec2 == boost::system::errc::invalid_argument)
             {
                 BMCWEB_LOG_DEBUG(
-                    "Get enclosure identity led failed, missmatch in property type");
+                    "Get enclosure identity led failed, mismatch in property type");
                 messages::internalError(asyncResp->res);
                 return;
             }
@@ -176,7 +176,7 @@
         if (ec == boost::system::errc::invalid_argument)
         {
             BMCWEB_LOG_DEBUG(
-                "Get identity blinking LED failed, missmatch in property type");
+                "Get identity blinking LED failed, mismatch in property type");
             messages::internalError(asyncResp->res);
             return;
         }
@@ -198,7 +198,7 @@
             if (ec2 == boost::system::errc::invalid_argument)
             {
                 BMCWEB_LOG_DEBUG(
-                    "Get enclosure identity led failed, missmatch in property type");
+                    "Get enclosure identity led failed, mismatch in property type");
                 messages::internalError(asyncResp->res);
                 return;
             }
diff --git a/redfish-core/lib/redfish_sessions.hpp b/redfish-core/lib/redfish_sessions.hpp
index 341e6d0..7061c9a 100644
--- a/redfish-core/lib/redfish_sessions.hpp
+++ b/redfish-core/lib/redfish_sessions.hpp
@@ -311,7 +311,7 @@
 
     if (sessionTimeout)
     {
-        // The mininum & maximum allowed values for session timeout
+        // The minimum & maximum allowed values for session timeout
         // are 30 seconds and 86400 seconds respectively as per the
         // session service schema mentioned at
         // https://redfish.dmtf.org/schemas/v1/SessionService.v1_1_7.json
diff --git a/redfish-core/lib/sensors.hpp b/redfish-core/lib/sensors.hpp
index 530e1f1..19e32ce 100644
--- a/redfish-core/lib/sensors.hpp
+++ b/redfish-core/lib/sensors.hpp
@@ -718,7 +718,7 @@
  * @param sensorName  The name of the sensor to be built
  * @param sensorType  The type (temperature, fan_tach, etc) of the sensor to
  * build
- * @param chassisSubNode The subnode (thermal, sensor, ect) of the sensor
+ * @param chassisSubNode The subnode (thermal, sensor, etc) of the sensor
  * @param propertiesDict A dictionary of the properties to build the sensor
  * from.
  * @param sensorJson  The json object to fill
@@ -961,7 +961,7 @@
  * @param sensorName  The name of the sensor to be built
  * @param sensorType  The type (temperature, fan_tach, etc) of the sensor to
  * build
- * @param chassisSubNode The subnode (thermal, sensor, ect) of the sensor
+ * @param chassisSubNode The subnode (thermal, sensor, etc) of the sensor
  * @param interfacesDict  A dictionary of the interfaces and properties of said
  * interfaces to be built from
  * @param sensorJson  The json object to fill
diff --git a/redfish-core/lib/update_service.hpp b/redfish-core/lib/update_service.hpp
index 2f0cc47..9ab1a3b 100644
--- a/redfish-core/lib/update_service.hpp
+++ b/redfish-core/lib/update_service.hpp
@@ -196,7 +196,7 @@
                                 // allow them time to complete the
                                 // update (probably cycle the
                                 // system) if this expires then
-                                // task will be cancelled
+                                // task will be canceled
                                 taskData->extendTimer(std::chrono::hours(5));
                                 return !task::completed;
                             }
