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;
                             }
