How to moderate hate speech and insults in Arabic and Turkish
Many moderation APIs were built for English first. Some list Arabic for one category only, and some do not list Turkish at all. Check what each API publishes for each language and each category, then test it on your own messages. Detectivision checks Arabic and Turkish text for insults, hate speech, racism, sexism, sexual language and profanity, among 12 languages, with no language to set.
To moderate Arabic and Turkish text, use a moderation API that lists both languages for the categories your rules cover, such as insults and hate speech, and test it on your own messages before you rely on it. Many tools were built for English first: some list Arabic for one category only, and some do not list Turkish at all. Detectivision checks Arabic and Turkish text for insults, hate speech, racism, sexism, sexual language and profanity, among 12 languages, in one API call.
Why English-first tools miss Arabic and Turkish
Arabic
- Many spoken varieties. People write online the way they speak: Egyptian, Gulf, Levantine or Maghrebi Arabic as often as Modern Standard Arabic. A word that is ordinary in one variety can be an insult in another, and a model trained mostly on formal text meets the everyday words less often.
- Arabic in Latin letters. Many people type Arabic with Latin letters and digits for the sounds Latin lacks: 3 for ع, 7 for ح, 2 for ء, as in "7abibi". A model that knows only Arabic script, or only English, reads it as noise.
- The script itself. Short vowels are usually left out, letters change shape with their position, and people stretch words with repeated letters or the ـ stroke for emphasis. A word list matches none of these unless every form is in it.
- Two directions in one line. Arabic runs right to left, while numbers, names and English words inside it run left to right. Code that cuts or cleans text without handling both can split a word in two.
Turkish
- Suffixes. Turkish adds suffixes to a root, so one insult takes many forms: aptal, aptallar, aptalsın, aptallığın. A list of whole words misses the forms it lacks. A list that matches inside words blocks harmless words that happen to contain a short vulgar one; our Turkish page shows examples from the most common Turkish words.
- Typing without Turkish letters. On a keyboard without them, ş becomes s, ç becomes c, ğ becomes g, ı becomes i, ö becomes o and ü becomes u: şerefsiz is typed serefsiz. Each spelling is a new entry for a list.
- Two letters i. Turkish has a dotted i and a dotless ı. Code that changes case without the Turkish locale turns a capital I into i rather than ı, which can turn a harmless word into a vulgar one.
- Abbreviations. Swear words are often typed as two or three letters, which a list cannot tell apart from ordinary abbreviations without the rest of the message.
Both
Messages mix languages: Arabic with English or French, Turkish with English or German. Emoji, repeated letters and symbols in place of letters are used to slip past filters. And the same word can be abuse or reporting abuse, depending on the sentence around it.
What each API publishes for Arabic and Turkish
| API | Arabic | Turkish | What its own page says |
|---|---|---|---|
| Detectivision | Yes | Yes | Text moderation understands 12 languages, Arabic and Turkish among them, with no language to set. Insults, hate, racism, sexism, sexual language and self-harm are flags on every account; profanity is on the Basic plan |
| Perspective API (Jigsaw) | TOXICITY only | Not listed | TOXICITY lists 17 languages, Arabic among them. SEVERE_TOXICITY, IDENTITY_ATTACK, INSULT, PROFANITY and THREAT list German, English, Spanish, French, Italian, Portuguese and Russian. The service stops after 31 December 2026 |
| Hive | Yes | Yes | Its languages table lists sexual, violence, hate, bullying, phone numbers and child safety (beta) for both. Text moderation "requires an annual contract"; text up to 1,024 characters |
| Sightengine | Not listed | Yes | Its text classification models list English, French, Italian, Portuguese, Spanish, Russian and Turkish; its rule-based filters list 18 languages, Turkish among them |
| Azure AI Content Safety | Outside the tested set | Outside the tested set | The Hate, Sexual, Violence and Self-harm text classifiers are trained and tested on Chinese, English, French, German, Italian, Japanese, Portuguese and Spanish. Microsoft says they can classify other languages, with performance that can vary |
| Amazon Comprehend | No | No | "Currently, toxic content detection supports only the English language" |
| OpenAI moderation | Not listed | Not listed | Its moderation guide lists categories and says the endpoint is free to use; it lists no languages |
Each company's facts are from its own pages, as read on 5 November 2026. Detectivision is not affiliated with any of them. A language in a list means the company says it covers it; it does not tell you how well. Only a test on your own messages does.
How Detectivision checks Arabic and Turkish
Send each message as it was written to POST /api/v1/moderation with "type": "text_moderation". Nothing is translated or cleaned first, and there is no language to set, so a community that writes in Arabic, Turkish and English needs one integration.
| Flag | What it finds |
|---|---|
insult | Name-calling and personal attacks aimed at someone |
hate | Attacks on people for who they are: their origin, religion, gender and the like |
racism | Abuse about race, ethnicity or origin |
sexism | Abuse about sex or gender |
sexual | Sexual language, and sexual harassment of someone |
profanity | Swear words and vulgar slang, even when not aimed at anyone (on the Basic plan) |
self_harm | Talk of suicide or self-harm, so someone can reach out |
Each flag raised comes with its confidence, so your rules can treat them apart: remove hate at once, hold insults for a moderator, only warn on profanity. The models are our own: our team collects and cleans the training data, and trains and develops the models in-house.
curl https://api.detectivision.ai/api/v1/moderation \
-H "Api-Key: $DETECTIVISION_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "text_moderation",
"input": "أنت غبي ولا أحد يريدك هنا",
"mode": "detect",
"flags": ["insult", "hate", "racism", "sexism", "sexual"],
"metadata": { "commentId": "c_7310" }
}'{
"id": 3184,
"type": "text_moderation",
"mode": "detect",
"status": "completed",
"flagged": true,
"flags": [{ "flag": "insult", "confidence": 0.93 }],
"checked": ["hate", "insult", "racism", "sexism", "sexual"],
"unchecked": [],
"tookMs": 640,
"usage": { "charged": 2, "remaining": 9998 },
"metadata": { "commentId": "c_7310" }
}The message means "You are stupid and nobody wants you here." The Turkish "Sen salak birisin, kimse seni istemiyor." says the same and goes to the same endpoint. Values in the example are illustrative. A text can be up to 10,000 characters and costs 1 credit per started 2,500 characters by webhook, twice that for an answer at once (Text moderation docs).
Voice messages and the sound of videos in both languages go through audio moderation, which understands the same 12 languages and gives each finding with its start and end in seconds.
Test before you switch
- Collect real messages. Take a few hundred messages your moderators have already judged in each language: removed ones and approved ones.
- Cover how people write. Include Gulf, Egyptian, Levantine and Maghrebi Arabic if your users write them, Arabic typed in Latin letters, Turkish typed without its letters, mixed-language messages, and messages that quote abuse to report it.
- Count both kinds of error. For each flag, count the abusive messages it missed and the harmless ones it flagged. One overall accuracy figure hides the category that matters to you.
- Set a line per flag. A flag is raised from a confidence of 0.5 by default. Hold the band your moderators should see, and act automatically only above a line where harmless messages stop appearing.
- Keep people who read the language. Appeals and borderline cases need moderators who read Arabic and Turkish, and know the slang of your community.
Start the free trial and run the test in the dashboard's Playground or through the API. The Perspective API alternative page maps Perspective's attributes to these flags if you are moving before it stops.
Frequently asked
Which content moderation APIs support Arabic and Turkish?
As read on 5 November 2026: Detectivision checks both, among 12 languages. Hive lists both for its sexual, violence, hate, bullying and phone number classes, under an annual contract. Sightengine lists Turkish. Perspective lists Arabic for TOXICITY only. Azure AI Content Safety's text classifiers are trained and tested on eight languages, neither of them. Amazon Comprehend's toxicity detection supports only English.
Does Perspective API support Turkish?
Its Attributes & Languages page, read on 5 November 2026, lists no attribute in Turkish, and lists Arabic only for TOXICITY. Perspective API also stops after 31 December 2026.
Why do word lists miss Turkish insults?
Turkish builds words with suffixes, so one insult has dozens of forms. A list of whole words misses them; a list that matches inside words blocks harmless ones. People also type without Turkish letters, so ş becomes s and ı becomes i.
Do I need to tell the API which language a message is in?
Not with Detectivision. Send the message as it was written, Arabic or Turkish script and all; there is no language setting, and nothing is translated first.
How do I test a moderation API on Arabic and Turkish messages?
Take a few hundred messages your moderators have already judged in each language, including dialect, Arabic typed in Latin letters, Turkish typed without its letters and quoted abuse. Send them all, then count misses and false alarms for each category before you set your lines.
Can voice messages in Arabic and Turkish be checked too?
Yes. Detectivision's audio moderation understands the same 12 languages as its text moderation, and gives each finding with its start and end in seconds.
Detect insults, hate speech, racism, sexism and sexual harassment in Turkish text, and in English too, with one API call and a confidence per flag.
Find hate speech, racism and sexism in text written in 12 languages, and hateful images, with one API call. Each flag comes with how sure it is.
Perspective API shuts down after 31 December 2026. Its attributes mapped to Detectivision flags, the languages each covers, and the code before and after.
Yes, for most of it: a model reads every message and says which kind of abuse it finds and how sure it is. What it does well, where people decide.
How to detect toxic comments: what counts as toxic, the three approaches, what to do with a score, and a working Python and Node.js example.
- About the API - Attributes and Languages
- Perspective API (sunset notice)
- Region availability and service limits: Language considerations (Azure AI Content Safety)
- Trust and safety: Toxicity detection (Amazon Comprehend Developer Guide)
- Text Moderation - Overview (languages table)
- What languages does text moderation work with?
- Moderation (OpenAI API guide)
- Text moderation (docs)
- Text moderation API
- Türkçe küfür ve hakaret tespiti (Turkish suffixes, letters and word lists)
- Audio moderation API