diff --git a/src/main/java/org/apache/commons/text/CaseUtils.java b/src/main/java/org/apache/commons/text/CaseUtils.java
index d3c9684..b6719fe 100644
--- a/src/main/java/org/apache/commons/text/CaseUtils.java
+++ b/src/main/java/org/apache/commons/text/CaseUtils.java
@@ -26,7 +26,7 @@
  *
  * <p>This class tries to handle {@code null} input gracefully.
  * An exception will not be thrown for a {@code null} input.
- * Each method documents its behaviour in more detail.</p>
+ * Each method documents its behavior in more detail.</p>
  *
  * @since 1.2
  */
diff --git a/src/main/java/org/apache/commons/text/RandomStringGenerator.java b/src/main/java/org/apache/commons/text/RandomStringGenerator.java
index b927508..93db59f 100644
--- a/src/main/java/org/apache/commons/text/RandomStringGenerator.java
+++ b/src/main/java/org/apache/commons/text/RandomStringGenerator.java
@@ -229,7 +229,7 @@
 
     /**
      * <p>A builder for generating {@code RandomStringGenerator} instances.</p>
-     * <p>The behaviour of a generator is controlled by properties set by this
+     * <p>The behavior of a generator is controlled by properties set by this
      * builder. Each property has a default value, which can be overridden by
      * calling the methods defined in this class, prior to calling {@link #build()}.</p>
      *
@@ -367,7 +367,7 @@
          *
          * <p>
          * Passing {@code null} or an empty array to this method will revert to the
-         * default behaviour of allowing any character. Multiple calls to this
+         * default behavior of allowing any character. Multiple calls to this
          * method will replace the previously stored predicates.
          * </p>
          *
@@ -436,7 +436,7 @@
          *
          * <p>
          * Passing {@code null} or an empty array to this method will revert to the
-         * default behaviour of allowing any character. Multiple calls to this
+         * default behavior of allowing any character. Multiple calls to this
          * method will replace the previously stored Character.
          * </p>
          *
diff --git a/src/main/java/org/apache/commons/text/StrBuilder.java b/src/main/java/org/apache/commons/text/StrBuilder.java
index c643a9a..1f483c3 100644
--- a/src/main/java/org/apache/commons/text/StrBuilder.java
+++ b/src/main/java/org/apache/commons/text/StrBuilder.java
@@ -1851,7 +1851,7 @@
     /**
      * Deletes all parts of the builder that the matcher matches.
      * <p>
-     * Matchers can be used to perform advanced deletion behaviour.
+     * Matchers can be used to perform advanced deletion behavior.
      * For example you could write a matcher to delete all occurrences
      * where the character 'a' is followed by a number.
      *
@@ -1865,7 +1865,7 @@
     /**
      * Deletes the first match within the builder using the specified matcher.
      * <p>
-     * Matchers can be used to perform advanced deletion behaviour.
+     * Matchers can be used to perform advanced deletion behavior.
      * For example you could write a matcher to delete
      * where the character 'a' is followed by a number.
      *
@@ -2005,7 +2005,7 @@
     /**
      * Replaces all matches within the builder with the replace string.
      * <p>
-     * Matchers can be used to perform advanced replace behaviour.
+     * Matchers can be used to perform advanced replace behavior.
      * For example you could write a matcher to replace all occurrences
      * where the character 'a' is followed by a number.
      *
@@ -2020,7 +2020,7 @@
     /**
      * Replaces the first match within the builder with the replace string.
      * <p>
-     * Matchers can be used to perform advanced replace behaviour.
+     * Matchers can be used to perform advanced replace behavior.
      * For example you could write a matcher to replace
      * where the character 'a' is followed by a number.
      *
@@ -2036,7 +2036,7 @@
     /**
      * Advanced search and replaces within the builder using a matcher.
      * <p>
-     * Matchers can be used to perform advanced behaviour.
+     * Matchers can be used to perform advanced behavior.
      * For example you could write a matcher to delete all occurrences
      * where the character 'a' is followed by a number.
      *
@@ -2059,7 +2059,7 @@
     /**
      * Replaces within the builder using a matcher.
      * <p>
-     * Matchers can be used to perform advanced behaviour.
+     * Matchers can be used to perform advanced behavior.
      * For example you could write a matcher to delete all occurrences
      * where the character 'a' is followed by a number.
      *
@@ -2350,7 +2350,7 @@
      * Checks if the string builder contains a string matched using the
      * specified matcher.
      * <p>
-     * Matchers can be used to perform advanced searching behaviour.
+     * Matchers can be used to perform advanced searching behavior.
      * For example you could write a matcher to search for the character
      * 'a' followed by a number.
      *
@@ -2447,7 +2447,7 @@
     /**
      * Searches the string builder using the matcher to find the first match.
      * <p>
-     * Matchers can be used to perform advanced searching behaviour.
+     * Matchers can be used to perform advanced searching behavior.
      * For example you could write a matcher to find the character 'a'
      * followed by a number.
      *
@@ -2462,7 +2462,7 @@
      * Searches the string builder using the matcher to find the first
      * match searching from the given index.
      * <p>
-     * Matchers can be used to perform advanced searching behaviour.
+     * Matchers can be used to perform advanced searching behavior.
      * For example you could write a matcher to find the character 'a'
      * followed by a number.
      *
@@ -2568,7 +2568,7 @@
     /**
      * Searches the string builder using the matcher to find the last match.
      * <p>
-     * Matchers can be used to perform advanced searching behaviour.
+     * Matchers can be used to perform advanced searching behavior.
      * For example you could write a matcher to find the character 'a'
      * followed by a number.
      *
@@ -2583,7 +2583,7 @@
      * Searches the string builder using the matcher to find the last
      * match searching from the given index.
      * <p>
-     * Matchers can be used to perform advanced searching behaviour.
+     * Matchers can be used to perform advanced searching behavior.
      * For example you could write a matcher to find the character 'a'
      * followed by a number.
      *
diff --git a/src/main/java/org/apache/commons/text/TextStringBuilder.java b/src/main/java/org/apache/commons/text/TextStringBuilder.java
index 89e6501..adbacc4 100644
--- a/src/main/java/org/apache/commons/text/TextStringBuilder.java
+++ b/src/main/java/org/apache/commons/text/TextStringBuilder.java
@@ -1990,7 +1990,7 @@
     /**
      * Deletes all parts of the builder that the matcher matches.
      * <p>
-     * Matchers can be used to perform advanced deletion behaviour. For example you could write a matcher to delete all
+     * Matchers can be used to perform advanced deletion behavior. For example you could write a matcher to delete all
      * occurrences where the character 'a' is followed by a number.
      *
      * @param matcher
@@ -2004,7 +2004,7 @@
     /**
      * Deletes the first match within the builder using the specified matcher.
      * <p>
-     * Matchers can be used to perform advanced deletion behaviour. For example you could write a matcher to delete
+     * Matchers can be used to perform advanced deletion behavior. For example you could write a matcher to delete
      * where the character 'a' is followed by a number.
      *
      * @param matcher
@@ -2156,7 +2156,7 @@
     /**
      * Replaces all matches within the builder with the replace string.
      * <p>
-     * Matchers can be used to perform advanced replace behaviour. For example you could write a matcher to replace all
+     * Matchers can be used to perform advanced replace behavior. For example you could write a matcher to replace all
      * occurrences where the character 'a' is followed by a number.
      *
      * @param matcher
@@ -2172,7 +2172,7 @@
     /**
      * Replaces the first match within the builder with the replace string.
      * <p>
-     * Matchers can be used to perform advanced replace behaviour. For example you could write a matcher to replace
+     * Matchers can be used to perform advanced replace behavior. For example you could write a matcher to replace
      * where the character 'a' is followed by a number.
      *
      * @param matcher
@@ -2189,7 +2189,7 @@
     /**
      * Advanced search and replaces within the builder using a matcher.
      * <p>
-     * Matchers can be used to perform advanced behaviour. For example you could write a matcher to delete all
+     * Matchers can be used to perform advanced behavior. For example you could write a matcher to delete all
      * occurrences where the character 'a' is followed by a number.
      *
      * @param matcher
@@ -2215,7 +2215,7 @@
     /**
      * Replaces within the builder using a matcher.
      * <p>
-     * Matchers can be used to perform advanced behaviour. For example you could write a matcher to delete all
+     * Matchers can be used to perform advanced behavior. For example you could write a matcher to delete all
      * occurrences where the character 'a' is followed by a number.
      *
      * @param matcher
@@ -2509,7 +2509,7 @@
     /**
      * Checks if the string builder contains a string matched using the specified matcher.
      * <p>
-     * Matchers can be used to perform advanced searching behaviour. For example you could write a matcher to search for
+     * Matchers can be used to perform advanced searching behavior. For example you could write a matcher to search for
      * the character 'a' followed by a number.
      *
      * @param matcher
@@ -2611,7 +2611,7 @@
     /**
      * Searches the string builder using the matcher to find the first match.
      * <p>
-     * Matchers can be used to perform advanced searching behaviour. For example you could write a matcher to find the
+     * Matchers can be used to perform advanced searching behavior. For example you could write a matcher to find the
      * character 'a' followed by a number.
      *
      * @param matcher
@@ -2625,7 +2625,7 @@
     /**
      * Searches the string builder using the matcher to find the first match searching from the given index.
      * <p>
-     * Matchers can be used to perform advanced searching behaviour. For example you could write a matcher to find the
+     * Matchers can be used to perform advanced searching behavior. For example you could write a matcher to find the
      * character 'a' followed by a number.
      *
      * @param matcher
@@ -2737,7 +2737,7 @@
     /**
      * Searches the string builder using the matcher to find the last match.
      * <p>
-     * Matchers can be used to perform advanced searching behaviour. For example you could write a matcher to find the
+     * Matchers can be used to perform advanced searching behavior. For example you could write a matcher to find the
      * character 'a' followed by a number.
      *
      * @param matcher
@@ -2751,7 +2751,7 @@
     /**
      * Searches the string builder using the matcher to find the last match searching from the given index.
      * <p>
-     * Matchers can be used to perform advanced searching behaviour. For example you could write a matcher to find the
+     * Matchers can be used to perform advanced searching behavior. For example you could write a matcher to find the
      * character 'a' followed by a number.
      *
      * @param matcher
diff --git a/src/main/java/org/apache/commons/text/similarity/package-info.java b/src/main/java/org/apache/commons/text/similarity/package-info.java
index 6817f29..d053d2a 100644
--- a/src/main/java/org/apache/commons/text/similarity/package-info.java
+++ b/src/main/java/org/apache/commons/text/similarity/package-info.java
@@ -38,7 +38,7 @@
  * <p>The {@link org.apache.commons.text.similarity.CosineDistance Cosine Distance}
  * utilises a {@link org.apache.commons.text.similarity.RegexTokenizer regular expression tokenizer (\w+)}.
  * And the {@link org.apache.commons.text.similarity.LevenshteinDistance Levenshtein Distance}'s
- * behaviour can be changed to take into consideration a maximum throughput.</p>
+ * behavior can be changed to take into consideration a maximum throughput.</p>
  *
  * @since 1.0
  */
