The short version
- English toxicity and insults: layahost is better. At the same rate of false alarms (5% of clean comments flagged) it catches 59% of toxic comments against 40% for OpenAI, and 73% of insults against 48%.
- Sexual content: OpenAI is better (AUC 0.98 vs 0.945).
- German, Spanish and French: OpenAI is better. English is ahead on layahost; Italian is a tie.
- Threats: layahost is ahead, by a small margin.
- Identity attacks: a tie within the margin of error on this sample.
- Price and hosting differ more than accuracy: OpenAI’s endpoint is free with an OpenAI account; layahost is paid (from $9 a month), runs in the EU, speaks the Perspective API and lets you ask your own questions.
Accuracy in English
580 comments from the held-out test split of Civil Comments (CC0), where each comment is rated by several people per category. A comment counts as positive when at least half the raters said so. The sample is stratified so rare categories have enough examples; weights undo that, so the numbers describe the full dataset.
| Category | Positives | AUC layahost | AUC OpenAI | Caught at 5% false alarms layahost · OpenAI | Ahead |
|---|---|---|---|---|---|
| Toxicity | 278 | 0.931 | 0.878 | 59% · 40% | layahost |
| Insults | 139 | 0.964 | 0.907 | 73% · 48% | layahost |
| Threats | 45 | 0.985 | 0.973 | 96% · 78% | layahost |
| Identity attacks | 55 | 0.927 | 0.907 | 58% · 51% | tie |
| Sexually explicit | 42 | 0.945 | 0.980 | 69% · 91% | OpenAI |
AUC is the chance that a random positive comment scores higher than a random clean one: 1.0 is perfect, 0.5 is guessing. Caught at 5% false alarms sets each model’s threshold so that 5% of clean comments get flagged and counts how many positives it then catches; it compares models whose scores sit on different scales. Ahead names a model only when the 95% bootstrap interval of the AUC difference excludes zero (1,000 paired resamples).
OpenAI also returns its own yes/no, flagged. On this set it caught 71% of toxic comments while flagging 14% of clean ones. Tuned to flag the same 14%, layahost’s TOXICITY catches 83%.
Accuracy in five languages
Toxicity on TextDetox multilingual toxicity: a separate dataset with a yes/no label per comment, 300 comments per language, half of them toxic.
| Language | AUC layahost | AUC OpenAI | Caught at 5% false alarms layahost · OpenAI | Ahead |
|---|---|---|---|---|
| English | 0.999 | 0.983 | 99% · 90% | layahost |
| German | 0.845 | 0.900 | 37% · 55% | OpenAI |
| Spanish | 0.905 | 0.949 | 65% · 79% | OpenAI |
| French | 0.931 | 0.981 | 80% · 91% | OpenAI |
| Italian | 0.824 | 0.813 | 40% · 43% | tie |
layahost sends non-English text to a smaller multilingual checkpoint, and it shows: if most of your comments are in German, Spanish or French, OpenAI is the stronger choice today.
How the categories line up
The two APIs don’t use the same categories. layahost implements Perspective’s attributes; OpenAI has its own policy categories and no category for general toxicity or profanity. For each attribute we used the highest score among the OpenAI categories that cover it:
| layahost (Perspective) | OpenAI categories used |
|---|---|
TOXICITY | harassment, hate, harassment/threatening, hate/threatening, violence |
INSULT | harassment |
THREAT | violence, harassment/threatening, hate/threatening |
IDENTITY_ATTACK | hate, hate/threatening |
SEXUALLY_EXPLICIT | sexual, sexual/minors |
Profanity and severe toxicity have no OpenAI counterpart, so they are not compared. In the other direction, OpenAI covers self-harm, illicit activity, graphic violence and sexual content involving minors, and it can check images; layahost is text only and has none of those categories built in, though you can ask your own yes/no or choice question about any of them.
Speed
| Request | Median | 90th percentile |
|---|---|---|
| OpenAI, one comment (all categories) | 274 ms | 359 ms |
| layahost, one comment, TOXICITY only | 147 ms | 210 ms |
| layahost, one comment, all seven attributes | 360 ms | 720 ms |
Measured from a server in Helsinki, Finland (the same region as layahost), 60 single-comment requests each, alternating order, 26 September 2026. layahost runs in that region, so from there it has a head start; from the US, OpenAI is closer. layahost’s time grows with the number of attributes you ask for, OpenAI’s doesn’t.
Everything else
| OpenAI Moderation | layahost | |
|---|---|---|
| Price | Free with an OpenAI API account | From $9/month for 1M decisions, or $15 per million prepaid; one attribute is one decision |
| API | OpenAI’s /v1/moderations | Google Perspective’s comments:analyze (a drop-in after Perspective’s shutdown), plus a simple /v1/decide |
| Your own rules | Fixed categories | Ask any yes/no, choice or score question, or chain them into a flow |
| Hosting | OpenAI (US company); regional data residency depends on your OpenAI plan | EU (Helsinki, Finland); text is processed in memory and not stored |
| Input | Text and images | Text |
| Model | Proprietary | Laya, open (Apache-2.0) |
Which one should you use?
- You already use OpenAI and moderate mostly non-English text, sexual content, self-harm or images: use OpenAI’s endpoint. It’s free and better at those.
- You moderate English comments and care most about catching insults and toxicity without flagging honest criticism: layahost did better on our test, at equal false alarms.
- You use Google Perspective today: layahost keeps your code working after 31 December 2026; change the host and the key. See the Perspective API alternative.
- Your rules don’t fit anyone’s fixed categories (“is this a competitor’s ad?”, “does this reveal a phone number?”): layahost lets you ask that question directly.
- Data must stay in the EU: layahost.
Whatever you pick, test on a few hundred of your own comments first. Both models make mistakes, and your data is not Civil Comments.
Try layahost on the same call
curl "https://layahost.com/v1alpha1/comments:analyze?key=$LAYAHOST_API_KEY" \
-H "Content-Type: application/json" \
-d '{"comment": {"text": "You are an idiot."},
"requestedAttributes": {"TOXICITY": {}, "INSULT": {}}}'
New accounts get $1 of free credit after email verification. Create an account or read the Perspective API docs.
Method
- Data: Civil Comments test split (CC0), a stratified sample of 580 comments with inverse-probability weights; TextDetox multilingual toxicity, 300 comments per language, balanced.
- OpenAI:
omni-moderation-latestvia/v1/moderations, category scores as returned, 26 September 2026. - layahost: the production API’s Perspective-compatible attributes (model
laya-auto), calibrated scores exactly as the API returns them; AUC for the multilingual set uses the raw scores, which rank the same. - Metrics: weighted ROC AUC; share of positives caught at the threshold that flags 5% (and 10%) of negatives; 95% paired-bootstrap intervals of the AUC difference, 1,000 resamples.
- Not affiliated with OpenAI or Google. OpenAI and Perspective are trademarks of their owners, named here only to compare.