Update

Announcing Glin Profanity v3: ML-Powered Profanity Detection That Actually Works

Glin Profanity v3 is here with ML-powered toxicity detection, leetspeak recognition, and Unicode normalization. Finally catch f4ck, sh1t, and Cyrillic evasion attempts. 21M ops/sec performance, 23 languages, React hooks, and Python support. Free and open source.

December 31, 20252 min read7

We're excited to announce the release of Glin Profanity v3 — a complete overhaul of our profanity detection library that finally solves the evasion problem plaguing content moderation.

The Problem with Traditional Filters

Most profanity filters are trivially bypassed. Users type f*ck, sh1t, or fսck (with Cyrillic characters) and walk right through. Glin Profanity v3 doesn't just check against a word list — it understands evasion tactics.

What's New in v3

Leetspeak Detection

Catch obfuscated profanity that slips past other filters:

  • f4ck, @ss, $h!t → Detected

  • f u c k (spaced characters) → Detected

  • fuuuuck (repeated characters) → Detected

  • Three intensity levels: basic, moderate, aggressive

Unicode Normalization

Stop Cyrillic and homoglyph attacks:

  • fυck (Greek upsilon) → Detected

  • shіt (Cyrillic i) → Detected

  • Zero-width characters, full-width characters → Handled

  • Two-pass normalization prevents false positives (no more flagging "Scunthorpe")

ML-Powered Toxicity Detection

Optional TensorFlow.js integration for context-aware detection:

  • Detects toxicity, insults, threats, identity attacks

  • Catches subtle toxic content that rule-based systems miss

  • Configurable thresholds and hybrid rule+ML modes

800x Performance Improvement

Smart LRU caching means repeated checks are near-instant:

  • First check: processes text

  • Subsequent checks: returns cached result

23 Languages Supported

Arabic, Chinese, Czech, Danish, Dutch, English, Esperanto, Finnish, French, German, Hindi, Hungarian, Italian, Japanese, Korean, Norwegian, Persian, Polish, Portuguese, Russian, Spanish, Swedish, Thai, and Turkish.

Installation

JavaScript/TypeScript

npm install glin-profanity

Python

pip install glin-profanity

Quick Example

import { Filter } from 'glin-profanity';

const filter = new Filter({
  detectLeetspeak: true,
  normalizeUnicode: true,
  cacheResults: true
});

filter.isProfane('f4ck');    // true
filter.isProfane('fսck');    // true (Cyrillic 'ս')
filter.isProfane('sh1t');    // true

React Hook

import { useProfanityChecker } from 'glin-profanity';

function ChatInput() {
  const { result, checkText } = useProfanityChecker({
    detectLeetspeak: true
  });
  
  return (
    <input onChange={(e) => checkText(e.target.value)} />
  );
}

Performance

OperationGlin ProfanityCompetitorsSimple check21M ops/sec650K-1.2M ops/secWith leetspeak8.5M ops/secN/AMulti-language18M ops/sec400K ops/sec

Try It Now

Upgrade Today

If you're using an older version:

npm install glin-profanity@latest

Glin Profanity v3 is MIT licensed — free for personal and commercial use.


Ready to stop profanity evasion?

Try the Live Demo | View on GitHub | NPM | PyPI

Questions or feedback? Open an issue or reach out to us at glincker.com.

#glin-profanity#javascript#python#open-source#machine-learning#release#announcement#content-moderation