diff --git a/include/pattern.hpp b/include/pattern.hpp
index 7e9b126..3a15dff 100644
--- a/include/pattern.hpp
+++ b/include/pattern.hpp
@@ -23,7 +23,7 @@
      */
     Pattern(std::string_view inDevPath) : Erase(inDevPath) {}
 
-    /** @brief writes an uncompressible random pattern to the drive, using
+    /** @brief writes an incompressible random pattern to the drive, using
      * default parameters. It also throws errors accordingly.
      */
     void writePattern()
@@ -33,7 +33,7 @@
         writePattern(util::findSizeOfBlockDevice(devPath), fd);
     }
 
-    /** @brief writes an uncompressible random pattern to the drive
+    /** @brief writes an incompressible random pattern to the drive
      * and throws errors accordingly.
      *
      *  @param[in] bytes - Size of the block device
@@ -41,7 +41,7 @@
      */
     void writePattern(uint64_t driveSize, Fd& fd);
 
-    /** @brief verifies the uncompressible random pattern is on the drive, using
+    /** @brief verifies the incompressible random pattern is on the drive, using
      * default parameters. It also throws errors accordingly.
      */
     void verifyPattern()
@@ -51,7 +51,7 @@
         verifyPattern(util::findSizeOfBlockDevice(devPath), fd);
     }
 
-    /** @brief verifies the uncompressible random pattern is on the drive
+    /** @brief verifies the incompressible random pattern is on the drive
      * and throws errors accordingly.
      *
      *  @param[in] bytes - Size of the block device
diff --git a/include/sanitize.hpp b/include/sanitize.hpp
index 91cf103..a9ba8e8 100644
--- a/include/sanitize.hpp
+++ b/include/sanitize.hpp
@@ -70,7 +70,7 @@
 class Sanitize : public Erase
 {
   public:
-    /** @breif Creates a sanitize erase object
+    /** @brief Creates a sanitize erase object
      *
      * @param[in] inDevPath - the linux device path for the block device.
      * @param[in] IOCTLWrapper - This is a ioctl wrapper, it can be used for
@@ -83,13 +83,13 @@
         ioctlWrapper(std::move(inIOCTL))
     {}
 
-    /** @brief sanitize the drive, using eMMC specifed erase commands
+    /** @brief sanitize the drive, using eMMC specified erase commands
      *
      * param[in] driveSize - size of the drive in bytes
      */
     void doSanitize(uint64_t driveSize);
 
-    /** @brief sanitize the drive, using eMMC specifed erase commands
+    /** @brief sanitize the drive, using eMMC specified erase commands
      *   This function uses the built in utils to call sanitize
      */
     void doSanitize()
diff --git a/include/util.hpp b/include/util.hpp
index e1050ed..5f96c0d 100644
--- a/include/util.hpp
+++ b/include/util.hpp
@@ -41,7 +41,7 @@
 
 /** @brief finds the predicted life left for a eMMC device
  *  @param[in] sysfsPath - The path to the linux sysfs interface
- *  @return the life remaing for the emmc, as a percentage.
+ *  @return the life remaining for the emmc, as a percentage.
  */
 uint8_t findPredictedMediaLifeLeftPercent(const std::string& sysfsPath);
 
diff --git a/src/erase/cryptoErase.cpp b/src/erase/cryptoErase.cpp
index 530ed8d..08553f7 100644
--- a/src/erase/cryptoErase.cpp
+++ b/src/erase/cryptoErase.cpp
@@ -52,7 +52,7 @@
         throw ResourceNotFound();
     }
 
-    /* destory working keyslots */
+    /* destroy working keyslots */
     bool keySlotIssue = false;
     for (int i = 0; i < nKeySlots; i++)
     {
diff --git a/src/erase/pattern.cpp b/src/erase/pattern.cpp
index 7855fc9..3d6c27b 100644
--- a/src/erase/pattern.cpp
+++ b/src/erase/pattern.cpp
@@ -25,7 +25,7 @@
 
 void Pattern::writePattern(const uint64_t driveSize, Fd& fd)
 {
-    // static seed defines a fixed prng sequnce so it can be verified later,
+    // static seed defines a fixed prng sequence so it can be verified later,
     // and validated for entropy
     uint64_t currentIndex = 0;
 
diff --git a/src/test/erase/pattern_test.cpp b/src/test/erase/pattern_test.cpp
index b3cdfee..bccbd37 100644
--- a/src/test/erase/pattern_test.cpp
+++ b/src/test/erase/pattern_test.cpp
@@ -48,7 +48,7 @@
 }
 
 /* This test that pattern writes the correct number of bytes even if
- * size of the drive is not divisable by the block size
+ * size of the drive is not divisible by the block size
  */
 
 TEST(pattern, patternNotDivisible)
diff --git a/src/test/erase/zero_test.cpp b/src/test/erase/zero_test.cpp
index f57cd62..ee9dd50 100644
--- a/src/test/erase/zero_test.cpp
+++ b/src/test/erase/zero_test.cpp
@@ -43,7 +43,7 @@
 }
 
 /* This test that pattern writes the correct number of bytes even if
- * size of the drive is not divisable by the block size
+ * size of the drive is not divisible by the block size
  */
 TEST(Zeros, notDivisible)
 {
