Building Profanity Filters: clbuttic sh!t

The built-in profanity filter is not a popular feature in the mobile apps, however in some cases it plays an important UX role.

Creating filter based on scanning whole words and substring in the text

We’re developing an application that cares about users really much: users shouldn’t see any offensive texts there. But checking every post by a live moderator takes a lot of time and reduces the application responsiveness.

We’ve created a “live” filter inside the app that is completely invisible, as long as the user’s text does not contain offensive words. If the filter finds something rude, it gently hints user about wicked content.

Live filtering: avoid false positives

Of course, every filter can be broken, so, in addition, the app has ‘flag abuse’ feature for users to mark inappropriate content.

Creating profanity filter is quite interesting and tricky task. We found lots of corner cases and learned many dirty words :)

One can use l33t sp34k to bypass the filter

I’ve described the evolution of the filter rules in my slides with more techy examples :)

☝️Attention! 18+. Lot of dirty words below :)


Tap on pictures to play demo and find secret content 🤐


Originally published on Stanfy’s blog on September 10, 2015.

If you liked the article, hit that heart button below. Would mean a lot to me. :)