Fixed small spelling mistakes.
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 0559646..f2c0650 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -241,7 +241,7 @@
  Allow overriding proto3 mode (#228)
  Add optional enum->string mapping function (#223)
  Add transitional options.proto file (#241)
- Add better error message on Python library version imcompatibility (#240)
+ Add better error message on Python library version incompatibility (#240)
  Include version number in PlatformIO library.json (#222)
  CMake build script changes (#236, #237)
  Change download links to https
diff --git a/docs/migration.md b/docs/migration.md
index 78987fc..65d02c5 100644
--- a/docs/migration.md
+++ b/docs/migration.md
@@ -15,7 +15,7 @@
 
 **Required actions:** Most nanopb users probably never used that macro. If so,
 you certainly use the `#` preprocessor to convert it as string. You, now,
-only have to call it directly, like this for exemple:
+only have to call it directly, like this for example:
 `strcpy(myvar, NANOPB_VERSION);`
 
 Nanopb-0.4.4 (2020-11-25)
@@ -523,7 +523,7 @@
 
 ### Callback function signature
 
-**Rationale:** Previously the auxilary data to field callbacks was
+**Rationale:** Previously the auxiliary data to field callbacks was
 passed as `void*`. This allowed passing of any data, but made it
 unnecessarily complex to return a pointer from callback.
 
diff --git a/extra/FindNanopb.cmake b/extra/FindNanopb.cmake
index a6c34fa..206f5e6 100644
--- a/extra/FindNanopb.cmake
+++ b/extra/FindNanopb.cmake
@@ -162,7 +162,7 @@
   set(GENERATOR_CORE_SRC
       ${GENERATOR_CORE_DIR}/nanopb.proto)
 
-  # Treat the source diretory as immutable.
+  # Treat the source directory as immutable.
   #
   # Copy the generator directory to the build directory before
   # compiling python and proto files.  Fixes issues when using the
diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py
index 1f5561a..bb4018f 100755
--- a/generator/nanopb_generator.py
+++ b/generator/nanopb_generator.py
@@ -289,7 +289,7 @@
         '''
         path is a predefined value for each element type in proto file.
             For example, message == 4, enum == 5, service == 6
-        index is the N-th occurance of the `path` in the proto file.
+        index is the N-th occurrence of the `path` in the proto file.
             For example, 4-th message in the proto file or 2-nd enum etc ...
         comments is a dictionary mapping between element path & SourceCodeInfo.Location
             (contains information about source comments).
@@ -1981,7 +1981,7 @@
             text_format.Merge(parts[1], opts)
         except Exception as e:
             sys.stderr.write("%s:%d: " % (infile.name, i + 1) +
-                             "Unparseable option line: '%s'. " % line +
+                             "Unparsable option line: '%s'. " % line +
                              "Error: %s\n" % str(e))
             sys.exit(1)
         results.append((parts[0], opts))
diff --git a/pb.h b/pb.h
index f4a9bc2..cc32546 100644
--- a/pb.h
+++ b/pb.h
@@ -121,7 +121,7 @@
 #   define pb_packed
 #endif
 
-/* Detect endianess */
+/* Detect endianness */
 #ifndef PB_LITTLE_ENDIAN_8BIT
 #if ((defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN) || \
      (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) || \
diff --git a/tests/any_type/anytest.proto b/tests/any_type/anytest.proto
index 0b86957..891bfaa 100644
--- a/tests/any_type/anytest.proto
+++ b/tests/any_type/anytest.proto
@@ -13,7 +13,7 @@
 // the type_url and value fields, and then call pb_decode() again on the value.
 //
 // This does result in unnecessarily copying the data around, so for larger
-// values it is preferrable to use callbacks on the fields instead.
+// values it is preferable to use callbacks on the fields instead.
 
 syntax = "proto3";
 import "google/protobuf/any.proto";
diff --git a/tests/fuzztest/random_data.c b/tests/fuzztest/random_data.c
index 6fbc812..46eeb44 100644
--- a/tests/fuzztest/random_data.c
+++ b/tests/fuzztest/random_data.c
@@ -55,7 +55,7 @@
 }
 
 /* Get a random length, with skewed distribution.
- * Favors the shorter lengths, but always atleast 1. */
+ * Favors the shorter lengths, but always at least 1. */
 size_t rand_len(size_t max)
 {
     uint32_t w = rand_word();
diff --git a/tests/fuzztest/random_data.h b/tests/fuzztest/random_data.h
index 292b77c..57923ea 100644
--- a/tests/fuzztest/random_data.h
+++ b/tests/fuzztest/random_data.h
@@ -23,7 +23,7 @@
 uint8_t rand_byte();
 
 /* Get a random length, with skewed distribution.
- * Favors the shorter lengths, but always atleast 1. */
+ * Favors the shorter lengths, but always at least 1. */
 size_t rand_len(size_t max);
 
 /* Fills a buffer with random bytes with skewed distribution. */
diff --git a/tests/options/options.proto b/tests/options/options.proto
index 10acca6..d5d3704 100644
--- a/tests/options/options.proto
+++ b/tests/options/options.proto
@@ -119,9 +119,9 @@
     optional int32 normal = 3;
 }
 
-// Overriden type in generated C code
+// Overridden type in generated C code
 message TypeOverrideMessage
 {
     required Enum1 normal = 1;
-    required Enum1 overriden = 2 [(nanopb).type_override = TYPE_UINT32];
+    required Enum1 overridden = 2 [(nanopb).type_override = TYPE_UINT32];
 }
diff --git a/tests/options/options_h.expected b/tests/options/options_h.expected
index 9e3be16..9cad227 100644
--- a/tests/options/options_h.expected
+++ b/tests/options/options_h.expected
@@ -18,7 +18,7 @@
 #define Message5_msgid 105
 ! has_proto3field
 Enum1 normal
-uint32_t overriden
+uint32_t overridden
 #define TypeOverrideMessage_init_default[ ]*\{_Enum1_MIN, 0\}
 #define TypeOverrideMessage_init_zero[ ]*\{_Enum1_MIN, 0\}