npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

ai-text-detector

v1.0.8

Published

A lightweight, fast JavaScript/TypeScript library for detecting AI-generated text using advanced linguistic analysis. Works in Node.js, React, and browser environments with zero dependencies.

Readme

AI Text Detector

npm version License: MIT TypeScript

A lightweight, fast JavaScript/TypeScript library for detecting AI-generated text using advanced linguistic analysis. Features enhanced human text recognition, modern AI pattern detection, and adaptive thresholding. Works in both Node.js and browser environments with zero dependencies.

🎯 Try the Live Demo

Features

  • 🚀 Lightweight - Zero external dependencies, small bundle size
  • 🔍 Accurate - Uses 25+ linguistic analysis techniques including advanced perplexity and burstiness
  • 🌐 Universal - Works in Node.js, React, Vue, Angular, and browser environments
  • 📝 TypeScript - Full TypeScript support with comprehensive type definitions
  • Fast - Efficient pattern matching and analysis algorithms
  • 🧠 Smart - Advanced analysis of sentence structure, vocabulary patterns, and writing style
  • 📊 Detailed - Provides confidence scores, reasoning, and detailed metrics
  • 🎯 Enhanced Human Detection - Improved recognition of informal, casual, and emotional human writing
  • 🔬 Advanced AI Pattern Recognition - Detects modern AI writing patterns and phrases
  • 🏷️ Adaptive Analysis - Dynamic thresholding based on text characteristics

Installation

npm install ai-text-detector
yarn add ai-text-detector

Usage

Basic Usage

import {
  detectAIText,
  isAIGenerated,
  getConfidenceScore,
} from "ai-text-detector";

const longText =
  "Furthermore, it is important to note that artificial intelligence has significantly enhanced various operational processes across multiple industries.";

const shortText = "Hello world!";

// Get detailed analysis for longer text
const result = detectAIText(longText);
console.log(result);
// {
//   isAIGenerated: true,
//   confidence: 0.75,
//   reasons: [
//     "High frequency of transition words typical of AI writing",
//     "Elevated formality level characteristic of AI text"
//   ],
//   score: 0.75
// }

// Handle short text (less than 50 characters)
try {
  const shortResult = detectAIText(shortText);
  console.log(shortResult);
} catch (error) {
  console.log("Error:", error.message);
  // Output: "Error: Text too short for reliable analysis (minimum 50 characters)"
}

// Alternative: Check text length before analysis
function safeDetectAI(text) {
  if (text.trim().length < 50) {
    return {
      isAIGenerated: false,
      confidence: 0,
      reasons: ["Text too short for reliable analysis"],
      score: 0,
      error: "Minimum 50 characters required",
    };
  }
  return detectAIText(text);
}

const safeResult = safeDetectAI(shortText);
console.log(safeResult);
// {
//   isAIGenerated: false,
//   confidence: 0,
//   reasons: ["Text too short for reliable analysis"],
//   score: 0,
//   error: "Minimum 50 characters required"
// }

// Quick boolean check (also throws error for short text)
try {
  const isAI = isAIGenerated(longText);
  console.log(isAI); // true
} catch (error) {
  console.log("Error:", error.message);
}

// Get confidence score with error handling
try {
  const confidence = getConfidenceScore(longText);
  console.log(confidence); // 0.75
} catch (error) {
  console.log("Error:", error.message);
}

Node.js Usage

const { detectAIText } = require("ai-text-detector");

const text = "Your text here...";
const result = detectAIText(text);
console.log(result);

React Usage

import React, { useState } from "react";
import { detectAIText } from "ai-text-detector";

function AIDetector() {
  const [text, setText] = useState("");
  const [result, setResult] = useState(null);

  const analyzeText = () => {
    if (text.trim()) {
      const detection = detectAIText(text);
      setResult(detection);
    }
  };

  return (
    <div>
      <textarea
        value={text}
        onChange={(e) => setText(e.target.value)}
        placeholder="Enter text to analyze..."
      />
      <button onClick={analyzeText}>Analyze Text</button>

      {result && (
        <div>
          <p>AI Generated: {result.isAIGenerated ? "Yes" : "No"}</p>
          <p>Confidence: {(result.confidence * 100).toFixed(1)}%</p>
          <ul>
            {result.reasons.map((reason, index) => (
              <li key={index}>{reason}</li>
            ))}
          </ul>
        </div>
      )}
    </div>
  );
}

API Reference

detectAIText(text: string): DetectionResult

Analyzes the provided text and returns a detailed detection result.

Parameters:

  • text (string): The text to analyze (minimum 50 characters required)

Returns:

  • DetectionResult object with the following properties:
    • isAIGenerated (boolean): Whether the text is likely AI-generated
    • confidence (number): Confidence score between 0 and 1
    • reasons (string[]): Array of reasons explaining the detection
    • score (number): Raw detection score

Throws:

  • Error: When text is empty or less than 50 characters

