VirusTotal for AI-generated text. Paste text, drop in a PDF or Word file, or give it a URL. Twenty-three independent AI detectors (neural classifiers, statistical tests and linguistic heuristics) score it in parallel, and a calibrated ensemble turns their votes into one verdict you can inspect engine by engine. It runs on your own CPU, so nothing you scan leaves your machine.

It is a free, self-hosted, open-source alternative to hosted AI content detectors such as GPTZero, Originality.ai, Copyleaks, ZeroGPT and Humalingo. Instead of one number from one model, it shows you every model's opinion, and it publishes how accurate that is, failures included.

Try it: sloptotal.com · Run it: docker run -p 8000:8000 ghcr.io/pablocaeg/sloptotal

- 23 detection engines, one calibrated score. DeBERTa and RoBERTa classifiers, Binoculars, Fast-DetectGPT, GLTR, perplexity and burstiness tests, and stock-phrase heuristics. Results stream in as each engine finishes.

- Text, URLs and documents. Paste text, scan a web page (main content is

extracted automatically), or upload .pdf,.docx,.txtor.md.

- Site check: was this website vibe-coded? Finds the fingerprints that Lovable, v0, Bolt, Base44, Replit and Same leave in the sites they deploy, and shows the evidence for each one. How it works

- Per-paragraph heat map through the API, to see which parts read as AI.

- Measured, not claimed. Every accuracy number below comes with the corpus, the harness and the raw per-sample scores.

- Private by default. Self-hosted, no third-party AI APIs, no tracking, reports deleted after 30 days.

- CPU-only is fine. Auto-detects your hardware; 4 GB RAM is enough for the lite profile, a GPU is optional.

- JSON API and a Chrome extension that marks AI-looking results in Google Search and LinkedIn.

Most detectors publish an accuracy figure without saying what it was measured on. SlopTotal is measured on SlopBench: 1,626 human texts, every one written before ChatGPT, and 1,626 AI texts on the same topics and at the same lengths from 14 current models, across 15 kinds of writing (news, Wikipedia, arXiv, Stack Exchange, Reddit, reviews, student essays, non-native English, fiction and literature published 1532-1915). Every number below is measured on kinds of writing the model was not tuned on.

The score bands are anchored on that human text: 45 is where the top 5% of human writing begins, 55 the top 2%, 80 the top 0.5%. So "Likely AI" means fewer than 2 in 100 human texts score this high.

Other languages. Spanish, French, German, Italian, Portuguese, Dutch, Polish, Russian and Japanese are supported (AUC 0.91 to 0.997); Arabic and Korean are experimental; Hindi, Turkish and Chinese are not reliable yet, and the report says so.

What does not work. Essays by non-native English writers are still flagged more than native ones (15% of TOEFL essays called Likely AI, against none of 88 US school essays). Under about 80 words a score is a weak signal. AI text run through a "humanizer" is caught about half the time. Source code is outside what these engines do. All of it, per source, per model and per engine, is in the findings, including that the classifiers which top the RAID benchmark drop to AUC 0.75 on current models.

docker run -p 8000:8000 -v sloptotal-models:/app/models ghcr.io/pablocaeg/sloptotalOpen http://localhost:8000. The first scan downloads about 2 GB of models into

the sloptotal-models volume, so later starts are quick. To build from source

instead, run docker compose -f docker/docker-compose.yml up.

Requires Python 3.10+ (macOS ships 3.9, which is too old).

git clone https://github.com/pablocaeg/sloptotal.git

cd sloptotal

python3.11 -m venv venv && source venv/bin/activate

pip install -r requirements.txt

./scripts/start.sh # or: uvicorn app.main:app --port 8000Check that every engine loads and scores, end to end:

python scripts/smoke_test.py # against http://localhost:8000"Is this website vibe-coded?" checkers mostly score style (Tailwind class counts, missing security headers, buzzwords) and turn it into a percentage. Hand-written sites share all of those traits. SlopTotal looks only for markers the builders themselves leave in what they deploy, each one confirmed on live sites or in the builders' own templates:

A site with no marker may still have been written with AI: code exported from these tools and hosted elsewhere, or written in an AI editor, carries no fingerprint. So the result is evidence, not a probability. The page's copy is scored separately by the text engines.

curl -X POST http://localhost:8000/api/scan/site \

-H "Content-Type: application/json" -d '{"url": "example.com"}'curl -X POST http://localhost:8000/api/analyze \

-H "Content-Type: application/json" \

-d '{"text": "Your text to analyze here..."}'From Python, examples/python_client.py analyses a

text, prints the five engines scoring highest and runs a site check, waiting

in the queue when the server is busy:

python examples/python_client.py "Paste at least 50 characters of text here..." example.comThe response lists every engine with its score, verdict and a plain-language

detail line, plus overall_score (0-100) and overall_verdict.

Every engine links to its page on sloptotal.com, which carries its measured scores against both corpora. AUC below is the probability the engine ranks a random AI passage above a random human one: 1.0 is perfect, 0.5 is a coin flip.

