gg-friggin-ez icon

gg-friggin-ez

gg-friggin-ez is a Node.js package for detecting profanity and toxicity in multilingual, transliterated, code-mixed, and obfuscated user text. It provides quick boolean checks or detailed moderation results for chat, game communications, comments, and other user-generated content.

gg-friggin-ez

Multilingual text moderation for Node.js

gg-friggin-ez is an open-source Node.js package for screening user-generated text for profanity, toxicity, hostility, harassment, and personal attacks. It is designed for content that can evade simple keyword lists, including leetspeak, inserted spaces, repeated characters, romanized language, code-mixed text, and mixed scripts.

The package uses System 1 decision models rather than generating conversational responses. Its default TypeSafe AI Jev configuration returns moderation signals such as profanity and toxicity flags, severity, detected language, obfuscation types, a recommended action, and measured request latency. Developers can use boolean helpers for quick checks or call screen() when they need the complete result.

Features

Structured moderation results

Returns separate profanity and toxicity decisions, with severity levels from NONE to SEVERE and a continuous severity score from 0.0 to 2.0.

Evasion-aware detection

Screens common evasion patterns such as leetspeak, spaced characters, repeated characters, symbol substitutions, romanization, code mixing, and mixed scripts.

Multilingual and transliterated text

Supports English and Indic-language content, including Bengali, Malayalam, Hindi, Tamil, Telugu, and Kannada, with coverage for transliterated input described in the README.

Simple Node.js API

Provides isProfane() and isToxic() convenience functions, plus screen() for a single request that returns multiple moderation signals.

Pluggable screening

Uses TypeSafe AI Jev as the default System 1 model and allows a different classifier or custom schema through the screener configuration.

Action-oriented outputs

Can classify content as ALLOW, SUSPICIOUS_REVIEW, AUTO_CENSOR, or AUTO_BAN, supporting automated handling alongside a review path for ambiguous cases.

Use cases

  • Live chat and community messaging

    Run a moderation check before publishing messages, using the action and severity fields to allow, flag for review, censor, or block content.

  • Game chat moderation

    Screen player messages and in-game text communications where short response times and obfuscation detection are important.

  • Social, review, and marketplace content

    Evaluate comments, reviews, or marketplace conversations that may contain transliterated or code-mixed regional-language abuse.

  • Moderation operations and review queues

    Use the detailed language and obfuscation fields to support trust-and-safety queues and investigate how users are evading filters.

  • Custom moderation pipelines

    Build a domain-specific moderation workflow by supplying a custom schema or replacing the default classifier through the screener configuration.

Pros and Cons

Pros

  • Targets obfuscated, romanized, transliterated, code-mixed, and mixed-script content that static keyword filters can miss.
  • Offers both quick boolean checks and a detailed moderation response with severity, language, obfuscation, action, and latency fields.
  • Supports a review-oriented action alongside automated allow, censor, and ban outcomes.
  • Ships for Node.js 18+ with ESM, CommonJS, and bundled TypeScript type declarations.
  • Allows developers to replace the default System 1 classifier and define custom screening schemas.

Cons

  • The package depends on inference requests and an OpenRouter API key, so latency and operating cost can vary with the configured model and request conditions.
  • The project documentation does not establish comprehensive language coverage, accuracy rates, or false-positive and false-negative performance across all content types.
  • Calling isProfane() and isToxic() separately triggers separate inference requests; screen() is more suitable when multiple signals are needed.

FAQ

How do I install and configure gg-friggin-ez?

Install the package with npm, Yarn, pnpm, or Bun. It requires Node.js 18 or newer, or Bun, and provides ESM, CommonJS, and bundled TypeScript type builds. API requests require an OpenRouter API key, which can be supplied through the environment or passed to createScreener().

Which API should I use for moderation results?

Use isProfane() or isToxic() for individual boolean checks. Use screen() when you need the full moderation result, including severity, language, detected obfuscation, recommended action, and measured latency.

Can I use a different model or custom screening schema?

The default configuration uses TypeSafe AI Jev, and the package supports supplying another System 1 classifier through the system1 option. Custom screening schemas are also supported.

What types of multilingual and obfuscated text does it screen?

The README describes support for English and Indic languages, including Bengali, Malayalam, Hindi, Tamil, and Telugu, as well as Kannada. It is intended to handle romanized or transliterated text, code mixing, leetspeak, character spacing, repeated characters, and mixed scripts.

What should I know about latency and request usage?

The project describes typical end-to-end latency of about 50–500 ms with the default Jev setup, but actual latency is returned in the screen() result and will depend on the inference request and deployment conditions. The README also notes that each isProfane() or isToxic() call triggers an inference request.

Quick Facts

Category
Developer tool · AI content moderation
Platform
Node.js 18+ or Bun
Package format
ESM and CommonJS with bundled TypeScript types
Default model
TypeSafe AI Jev
Primary workflow
Real-time screening of chat, comments, reviews, and other user-generated text
Source
github.com/ItisShikhar/gg-friggin-ez

Alternative a gg-friggin-ez