diff --git a/vpd-manager/editor_impl.cpp b/vpd-manager/editor_impl.cpp
index 898a925..727afac 100644
--- a/vpd-manager/editor_impl.cpp
+++ b/vpd-manager/editor_impl.cpp
@@ -527,7 +527,7 @@
 
                     // update the DBUS interface COM as well as XYZ path
                     prop.emplace("LocationCode", expandedLocationCode);
-                    // TODO depricate this com.ibm interface later
+                    // TODO deprecate this com.ibm interface later
                     interfaces.emplace(IBM_LOCATION_CODE_INF, prop);
                     interfaces.emplace(XYZ_LOCATION_CODE_INF, std::move(prop));
                 }
diff --git a/vpd-manager/editor_impl.hpp b/vpd-manager/editor_impl.hpp
index 3253332..98a2fa1 100644
--- a/vpd-manager/editor_impl.hpp
+++ b/vpd-manager/editor_impl.hpp
@@ -76,7 +76,7 @@
      * looks for the keyword name in that record. when found it updates the data
      * of keyword with the given data. It does not block keyword data update in
      * case the length of new data is greater than or less than the current data
-     * length. If the new data length is more than the length alotted to that
+     * length. If the new data length is more than the length allotted to that
      * keyword the new data will be truncated to update only the allotted
      * length. Similarly if the new data length is less then only that much data
      * will be updated for the keyword and remaining bits will be left
diff --git a/vpd-manager/gpioMonitor.hpp b/vpd-manager/gpioMonitor.hpp
index 078902a..790373b 100644
--- a/vpd-manager/gpioMonitor.hpp
+++ b/vpd-manager/gpioMonitor.hpp
@@ -40,7 +40,7 @@
     }
 
   private:
-    /** @brief GPIO informations to get parsed from vpd json*/
+    /** @brief GPIO information to get parsed from vpd json*/
 
     // gpio pin indicates presence/absence of fru
     const std::string presencePin;
@@ -88,7 +88,7 @@
     }
 
     /** @brief This function runs a timer , which keeps checking for if an event
-     *         happened, if event occured then takes action.
+     *         happened, if event occurred then takes action.
      *
      *  @param[in] ioContext - Pointer to io context object.
      */
@@ -107,7 +107,7 @@
 
 /** @class GpioMonitor
  *  @brief Responsible for initialising the private variables containing gpio
- *         infos. These informations will be fetched from vpd json.
+ *         infos. These information will be fetched from vpd json.
  */
 class GpioMonitor
 {
@@ -127,12 +127,12 @@
     }
 
   private:
-    // Json file to get the datas
+    // Json file to get the data
     nlohmann::json& jsonFile;
     // Array of event handlers for all the attachable FRUs
     std::vector<std::shared_ptr<GpioEventHandler>> gpioObjects;
 
-    /** @brief This function will extract the gpio informations from vpd json
+    /** @brief This function will extract the gpio information from vpd json
      * and store it in GpioEventHandler's private variables
      *
      * @param[in] ioContext - Pointer to io context object.
diff --git a/vpd-manager/manager.cpp b/vpd-manager/manager.cpp
index 767ea0b..7b5ae96 100644
--- a/vpd-manager/manager.cpp
+++ b/vpd-manager/manager.cpp
@@ -273,7 +273,7 @@
                 // detect if essential frus are present in the system.
                 checkEssentialFrus();
 
-                // check and perfrom recollection for FRUs replaceable at
+                // check and perform recollection for FRUs replaceable at
                 // standby.
                 performVPDRecollection();
                 return;
@@ -599,12 +599,12 @@
         // required.
         if (prePostActionRequired)
         {
-            // The sleep of 1sec is sliced up in 10 retries of 10 miliseconds
+            // The sleep of 1sec is sliced up in 10 retries of 10 milliseconds
             // each.
             for (auto retryCounter = VALUE_0; retryCounter <= VALUE_10;
                  retryCounter++)
             {
-                // sleep for 10 milisecond
+                // sleep for 10 millisecond
                 if (usleep(VALUE_100000) != VALUE_0)
                 {
                     std::cout << "Sleep failed before accessing the file"
