Glin-Profanity is a lightweight and efficient npm package designed to detect and filter profane language in text inputs across multiple languages. Whether you’re building a chat application, a comment section, or any platform where user-generated content
npm install glin-profanity
ML-Powered Profanity Detection for the Modern Web
---
``bash`
npm install glin-profanity
`javascript
import { checkProfanity, Filter } from 'glin-profanity';
// Simple check
const result = checkProfanity("This is f4ck1ng bad", {
detectLeetspeak: true,
languages: ['english']
});
result.containsProfanity // true
result.profaneWords // ['fucking']
// With replacement
const filter = new Filter({
replaceWith: '*',
detectLeetspeak: true
});
filter.checkProfanity("sh1t happens").processedText // "* happens"
`
`tsx
import { useProfanityChecker } from 'glin-profanity';
function ChatInput() {
const { result, checkText } = useProfanityChecker({
detectLeetspeak: true
});
return (
<>
checkText(e.target.value)} />
{result?.containsProfanity && Clean up your language}
>
);
}
`
| Feature | Description |
|---------|-------------|
| Leetspeak detection | Catches f4ck, sh1t, @ss |useProfanityChecker
| Unicode normalization | Handles Cyrillic/Greek lookalikes |
| ML toxicity detection | TensorFlow.js integration |
| 23 languages | Arabic to Turkish |
| Result caching | LRU cache for repeated checks |
| React hook | built-in |
`typescript
// Full check with options
checkProfanity(text: string, config?: FilterConfig): ProfanityCheckResult
// Quick boolean check
isProfane(text: string): boolean
// Async version
checkProfanityAsync(text: string, config?: FilterConfig): Promise
`
`typescript
const filter = new Filter({
languages: ['english', 'spanish'],
detectLeetspeak: true,
leetspeakLevel: 'moderate', // basic | moderate | aggressive
normalizeUnicode: true,
cacheResults: true,
maxCacheSize: 1000,
replaceWith: '*'
});
filter.isProfane('f4ck'); // true
filter.checkProfanity('bad word').profaneWords; // ['bad']
filter.clearCache();
`
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| languages | string[] | ['english'] | Languages to check |allLanguages
| | boolean | false | Check all 23 languages |detectLeetspeak
| | boolean | false | Enable leetspeak detection |leetspeakLevel
| | string | 'basic' | basic / moderate / aggressive |normalizeUnicode
| | boolean | true | Normalize Unicode homoglyphs |cacheResults
| | boolean | false | Cache results for repeated checks |maxCacheSize
| | number | 1000 | LRU cache limit |replaceWith
| | string | undefined | Replacement string |customWords
| | string[] | [] | Add custom profane words |ignoreWords
| | string[] | [] | Whitelist words |severityLevels
| | boolean | false` | Enable severity mapping |
| Resource | Link |
|----------|------|
| Getting Started | docs/getting-started.md |
| API Reference | docs/api-reference.md |
| Framework Examples | docs/framework-examples.md |
| Advanced Features | docs/advanced-features.md |
| ML Guide | docs/ML-GUIDE.md |
| Main README | README.md |
MIT License - see LICENSE
---