DETERMINISTIC · NO LLM IN THE HOT PATH

Content filtering
that never guesses.

A deterministic text filter, hardened against the tricks people use to dodge moderation. One call returns a verdict you can replay, audit, and explain — same input, same answer, every time.

Try the playground → Read the docs
POST /v1/filter
$ curl -s api.filter8.dev/v1/filter \
-H "Authorization: Bearer f8_live_…" \
-d '{"text":"you are an @ss","rating":"E10"}'
# 200 · bundle v42
{
"action": "mask",
"clean_text": "you are an ***",
"via": ["leet"],
"score": 0.72
}
THE PLAYGROUND

Paste anything. Watch it decide.

The full engine, running live as you type. Try an evasion below.

LIVE · full engine
INPUT TEXT
TRY AN EVASION
VERDICT bundle v42
MASK profanity censored in place
CLEAN_TEXT
you are an ***
VIA — WHAT FIRED
leet
THE HOT PATH

Text in. Verdict out. Milliseconds later.

No model to call, no dice-roll — one purpose-built engine that returns the same answer every time. The how is our edge. The what is three moves.

01
Strip the disguise
Casing, invisible characters, look-alikes, padding, spelled-out numbers — every dodge folded back to plain text before a single word is judged.
02 · THE ENGINE
Find what matters
Years of red-team tuning, in one pass: it catches the real hit through the obfuscation, while whitelist vetoes spare the innocent look-alike. This part is ours.
03
Make the call
A rating-aware policy weighs the context and picks an action — stricter for younger audiences, lenient where it should be.
Verdict
allow· mask· reject· review
WHY FILTER8

Everything a moderation API should be — and auditable.

Deterministic & explainable
A verdict is a pure function of (bundle, input). Ask for explain: true and get a reproducible trace of every candidate and veto.
Evasion-hardened
Leet, homoglyphs, zero-width, spacing, repeats, reversed, grawlix, phonetics — all folded back before matching.
Contact classifiers
Phone (incl. spelled-out), email, URL, handles and addresses — caught even when obfuscated as "six eight… at gmail dot com".
Rating-aware
Per-(rating, category) ceilings from E to M. Minors get stricter thresholds and shorter retention — COPPA/GDPR-K aligned.
Crisis routing
Self-directed distress escalates to a human with resources — never silenced. Directed encouragement is rejected + flagged.
Privacy-safe by design
Logs record span offsets, never the substring. No raw content or detected PII ever lands in a log line.
THE SUPERPOWER

Every verdict replays offline.

Because (bundle, input) → verdict is pure, the explain trace reproduces any decision anywhere — CI, an audit, a bug report. No "the model changed" mysteries.

  • ▸ Content-addressed dictionary bundles, stamped on every response
  • ▸ Whitelist vetoes shown, not hidden (see scunthorpe)
  • ▸ Off the hot path — only built when you ask for it
// explain: true
{
"action": "mask", "bundle": "v42",
"candidates": [
{ "term": "ass", "score": 0.72,
"via": ["leet"], "vetoed": false },
{ "term": "class", "score": 0.71,
"vetoed": true, "by": "whitelist" }
]
}
PRICING

Priced below the hyperscalers, by design.

See full pricing →
Free
every account starts here
$0
100 calls to try
POPULAR
Startup
for shipping products
$20/mo
2M calls · classifiers
Scale
for high-volume UGC
$100/mo
20M calls · conversation layer

Filter your first message in a curl.

Free to start, no card. A key, an endpoint, a verdict you can explain.

Get an API key Read the docs