diff --git a/src/main/java/org/apache/commons/text/StringEscapeUtils.java b/src/main/java/org/apache/commons/text/StringEscapeUtils.java
index d22baa2..93f76d2 100644
--- a/src/main/java/org/apache/commons/text/StringEscapeUtils.java
+++ b/src/main/java/org/apache/commons/text/StringEscapeUtils.java
@@ -537,7 +537,7 @@
      * <p>The only difference between Java strings and EcmaScript strings
      * is that in EcmaScript, a single quote and forward-slash (/) are escaped.</p>
      *
-     * <p>Note that EcmaScript is best known by the JavaScript and ActionScript dialects. </p>
+     * <p>Note that EcmaScript is best known by the JavaScript and ActionScript dialects.</p>
      *
      * <p>Example:</p>
      * <pre>
@@ -570,7 +570,7 @@
      * <p>The only difference between Java strings and Json strings
      * is that in Json, forward-slash (/) is escaped.</p>
      *
-     * <p>See http://www.ietf.org/rfc/rfc4627.txt for further details. </p>
+     * <p>See http://www.ietf.org/rfc/rfc4627.txt for further details.</p>
      *
      * <p>Example:</p>
      * <pre>
@@ -644,7 +644,7 @@
      *
      * <p>Supports all known HTML 4.0 entities, including funky accents.
      * Note that the commonly used apostrophe escape character (&amp;apos;)
-     * is not a legal entity and so is not supported). </p>
+     * is not a legal entity and so is not supported).</p>
      *
      * @param input  the {@code String} to escape, may be null
      * @return a new escaped {@code String}, {@code null} if null string input
