COMPARISON · FREE CLASSIFIERS

Free, but it's
someone else's policy.

OpenAI's moderation endpoint is a handy free classifier — for OpenAI's categories, over the network, non-deterministically, rate-limited. Filter8 runs your policy in microseconds — deterministic, rating-aware, and it catches contact/PII too.

Try the playground → Read the docs
100 free calls · no third-party quota · text not sent to a third-party model.
Your policy, not theirs
A fixed category classifier can't become your rules. Filter8 is rating-aware E→M with per-tenant custom dictionaries and whitelists — the policy is yours to shape and explain.
Free isn't free
You still pay in latency (a network hop per message), rate limits, non-determinism, and your users' text sitting in a general-purpose model provider's logs. Filter8 costs none of those.
Catches contact info too
A toxicity classifier ignores "six-eight-six… at gmail dot com". Filter8's classifiers flag phone, email, and URLs — even spelled out.

OpenAI Moderation vs Filter8

CAPABILITY OpenAI Moderation Filter8
ApproachHosted ML classifierDeterministic engine
PolicyOpenAI's fixed categoriesYours — rating-aware + custom dictionaries
LatencyNetwork round-tripSub-millisecond, in-process
Rate limitsThird-party quotaYour plan's rate
OutputCategory flags + scoresVerdict + clean_text
Explainable / replayableScores✓ reproducible explain trace
Data residencyText sent to OpenAINothing retained after the response
Evasion (leet · homoglyph · spacing · zero-width)Model-dependent26 classes, deterministic
Contact / PII (incl. spelled-out)Built-in classifiers
PriceFreeFree tier → flat, volume-priced
"OpenAI Moderation" refers to OpenAI's moderation endpoint. Comparison as of July 2026 based on public information and Filter8's positioning; capabilities and terms change — verify current details with the vendor before relying on specifics.
THE SWAP

From flags to a verdict — and off the network

The moderation endpoint returns category booleans you interpret. Filter8 returns the action and the cleaned text, in-process, against your rating policy.

BEFORE · OPENAI MODERATION
// category flags, over the network
const m = await openai.moderations.create({
model: omni-moderation-latest, input: text
});
const flagged = m.results[0].flagged;
// their categories · no masking · no PII · a hop
AFTER · FILTER8
// your policy, a verdict + cleaned text
const { action, clean_text, via } =
await (await fetch(https://api.filter8.dev/v1/filter, {
method: POST,
headers: { Authorization: Bearer f8_live_… },
body: JSON.stringify({ text, rating: E10 })
})).json();
// allow · mask · reject · review — replayable
WHERE OPENAI MODERATION FITS

Honest about the trade

It's free, it reads nuance an ML model is good at, and it covers many harm categories with zero curation — genuinely useful for the ambiguous tail where intent matters. That's the same review bucket Filter8 flags. Run the deterministic engine on the hot path — every message, in microseconds — and escalate the small uncertain fraction to a model asynchronously. Deterministic core, model on the edge.

OpenAI moderation questions

It's free — why pay?
Free still costs latency, rate limits, non-determinism, and shipping user text to a third party. Filter8 costs none of those and runs your policy. Use OpenAI for the ambiguous tail, Filter8 for the hot path.
Can it enforce my policy?
It classifies against OpenAI's categories. Filter8 is rating-aware with custom dictionaries and whitelists, so the policy — and the explanation — is yours.
Fast enough for send-time chat?
A hosted classifier adds a network hop and a quota to every message. Filter8 decides in microseconds in-process — what a synchronous path needs.
Does my text go to OpenAI?
Yes, with the endpoint. With Filter8, the managed API keeps nothing after the response and logs offsets, never the text.
COMPARE MORE

Run your policy, not a network call.

Deterministic, in microseconds. 100 free calls, no card, no third-party quota.

Get an API key Open the playground