Fun · live filter
한국어Break the obscenity filter
Obscenity is an open-source profanity filter. It does not list every variant by hand. It rewrites the text with transformers (leetspeak, lookalike Unicode, collapsed repeats), then checks a word list. Try to break it.
What it is
Not an ML model. “Transformer” here means text rewrites: lowercase, confusable characters, leet decoding, skip junk symbols, collapse duplicated letters. The English preset comes with a blacklist and a recommended set of those rewrites.
The challenge
Write something a person would reject, but the filter calls clean. Or trip a false positive on clean text. Leetspeak and fancy Unicode usually fail. Inventiveness sometimes works.
Default transformers
- ASCII lowercaseNormalize case before matching.
- ConfusablesMap lookalike Unicode back to Latin letters.
- LeetspeakDecode 0→o, 1→i, @$→a/s, and the usual set.
- Collapse duplicatesTurns stretched letters (f***kk-style runs) back down.
- Skip non-alphabeticIgnore symbols stuck between letters.
Warm-ups
These usually get caught. Start here, then invent your own. English word list only.
Results appear as you type.
Uses the npm package obscenity (English preset). A heuristic, not a moderation policy. obscenity on npm·All Fun experiments