@@ -661,7 +661,7 @@
 
     /**
      * <p>Escapes the characters in a {@code String} using HTML entities.</p>
-     * <p>Supports only the HTML 3.0 entities. </p>
+     * <p>Supports only the HTML 3.0 entities.</p>
      *
      * @param input  the {@code String} to escape, may be null
      * @return a new escaped {@code String}, {@code null} if null string input
@@ -772,7 +772,7 @@
      * Does not support DTDs or external entities.</p>
      *
      * <p>Note that numerical \\u Unicode codes are unescaped to their respective
-     *    Unicode characters. This may change in future releases. </p>
+     *    Unicode characters. This may change in future releases.</p>
      *
      * @param input  the {@code String} to unescape, may be null
      * @return a new unescaped {@code String}, {@code null} if null string input
@@ -809,14 +809,14 @@
     }
 
     /**
-     * <p>Returns a {@code String} value for an unescaped CSV column. </p>
+     * <p>Returns a {@code String} value for an unescaped CSV column.</p>
      *
      * <p>If the value is enclosed in double quotes, and contains a comma, newline
      *    or double quote, then quotes are removed.
      * </p>
      *
      * <p>Any double quote escaped characters (a pair of double quotes) are unescaped
-     *    to just one double quote. </p>
+     *    to just one double quote.</p>
      *
      * <p>If the value is not enclosed in double quotes, or is and does not contain a
      *    comma, newline or double quote, then the String value is returned unchanged.</p>
diff --git a/src/main/java/org/apache/commons/text/WordUtils.java b/src/main/java/org/apache/commons/text/WordUtils.java
index 2b9e7d5..24f8f5b 100644
--- a/src/main/java/org/apache/commons/text/WordUtils.java
+++ b/src/main/java/org/apache/commons/text/WordUtils.java
@@ -418,7 +418,7 @@
      *
      * <p>The delimiters represent a set of characters understood to separate words.
      * The first string character and the first non-delimiter character after a
-     * delimiter will be capitalized. </p>
+     * delimiter will be capitalized.</p>
      *
      * <p>A {@code null} input String returns {@code null}.
      * Capitalization uses the Unicode title case, normally equivalent to
@@ -473,7 +473,7 @@
     /**
      * <p>Converts all the whitespace separated words in a String into capitalized words,
      * that is each word is made up of a titlecase character and then a series of
-     * lowercase characters.  </p>
+     * lowercase characters.</p>
      *
      * <p>Whitespace is defined by {@link Character#isWhitespace(char)}.
      * A {@code null} input String returns {@code null}.
@@ -496,11 +496,11 @@
     /**
      * <p>Converts all the delimiter separated words in a String into capitalized words,
      * that is each word is made up of a titlecase character and then a series of
-     * lowercase characters. </p>
+     * lowercase characters.</p>
      *
      * <p>The delimiters represent a set of characters understood to separate words.
      * The first string character and the first non-delimiter character after a
-     * delimiter will be capitalized. </p>
+     * delimiter will be capitalized.</p>
      *
      * <p>A {@code null} input String returns {@code null}.
      * Capitalization uses the Unicode title case, normally equivalent to
@@ -554,7 +554,7 @@
      *
      * <p>The delimiters represent a set of characters understood to separate words.
      * The first string character and the first non-delimiter character after a
-     * delimiter will be uncapitalized. </p>
+     * delimiter will be uncapitalized.</p>
      *
      * <p>Whitespace is defined by {@link Character#isWhitespace(char)}.
      * A {@code null} input String returns {@code null}.</p>
diff --git a/src/main/java/org/apache/commons/text/translate/NumericEntityEscaper.java b/src/main/java/org/apache/commons/text/translate/NumericEntityEscaper.java
index c5e0661..58ea4da 100644
--- a/src/main/java/org/apache/commons/text/translate/NumericEntityEscaper.java
+++ b/src/main/java/org/apache/commons/text/translate/NumericEntityEscaper.java
@@ -36,7 +36,7 @@
      * <p>Constructs a {@code NumericEntityEscaper} for the specified range. This is
      * the underlying method for the other constructors/builders. The {@code below}
      * and {@code above} boundaries are inclusive when {@code between} is
-     * {@code true} and exclusive when it is {@code false}. </p>
+     * {@code true} and exclusive when it is {@code false}.</p>
      *
      * @param below int value representing the lowest codepoint boundary
      * @param above int value representing the highest codepoint boundary
@@ -48,14 +48,14 @@
     }
 
     /**
-     * <p>Constructs a {@code NumericEntityEscaper} for all characters. </p>
+     * <p>Constructs a {@code NumericEntityEscaper} for all characters.</p>
      */
     public NumericEntityEscaper() {
         this(0, Integer.MAX_VALUE, true);
     }
 
     /**
-     * <p>Constructs a {@code NumericEntityEscaper} below the specified value (exclusive). </p>
+     * <p>Constructs a {@code NumericEntityEscaper} below the specified value (exclusive).</p>
      *
      * @param codepoint below which to escape
      * @return The newly created {@code NumericEntityEscaper} instance
@@ -65,7 +65,7 @@
     }
 
     /**
-     * <p>Constructs a {@code NumericEntityEscaper} above the specified value (exclusive). </p>
+     * <p>Constructs a {@code NumericEntityEscaper} above the specified value (exclusive).</p>
      *
      * @param codepoint above which to escape
      * @return The newly created {@code NumericEntityEscaper} instance
@@ -75,7 +75,7 @@
     }
 
     /**
-     * <p>Constructs a {@code NumericEntityEscaper} between the specified values (inclusive). </p>
+     * <p>Constructs a {@code NumericEntityEscaper} between the specified values (inclusive).</p>
      *
      * @param codepointLow above which to escape
      * @param codepointHigh below which to escape
@@ -86,7 +86,7 @@
     }
 
     /**
-     * <p>Constructs a {@code NumericEntityEscaper} outside of the specified values (exclusive). </p>
+     * <p>Constructs a {@code NumericEntityEscaper} outside of the specified values (exclusive).</p>
      *
      * @param codepointLow below which to escape
      * @param codepointHigh above which to escape
diff --git a/src/main/java/org/apache/commons/text/translate/UnicodeEscaper.java b/src/main/java/org/apache/commons/text/translate/UnicodeEscaper.java
index 7718a8a..f3bc7b5 100644
--- a/src/main/java/org/apache/commons/text/translate/UnicodeEscaper.java
+++ b/src/main/java/org/apache/commons/text/translate/UnicodeEscaper.java
@@ -45,7 +45,7 @@
      * <p>Constructs a {@code UnicodeEscaper} for the specified range. This is
      * the underlying method for the other constructors/builders. The {@code below}
      * and {@code above} boundaries are inclusive when {@code between} is
-     * {@code true} and exclusive when it is {@code false}. </p>
+     * {@code true} and exclusive when it is {@code false}.</p>
      *
      * @param below int value representing the lowest codepoint boundary
      * @param above int value representing the highest codepoint boundary
@@ -58,7 +58,7 @@
     }
 
     /**
-     * <p>Constructs a {@code UnicodeEscaper} below the specified value (exclusive). </p>
+     * <p>Constructs a {@code UnicodeEscaper} below the specified value (exclusive).</p>
      *
      * @param codepoint below which to escape
      * @return The newly created {@code UnicodeEscaper} instance
@@ -68,7 +68,7 @@
     }
 
     /**
-     * <p>Constructs a {@code UnicodeEscaper} above the specified value (exclusive). </p>
+     * <p>Constructs a {@code UnicodeEscaper} above the specified value (exclusive).</p>
      *
      * @param codepoint above which to escape
      * @return The newly created {@code UnicodeEscaper} instance
@@ -78,7 +78,7 @@
     }
 
     /**
-     * <p>Constructs a {@code UnicodeEscaper} outside of the specified values (exclusive). </p>
+     * <p>Constructs a {@code UnicodeEscaper} outside of the specified values (exclusive).</p>
      *
      * @param codepointLow below which to escape
      * @param codepointHigh above which to escape
@@ -89,7 +89,7 @@
     }
 
     /**
-     * <p>Constructs a {@code UnicodeEscaper} between the specified values (inclusive). </p>
+     * <p>Constructs a {@code UnicodeEscaper} between the specified values (inclusive).</p>
      *
      * @param codepointLow above which to escape
      * @param codepointHigh below which to escape