The linguistic heuristics are weak on their own. They are kept because they fail independently of the neural classifiers, which is what makes them useful as tiebreakers rather than as evidence.

The final score is calibrated, not a simple average, and every weight is derived from measurement rather than intuition. See tests/eval/FINDINGS.md and sloptotal.com/detect/ai-detector-ensemble/.

- Anchored on the unbiased classifiers -- Desklib, SuperAnnotate, E5 and ReMoDetect all score high AUC with no measurable bias against older prose. Their consensus is blended 60/40 with the full weighted set.

- Weights from measurement -- each engine's share is proportional to Somers' D (2*AUC - 1), scaled down by any bias it shows against archaic writing. RAID-trained engines are damped because our corpus is RAID.

- Confidence from agreement -- a tight cluster across independent engine families is trustworthy; one confident engine is not.

- Skepticism, but only when earned -- unanimous high classifier scores are damped only when the text itself carries human markers (contractions, first-person, slang). Applied unconditionally it fired on 69 of 70 AI samples and 0 of 66 human ones, suppressing correct detections.

Fakespot was previously the anchor, weighted 0.13. It is accurate on modern text (AUC 0.999) but scored pre-1920 human prose at 0.645 against 0.112 for modern human writing -- the largest bias of any engine -- and anchoring amplified it. Machiavelli scored 62.5. After demotion to 0.033, literary passages average 10.2 and none is flagged.

SlopTotal detects CPU, RAM and GPU at startup and picks a profile. Everything

can be overridden with environment variables; see .env.example.

High-RAM CPU servers (e.g. 64 GB, no GPU): you automatically get the performance profile. With no CUDA, all inference stays on CPU but you can run more concurrent workers and model pool replicas:

# Tune for a 64 GB CPU-only server

export SLOPTOTAL_PROFILE=performance

export SLOPTOTAL_TORCH_THREADS=8

export SLOPTOTAL_FULL_WORKERS=8

export SLOPTOTAL_SNIPPET_WORKERS=6

export SLOPTOTAL_MAX_CONCURRENT_FULL=4

export SLOPTOTAL_POOL_FAKESPOT=2

export SLOPTOTAL_POOL_TMR=2

./scripts/start.shStartup profiles populate unset settings before the analyzer reads its fallback

defaults. Explicit environment values take precedence. The lite profile sets

the snippet concurrency limit to 2; other profiles use 4. On CPU, the

performance profile sets all four classifier pools above to 2 when RAM is at least

32 GB; otherwise these pools use 1, including CUDA profiles.

Can AI detectors be trusted? Not blindly. No detector, this one included, should be the only evidence for an accusation. That is why SlopTotal shows all 23 votes, how much they agree, and its measured false-positive rate. Short text (under about 80 words) and heavily edited AI text are unreliable for every detector.

Does it detect ChatGPT, Claude, Gemini, Llama and Mistral? The evaluation corpus includes GPT-4, ChatGPT, Llama and Mistral output. The classifiers were trained on a wider mix. Newer models are covered as far as they share those fingerprints; the evaluation harness lets you measure any model you care about.

Will it flag classic literature or formal writing? Not in our tests: none of the 26 passages from Austen, Melville, Kafka, Machiavelli and others is flagged. Pre-1920 prose is part of the evaluation precisely because naive detectors fail on it.

Is my text stored or shared? It is processed on the server you run. Reports are kept for 30 days (configurable) so report links work, and nothing is sent to an outside service.

Can it detect AI-generated code? No, and we do not claim it can: in testing the engines never flagged human code but never caught machine-written code either. The Site check reports which AI app builder produced a website, which is a different question.

app/ FastAPI backend: engines, ensemble, site fingerprints, API

web/ The web UI (Jinja2 templates, vanilla JS, no build step)

tests/ Unit tests (seconds, no downloads) and tests/eval/ accuracy harness

scripts/ smoke_test.py (end-to-end) and the model drift check

benchmarks/ Speed and load scripts

ARCHITECTURE.md covers the internals. AGENTS.md is a short brief for contributors and AI coding assistants.

Detector models keep appearing on Hugging Face, each with its own accuracy claim. Before adding any, we score them on the same two corpora. September 2026, standalone, 180 RAID texts plus the 26 literary passages:

RAID-trained models score near 1.0 on RAID by construction and need a different test set first. The full table, the models we excluded and why, and the raw scores are in tests/eval/FINDINGS.md. The roadmap is in TODO.md.

- RAID benchmark (ACL 2024): adversarial AI text detection dataset used in our evaluation

- Detecting the Machine (2026): cross-architecture detector benchmark; ensembles beat single detectors

- EditLens: human vs AI-edited vs AI-generated classification

- GLTR: visual token-rank inspection, the inspiration for our GLTR engine

- distil-labs/distil-ai-slop-detector: a 270M Gemma detector that runs in the browser

- sloptotal-extension: the Chrome extension

Contributions are welcome, especially new engines with measurements. Start with CONTRIBUTING.md.

If SlopTotal is useful to you, a star helps other people find it.

MIT. Model weights keep their own licenses; see THIRD_PARTY_LICENSES.md.