diff --git a/dbus/dbusconfiguration.cpp b/dbus/dbusconfiguration.cpp
index 7905e28..b1ff0b7 100644
--- a/dbus/dbusconfiguration.cpp
+++ b/dbus/dbusconfiguration.cpp
@@ -510,8 +510,8 @@
         ManagedObjectType configuration;
         try
         {
-            auto responce = bus.call(endpoint);
-            responce.read(configuration);
+            auto response = bus.call(endpoint);
+            response.read(configuration);
         }
         catch (const sdbusplus::exception_t&)
         {
diff --git a/dbus/dbuspassiveredundancy.cpp b/dbus/dbuspassiveredundancy.cpp
index 1ec2872..501aa5e 100644
--- a/dbus/dbuspassiveredundancy.cpp
+++ b/dbus/dbuspassiveredundancy.cpp
@@ -136,7 +136,8 @@
      *     }
      * }
      *
-     * This loops through this structure to pre-poulate the already failed items
+     * This loops through this structure to pre-populate the already failed
+     * items
      */
 
     for (const auto& [path, interfaceDict] : respData)
diff --git a/interfaces.hpp b/interfaces.hpp
index 7f4b4cd..bbd5b4a 100644
--- a/interfaces.hpp
+++ b/interfaces.hpp
@@ -23,7 +23,7 @@
     // This is normalized to (0.0, 1.0) range, using configured min and max
     double scaled;
 
-    // This is the raw value, as recieved from the input/output sensors
+    // This is the raw value, as received from the input/output sensors
     double unscaled;
 };
 
diff --git a/pid/pidcontroller.cpp b/pid/pidcontroller.cpp
index b33037f..0a56057 100644
--- a/pid/pidcontroller.cpp
+++ b/pid/pidcontroller.cpp
@@ -45,7 +45,7 @@
             output = ec::pid(info, input, setpt, &name);
 
             // this variable isn't actually used in this context, but we're
-            // setting it here incase somebody uses it later it's the correct
+            // setting it here in case somebody uses it later it's the correct
             // value
             lastInput = input;
         }
@@ -74,7 +74,7 @@
             output = ec::pid(info, input, setpt, &name);
 
             // this variable isn't actually used in this context, but we're
-            // setting it here incase somebody uses it later it's the correct
+            // setting it here in case somebody uses it later it's the correct
             // value
             lastInput = input;
         }
diff --git a/sysfs/util.cpp b/sysfs/util.cpp
index 5b12a30..8266040 100644
--- a/sysfs/util.cpp
+++ b/sysfs/util.cpp
@@ -24,7 +24,7 @@
 {
 
 /*
- * Replace "**" in the provided path string with an appopriate concrete path
+ * Replace "**" in the provided path string with an appropriate concrete path
  * component (the first directory entry found, on the assumption that there
  * will only be a single candidate).
  */
diff --git a/test/dbus_passive_unittest.cpp b/test/dbus_passive_unittest.cpp
index f37addf..bee64c7 100644
--- a/test/dbus_passive_unittest.cpp
+++ b/test/dbus_passive_unittest.cpp
@@ -453,7 +453,7 @@
 
 TEST_F(DbusPassiveTestObj, VerifyAvailableDeassert)
 {
-    // Verifies when Availble is deasserted && unavailableAsFailed == true,
+    // Verifies when Available is deasserted && unavailableAsFailed == true,
     // the sensor goes into error state
     EXPECT_CALL(sdbus_mock, sd_bus_message_ref(IsNull()))
         .WillOnce(Return(nullptr));
@@ -530,7 +530,7 @@
 
 TEST_F(DbusPassiveTestObj, VerifyAvailableAssert)
 {
-    // Verifies when Availble is asserted && unavailableAsFailed == true,
+    // Verifies when Available is asserted && unavailableAsFailed == true,
     // an error sensor goes back to normal state
     EXPECT_CALL(sdbus_mock, sd_bus_message_ref(IsNull()))
         .WillOnce(Return(nullptr));
@@ -655,7 +655,7 @@
 
 TEST_F(DbusPassiveTestUnaSensorNotAsFailedObj, VerifyAvailableDeassert)
 {
-    // Verifies when Availble is deasserted && unavailableAsFailed == false,
+    // Verifies when Available is deasserted && unavailableAsFailed == false,
     // the sensor remains at OK state but reading goes to NaN.
     EXPECT_CALL(sdbus_mock, sd_bus_message_ref(IsNull()))
         .WillOnce(Return(nullptr));
@@ -734,7 +734,7 @@
 
 TEST_F(DbusPassiveTestUnaSensorNotAsFailedObj, VerifyAvailableAssert)
 {
-    // Verifies when a sensor's state goes from unavailble to available
+    // Verifies when a sensor's state goes from unavailable to available
     // && unavailableAsFailed == false, this sensor remains at OK state.
     EXPECT_CALL(sdbus_mock, sd_bus_message_ref(IsNull()))
         .WillOnce(Return(nullptr));