diff --git a/src/main/java/org/apache/commons/text/translate/NumericEntityUnescaper.java b/src/main/java/org/apache/commons/text/translate/NumericEntityUnescaper.java
index d0b398b..3a1c45b 100644
--- a/src/main/java/org/apache/commons/text/translate/NumericEntityUnescaper.java
+++ b/src/main/java/org/apache/commons/text/translate/NumericEntityUnescaper.java
@@ -49,7 +49,7 @@
      * and to throw an IllegalArgumentException when they're missing:
      *    new NumericEntityUnescaper(NumericEntityUnescaper.OPTION.errorIfNoSemiColon)
      *
-     * Note that the default behaviour is to ignore them.
+     * Note that the default behavior is to ignore them.
      *
      * @param options to apply to this unescaper
      */
diff --git a/src/site/xdoc/userguide.xml b/src/site/xdoc/userguide.xml
index f160504..f897b56 100644
--- a/src/site/xdoc/userguide.xml
+++ b/src/site/xdoc/userguide.xml
@@ -258,7 +258,7 @@
         <code>RegexTokenizer</code>
         regular expression tokenizer (\w+). And the <code>
           LevenshteinDistance</code>'s
-        behaviour can be changed to take into consideration a maximum
+        behavior can be changed to take into consideration a maximum
         throughput.
       </p>
     </section>
diff --git a/src/test/java/org/apache/commons/text/StringEscapeUtilsTest.java b/src/test/java/org/apache/commons/text/StringEscapeUtilsTest.java
index a1ef2e6..105406f 100644
--- a/src/test/java/org/apache/commons/text/StringEscapeUtilsTest.java
+++ b/src/test/java/org/apache/commons/text/StringEscapeUtilsTest.java
@@ -520,11 +520,11 @@
         final String original = "\u304B\u304C\u3068";
         final String escaped = StringEscapeUtils.escapeHtml4(original);
         assertEquals(original, escaped,
-                "Hiragana character Unicode behaviour should not be being escaped by escapeHtml4");
+                "Hiragana character Unicode behavior should not be being escaped by escapeHtml4");
 
         final String unescaped = StringEscapeUtils.unescapeHtml4(escaped);
 
-        assertEquals(escaped, unescaped, "Hiragana character Unicode behaviour has changed - expected no unescaping");
+        assertEquals(escaped, unescaped, "Hiragana character Unicode behavior has changed - expected no unescaping");
     }
 
     /**
