Profanity Filtering 101: Character Replacements & Leet Speak

Brian Pontarelli

The second in a series of posts about the finer points of profanity filtering...

Character replacement is the process of replacing certain characters with others, usually symbols, that look the same or similar. This is a popular method, often referred to as Leet or "L33t" speak, used to attack traditional content and profanity filters that ignore or don't play well with non-alphabetic characters. Some examples...

  1. $ally is my neighbor
  2. |)on't be a menace
  3. |<nive$ can be dangerous
  4. \/\/hat are you doing?

Examples #2, #3 and #4 illustrate a user using multiple characters to replace a single character. #2 is using the “|” (pipe) character and the “)” (right-parenthesis) character to create a capital “D” character. #4 is using a combination of forward and backward slashes to create a capital “W” character. Example #3 goes a step further. It is replacing two different characters in the text. Both the “K” and “S” characters are being replaced.


Most of the filters in use today don't understand character replacements very well and, if they do make an attempt, usually just swap back in the original characters prior to filtering. This can produce the dreaded "false-positive" if the user was in fact using a character (such as the dollar sign) correctly, so a filter must be careful not to assume that all non-alphabetic characters are filter attacks.

See some examples of how the CleanSpeak filtering engine automatically handles replacement characters under the Profanity Filter Features section of our website.

And learn more about leet speak online at: