Client-Side / Lightweight / VADER-Based

ParryAPI

Real-time sentiment analysis powered by VADER. Lightweight, customizable, and easy to drop into any project.

About

Built for Modern Communities

ParryAPI uses VADER sentiment analysis to detect emotional tone in real time. Fast, flexible, and built for modern communities.

Fast Analysis
Synchronous, in-process scoring with no network round-trips.
Privacy First
Designed with privacy in mind. No third-party services required for the core analysis.
Gaming Aware
Understands gg, wp, noob, glhf, rekt, and hundreds more.
Customizable
Tune thresholds. Inject custom words. Extend to your domain.
Text Normalization
"h@t3" and "hate" score identically. Obfuscation detected.
Zero Dependencies
One .js file, zero external dependencies. Simple to integrate into any existing stack.
NOTE Explicit slurs are omitted from the public lexicon , ethical by design. General negative patterns still catch most toxic content effectively.
Analyzer

Simple Sentiment Analysis

Enter any text, or pick a preset below.

sentiment-analyzer.js · live
Moderation

Live Chatroom Simulation

Negative messages are blurred by default. Click them to reveal.

chatroom · moderation active

Send a message to see real-time analysis

Negative messages are blurred, click to reveal

Documentation

API Reference

Everything you need to integrate ParryAPI.

Quick Start

  1. Copy sentiment-analyzer.js into your project
  2. Add <script src="sentiment-analyzer.js"></script>
  3. Create: const sa = new SentimentAnalyzer();
  4. Call: sa.analyze("your text")

Features

  • Text normalization, "h@t3" = "hate"
  • Negation detection, "not good" inverts
  • Gaming context, gg, wp, ez, noob scored
  • Profanity detection, curse words + variants
  • Zero dependencies, pure JavaScript

Return Values

analyze() returns an object:

  • compound, overall score −1 to +1
  • positive, proportion of positive words
  • negative, proportion of negative words
  • neutral , proportion of neutral words

classify() returns "Positive", "Negative", or "Neutral"

Basic Usage
const analyzer = new SentimentAnalyzer();

const result = analyzer.analyze(
  "I love this game!"
);
// { compound: 0.6369,
//   positive: 0.6,
//   negative: 0.0,
//   neutral:  0.4 }

const label = analyzer.classify(
  "I love this game!"
);
// "Positive"
Custom Thresholds
const { compound } =
  analyzer.analyze(text);

if (compound >= 0.2) {
  label = "Positive";
} else if (compound <= -0.2) {
  label = "Negative";
} else {
  label = "Neutral";
}

// Or pass to classify():
analyzer.classify(text, 0.4, -0.4);
Custom Lexicon
// Scores: -4 to +4

analyzer.addCustomWords({
  'epic':      2.5,
  'legendary': 3.0,
  'terrible': -2.5,
  'griefer':  -2.5,
});

// Now affects analysis:
analyzer.analyze("That was epic!");