diff --git a/include/dbus_singleton.hpp b/include/dbus_singleton.hpp
index 67f57b7..2448636 100644
--- a/include/dbus_singleton.hpp
+++ b/include/dbus_singleton.hpp
@@ -6,8 +6,8 @@
 namespace connections
 {
 
-// Initialze before using!
-// Please see webserver_main for the example how this variable is initialzed,
+// Initialize before using!
+// Please see webserver_main for the example how this variable is initialized,
 // NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables)
 extern sdbusplus::asio::connection* systemBus;
 
diff --git a/include/http_utility.hpp b/include/http_utility.hpp
index 4f430ae..ae436ca 100644
--- a/include/http_utility.hpp
+++ b/include/http_utility.hpp
@@ -45,8 +45,8 @@
 }};
 
 inline ContentType
-    getPreferedContentType(std::string_view header,
-                           std::span<const ContentType> preferedOrder)
+    getPreferredContentType(std::string_view header,
+                            std::span<const ContentType> preferedOrder)
 {
     size_t lastIndex = 0;
     while (lastIndex < header.size() + 1)
@@ -103,7 +103,7 @@
                                  bool allowWildcard)
 {
     auto types = std::to_array({type});
-    ContentType allowed = getPreferedContentType(header, types);
+    ContentType allowed = getPreferredContentType(header, types);
     if (allowed == ContentType::ANY)
     {
         return allowWildcard;
diff --git a/include/human_sort.hpp b/include/human_sort.hpp
index fba9804..d248cba 100644
--- a/include/human_sort.hpp
+++ b/include/human_sort.hpp
@@ -98,7 +98,7 @@
 }
 
 // A generic template type compatible with std::less that can be used on generic
-// containers (set, map, ect)
+// containers (set, map, etc)
 template <class Type>
 struct AlphanumLess
 {
diff --git a/include/ibm/locks.hpp b/include/ibm/locks.hpp
index 2208aaf..7a161fc 100644
--- a/include/ibm/locks.hpp
+++ b/include/ibm/locks.hpp
@@ -379,7 +379,7 @@
         (static_cast<int>(std::get<4>(refLockRecord).size()) < 2))
     {
         BMCWEB_LOG_DEBUG("Validation of Number of Segments Failed");
-        BMCWEB_LOG_DEBUG("Number of Segments provied : {}",
+        BMCWEB_LOG_DEBUG("Number of Segments provided : {}",
                          std::get<4>(refLockRecord).size());
         return false;
     }
diff --git a/include/ssl_key_handler.hpp b/include/ssl_key_handler.hpp
index f8142cf..5ce7cc7 100644
--- a/include/ssl_key_handler.hpp
+++ b/include/ssl_key_handler.hpp
@@ -204,7 +204,7 @@
     BIO* certFileBio = BIO_new_file(filePath.c_str(), "rb");
     if (certFileBio == nullptr)
     {
-        BMCWEB_LOG_ERROR("Error occured during BIO_new_file call, FILE= {}",
+        BMCWEB_LOG_ERROR("Error occurred during BIO_new_file call, FILE= {}",
                          filePath);
         return nullptr;
     }
@@ -212,7 +212,7 @@
     X509* cert = X509_new();
     if (cert == nullptr)
     {
-        BMCWEB_LOG_ERROR("Error occured during X509_new call, {}",
+        BMCWEB_LOG_ERROR("Error occurred during X509_new call, {}",
                          ERR_get_error());
         BIO_free(certFileBio);
         return nullptr;
@@ -221,7 +221,7 @@
     if (PEM_read_bio_X509(certFileBio, &cert, nullptr, nullptr) == nullptr)
     {
         BMCWEB_LOG_ERROR(
-            "Error occured during PEM_read_bio_X509 call, FILE= {}", filePath);
+            "Error occurred during PEM_read_bio_X509 call, FILE= {}", filePath);
 
         BIO_free(certFileBio);
         X509_free(cert);
@@ -266,7 +266,7 @@
         if (x509 != nullptr)
         {
             // get a random number from the RNG for the certificate serial
-            // number If this is not random, regenerating certs throws broswer
+            // number If this is not random, regenerating certs throws browser
             // errors
             bmcweb::OpenSSLGenerator gen;
             std::uniform_int_distribution<int> dis(
