Unprofane

Portuguese profanity filter API for Brazil and Portugal

It knows Brazil’s insults and Portugal’s, reads their disguises, and reads each word as your users’ country does.

Live on the real engine One word, two countries

rapariga

In Portugal"country": "PT"

És uma rapariga muito simpática.

You’re a very nice girl.

allow

In Brazil"country": "BR"

És uma rapariga muito simpática.

You’re a very nice whore.

block · moderate
Or pick

Name the country your users are in and the same sentence reads as theirs reads it. Without one, the rules read the words around the word. The words read by country.Each answer is the rules alone, the fast mode, checking a comment with language: "pt". In balanced mode, the default, the model reads what the rules leave open.

Every Portuguese disguise, read back

Each spelling as typed, what the rules read in it, the tricks they named and their answer.

Brazil and Portugal swear differently

One language, and a different set of insults on each side of the Atlantic.

WhereTypedWhat it saysThe rules
BrazilVai tomar no cu!Fuck off!block · strong
BrazilSeu arrombado!You asshole!block · strong
BrazilvtncVai tomar no cu, abbreviatedreview · strong
PortugalVai-te foder!Fuck off!block · strong
PortugalÉs um cabrão!You bastard!block · strong
PortugalcrlCaralho, abbreviatedreview · strong

Portuguese words a list would block

A list matching inside words finds a rude string in each; the rules read the whole word.

  • computadorA computer
  • deputadoA member of parliament
  • cuscuzCouscous
  • rolamentoA ball bearing
  • cagarraA seabird, Cory’s shearwater
  • BostarengaA village in Portugal
  • Pico ItapirocaA peak in Brazil
  • CuiabáA city in Brazil

A list matching inside words8 of 8blocked

Unprofane, rules alone8 of 8allow

Measured in Portuguese

The same Portuguese texts given to every system, and the open benchmark’s Portuguese items.

94.0%

Unprofane

Flagged 2.1% of clean Portuguese texts

69.4%

Perspective API

Flagged 6.4% of clean Portuguese texts

55.2%

OpenAI moderation

Flagged 4.3% of clean Portuguese texts

The share of 134 toxic Portuguese texts each caught; the same set holds 233 clean ones. The judged development set, read on , engine 2026-09-29, each system at Unprofane’s overall false-alarm rate. Unprofane was tuned on this set, so its figures here flatter it.How it was measured

0.968F1 on the Scunthorpe Test’s 33 Portuguese items, rules aloneThe public split, run of , engine 2026-10-18. Every language’s score

Other APIs and Portuguese

Name Portuguese in the call

Send language "pt" and a bare word reads as Portuguese writes it. Every language is still read.

Get your API key

100 checks a day, no card

curl -X POST https://api.unprofane.com/v1/check \
  -H "Authorization: Bearer up_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"Vai tomar no cu, seu arrombado!","context":"comment","language":"pt"}'
Response200
{
  "allowed": false,
  "action": "block",
  "severity": "strong",
  "matches": [
    {
      "text": "Vai tomar no cu",
      "normalized": "vai tomar no cu",
      "category": "sexual",
      "severity": "strong"
    },
    {
      "text": "seu arrombado",
      "normalized": "seu arrombado",
      "category": "insult",
      "severity": "strong"
    }
  ],
  "censored": "***************, *************!",
  "language": {
    "detected": "pt",
    "confidence": 0.9
  }
}

Other languages

Filter Portuguese before anyone reads it

Every language Unprofane covers is read on every call, Portuguese with its disguises included.

Get your API key