isAIGenerated(text: string): boolean

Quick check to determine if text is likely AI-generated.

Parameters:

  • text (string): The text to analyze (minimum 50 characters required)

Returns:

  • boolean: True if likely AI-generated, false otherwise

Throws:

  • Error: When text is empty or less than 50 characters

getConfidenceScore(text: string): number

Returns just the confidence score for the detection.

Parameters:

  • text (string): The text to analyze (minimum 50 characters required)

Returns:

  • number: Confidence score between 0 and 1

Throws:

  • Error: When text is empty or less than 50 characters

How It Works

This library uses multiple advanced linguistic analysis techniques to detect AI-generated text:

Core Analysis Methods

  • Advanced Perplexity Analysis: Enhanced trigram-based model with interpolation to measure text predictability
  • Burstiness Analysis: Analyzes sentence-to-sentence variation and consistency patterns
  • Entropy Scoring: Measures word choice predictability (AI tends to be more predictable)
  • Human-likeness Indicators: Detects informal language, typos, contractions, and emotional expressions
  • Stylometric Analysis: Examines writing style consistency and variation patterns

Enhanced Pattern Recognition

  • Modern AI Pattern Detection: Recognizes phrases like "it's worth noting", "as we delve into", "in today's digital age"
  • Informal Language Recognition: Detects slang, internet abbreviations, contractions, and casual expressions
  • Emotional Tone Analysis: Measures emotional expression variability and personal narrative styles
  • Discourse Marker Analysis: Identifies overuse of transition words typical in AI-generated text
  • Function Word Distribution: Analyzes patterns in common word usage that differ between AI and human writing

Traditional Linguistic Analysis

  • Vocabulary Richness: Examines word diversity and complexity patterns
  • Syntactic Complexity: Analyzes sentence structure and grammatical patterns
  • Semantic Coherence: Measures logical flow and contextual consistency
  • N-gram Repetition: Detects repetitive patterns common in AI text
  • Contextual Consistency: Advanced checking for semantic and thematic coherence
  • Sentence Structure Entropy: Evaluates variety in sentence construction
  • Topic Coherence Scoring: Measures semantic consistency across text segments

Adaptive Intelligence

  • Dynamic Thresholding: Adjusts detection sensitivity based on text characteristics
  • Multi-dimensional Scoring: Combines multiple indicators with optimized weights
  • Compound Effect Analysis: Multiple human indicators work together for better accuracy
  • Contextual Awareness: Understands different writing contexts and styles

Performance

  • Bundle Size: ~15KB minified
  • Zero Dependencies: No external libraries required
  • Fast Processing: Analyzes typical documents in <10ms
  • Memory Efficient: Minimal memory footprint

Browser Support

  • Chrome 60+
  • Firefox 55+
  • Safari 12+
  • Edge 79+
  • Node.js 14+

The library analyzes various linguistic patterns commonly found in AI-generated text:

  1. Sentence Structure: AI text often has consistent sentence lengths and patterns
  2. Transition Words: Heavy use of formal transition words (furthermore, moreover, etc.)
  3. Formality Level: AI tends to use more formal vocabulary
  4. Repetitive Patterns: Common phrases and structures used by AI models
  5. Passive Voice: Balanced usage patterns typical of AI optimization
  6. Complexity Analysis: Word length and complexity patterns

Accuracy Notes

  • Enhanced Accuracy: Version 1.0.3+ includes significant improvements in detecting both AI and human text
  • Improved Informal Text Detection: Better recognition of casual, emotional, and conversational human writing
  • Reduced False Positives: Significantly fewer false positives on informal human content
  • Modern AI Recognition: Enhanced detection of contemporary AI writing patterns and phrases
  • Adaptive Analysis: Dynamic thresholding adjusts based on text characteristics for better accuracy
  • Contextual Awareness: Better understanding of different writing contexts and styles
  • This library uses advanced heuristic analysis and pattern matching techniques
  • Results should be used as a guide rather than definitive proof
  • Accuracy continues to improve with each version as new AI patterns are identified
  • Human-written formal text may occasionally trigger detection, but this has been significantly reduced

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT License - see LICENSE file for details.

Changelog

1.0.3 (2025-06-18)

  • Enhanced Detection: Significantly improved accuracy for both AI and human text
  • Better Human Recognition: Advanced detection of informal, casual, and emotional writing
  • Modern AI Patterns: Enhanced recognition of contemporary AI writing styles
  • Advanced Metrics: Added entropy analysis, human-likeness indicators, and stylometric analysis
  • Adaptive Thresholding: Dynamic detection sensitivity based on text characteristics
  • Improved Algorithms: Enhanced perplexity calculation with trigram models
  • Reduced False Positives: Better handling of informal human content
  • Backward Compatible: All existing APIs unchanged

1.0.0

  • Initial release
  • Basic AI text detection functionality
  • Support for Node.js and browser environments
  • TypeScript support