diff --git a/bmc/README.md b/bmc/README.md
index 4fbc49d..48e02aa 100644
--- a/bmc/README.md
+++ b/bmc/README.md
@@ -1,6 +1,6 @@
 # Format of Config file
 
-This document gives details about the format of the config file useed by log,
+This document gives details about the format of the config file used by log,
 version and firmware handler. The config file is a .json file.
 
 ### Parameters
diff --git a/bmc/buildjson.hpp b/bmc/buildjson.hpp
index f064b41..1ef00ef 100644
--- a/bmc/buildjson.hpp
+++ b/bmc/buildjson.hpp
@@ -59,7 +59,7 @@
     /**
      * Given a folder of json configs, build the configurations.
      *
-     * @param[in] directory - the directory to search (recurisvely).
+     * @param[in] directory - the directory to search (recursively).
      * @return list of HandlerConfig objects.
      */
     std::vector<HandlerConfig<T>> buildHandlerConfigs(const char* directory)
diff --git a/bmc/firmware-handler/firmware_handler.cpp b/bmc/firmware-handler/firmware_handler.cpp
index dc19b23..3d9b3fd 100644
--- a/bmc/firmware-handler/firmware_handler.cpp
+++ b/bmc/firmware-handler/firmware_handler.cpp
@@ -83,7 +83,7 @@
  * If there's an open firmware session, it'll already be present in the
  * list as "/flash/active/image", and if the hash has started,
  * "/flash/active/hash" regardless of mechanism.  This is done in the open
- * comamnd, no extra work is required here.
+ * command, no extra work is required here.
  */
 std::vector<std::string> FirmwareBlobHandler::getBlobIds()
 {
@@ -203,7 +203,7 @@
         return false;
     }
 
-    /* The size here refers to the size of the file -- of something analagous.
+    /* The size here refers to the size of the file -- of something analogous.
      */
     meta->size = (item->second->imageHandler)
                      ? item->second->imageHandler->getSize()
@@ -246,7 +246,7 @@
         }
     }
 
-    /* The blobState here relates to an active sesion, so we should return the
+    /* The blobState here relates to an active session, so we should return the
      * flags used to open this session.
      */
     meta->blobState = item->second->flags;
@@ -652,7 +652,7 @@
             /* They are closing a data pathway (image, tarball, hash). */
             changeState(UpdateState::verificationPending);
 
-            /* Add verify blob ID now that we can expect it, IIF they also wrote
+            /* Add verify blob ID now that we can expect it, IF they also wrote
              * some data.
              */
             if (std::count(blobIDs.begin(), blobIDs.end(), activeImageBlobId))
diff --git a/bmc/firmware-handler/lpc_aspeed.cpp b/bmc/firmware-handler/lpc_aspeed.cpp
index 364aff5..047f87b 100644
--- a/bmc/firmware-handler/lpc_aspeed.cpp
+++ b/bmc/firmware-handler/lpc_aspeed.cpp
@@ -158,7 +158,7 @@
         return false;
     }
 
-    /* TOOD: There is no close() method here, to close mappedFd, or mappedRegion
+    /* TODO: There is no close() method here, to close mappedFd, or mappedRegion
      * -- therefore, a good next step will be to evaluate whether or not the
      * other pieces should go here...
      */
diff --git a/tools/io_interface.hpp b/tools/io_interface.hpp
index b31bdf9..8ed0af5 100644
--- a/tools/io_interface.hpp
+++ b/tools/io_interface.hpp
@@ -28,7 +28,7 @@
      *
      * @param[in] offset - offset into the host memory device.
      * @param[in] length - the number of bytes to copy from source.
-     * @param[in] source - the souce of the bytes to copy to the memory device.
+     * @param[in] source - the source of the bytes to copy to the memory device.
      * @return true on success, false on failure (such as unable to initialize
      * device).
      */
diff --git a/tools/pci.cpp b/tools/pci.cpp
index de3fb51..a6bc74d 100644
--- a/tools/pci.cpp
+++ b/tools/pci.cpp
@@ -128,7 +128,7 @@
 
     pci->pci_device_enable(dev);
 
-    /* We need to retain this direct write to config space eventhough
+    /* We need to retain this direct write to config space even though
      * pci_device_enable() should do it. Because currently disabling is done
      * through write to config space and not done through the proper api.
      * So libpciaccess ref count does not reset on disable. The
@@ -193,7 +193,7 @@
 
     pci->pci_device_enable(dev);
 
-    /* We need to retain this direct write to config space eventhough
+    /* We need to retain this direct write to config space even though
      * pci_device_enable() should do it. Because currently disabling is done
      * through write to config space and not done through the proper api.
      * So libpciaccess ref count does not reset on disable. The
