Perspective API Is Shutting Down: The Best Alternative & How to Migrate

Perspective API Is Shutting Down: The Best Alternative & How to Migrate

TL;DR

  • Perspective API shuts down on December 31, 2026. There are no new signups or extensions, and Google will not provide migration help.
  • Stream AI Moderation replaces it with one API under one contract that covers text, images, video, and audio in 50+ languages.
  • Each Perspective attribute maps to one or more Stream harm labels. Score thresholds become severity levels, each with an action: keep, flag, or remove.
  • Run Stream alongside Perspective on live traffic, compare the results, and switch before December.

Google's Perspective API stops working on December 31, 2026. Jigsaw stopped accepting new requests in February 2026, it isn't offering extensions, and it has said it will not provide migration support.

If your app sends comments or messages to Perspective for a toxicity score, that score will be removed on January 1, along with any rules you built on top of it.

This post covers:

  • What happens at shutdown
  • Where Perspective fell short
  • What to look for in a replacement
  • How those options compare
  • How to move your setup to Stream AI Moderation

What Happens When Perspective API Shuts Down

Screenshot of Google's Perspective API sunset announcement: the API will no longer be in service after 2026, and Google will not be offering direct migration support

According to perspectiveapi.com, the service stays active until December 31, 2026, and after that, the API is no longer in service. Jigsaw has also said it "will not be offering direct migration support."

When the endpoint stops responding, your integration handles the error. If it fails open, comments publish with no score, and anything you were hiding or holding for review goes live. If it fails closed, legitimate content gets stuck. Check which one your code does before the deadline.

Losing the tool doesn't remove the obligation. If your platform is in scope of the EU Digital Services Act or the UK Online Safety Act, you still need a way to find and act on illegal and harmful content.

Perspective API's Limitations

Perspective was free and simple, which is why so many teams used it. You sent text and got back a probability between 0 and 1 for attributes like TOXICITY and INSULT.

That simplicity also set its limits, including:

  • It returned a score without a reason. Perspective told you how likely a comment was to be toxic, not what in it was toxic or why. Teams tuned thresholds by hand and couldn't explain a removal to the user it affected.
  • It handled text only. Images, video, and audio needed a separate vendor.
  • Language coverage was limited, and not every attribute was available in every language.
  • It was easy to evade. Extra spaces, symbols, leetspeak, and lookalike characters lowered scores enough to get through.
  • It only scored. Perspective didn't queue content or take action on it, so every team built its own review queue, user enforcement, and audit trail.

What to Look for in an Alternative

When replacing Perspective, pick something that closes those gaps.

Check for:

  • Detection and enforcement in one place instead of just a score.
  • Native multilingual detection rather than translating everything to English first.
  • Handling for obfuscated text and algospeak.
  • Image, video, and audio moderation through the same API.
  • Real-time latency for chat and comments.
  • A human review queue with user-level actions.
  • Policies you can configure per surface or community.
  • Predictable per-item pricing.

Your Replacement Options

You can replace Perspective API in a few ways.

One option is to build a replacement from tools you already have. Another is to move to a more robust moderation API. Each approach below can take over part of what Perspective did but also comes with tradeoffs.

At a glance

OptionUnderstands contextLanguagesSpeedReview and enforcementContent types
Stream AI ModerationYes50+Under 50ms for textReview queue, actions, and audit log includedText, image, video, audio, livestream
Keyword blocklistNoOnly what you writeFastBuild your ownText
General-purpose LLMYesBroadOften too slow for real-time chatBuild your ownDepends on the model
Translate then moderatePartly, slang and slurs get lostDepends on the translationAdds a translation stepBuild your ownText

1. Use a multimodal moderation API

How it replaces Perspective: A moderation API like Stream AI Moderation takes over the same job of checking content as it arrives. It also covers the limitations discussed above, so you don't have to build them yourself.

Stream benefits include:

  • An AI agent that reviews flags. Nora, Stream's moderation agent, checks each flag against the conversation, the user's history, prior actions, and your policy, then acts or recommends an action.
  • Speed measured on live traffic. Text classification handles more than 1,500 requests per second at peak, with API latency of about 50 ms or lower.
  • Ready-made labels, plus your own. The NLP text model has 40+ harm labels, and the LLM model lets you add custom labels with a simple description.
  • Context from earlier messages. The LLM text engine judges a message against your rules and the recent conversation history, so it isn't checked on its own.
  • One policy for every content type. Stream applies one policy across text, images, video, and audio. Images are checked along with the text inside them, and audio is transcribed and checked against your text policy.

Where it may not fit: A moderation API is a paid service, and moving to one involves mapping your current setup to a new system. The migration steps later in this post cover that. If your platform is small and you only moderate text in one language, a blocklist may be enough to start.

2. Use a keyword blocklist

How it replaces Perspective: Instead of sending text to an API for a score, you check each message against a list of banned words and phrases. If a message matches, you hide it or hold it for review. It is simple to build and runs fast.

Where it falls short: A blocklist only catches what you have already listed. It misses misspellings, new slang, and harmful messages that use no flagged words. It also flags innocent messages that happen to contain a listed word. There is no score or severity, so every match gets the same response. Your team also has to keep the list updated, in every language you support.

3. Use a general-purpose LLM

How it replaces Perspective: You send each message to a large language model with a prompt that asks whether it is toxic, and you act on the answer. An LLM understands context better than a blocklist, so it can tell an insult from a joke, and it works in many languages.

Where it falls short: LLM calls cost more than a scoring API, and they are often too slow for real-time chat. The same message can get different answers on different calls, which makes consistent enforcement hard. You also have to write and maintain the prompt, and build the review queue, user actions, and audit trail yourself.

4. Translate, then moderate

How it replaces Perspective: If your current tool works best in English, you translate each message into English first and then moderate the translation. This lets one tool cover more languages without changing it.

Where it falls short: Slang, slurs, and wordplay often don't translate as intended, and those are the cases you most need to catch. Translation also adds a step to every message, which slows things down. And it still only covers text.

Building your own app? Get access to our Livestream or Video Calling API and launch in days!

Stream vs. Perspective API at a Glance

If you're leaning toward a moderation API, the table below shows how Stream compares with Perspective side by side.

Perspective API Stream AI Moderation
Availability Shuts down December 31, 2026. No new requests since February 2026. Available now
What you get back A score from 0 to 1 for each attribute Harm labels, harm type, severity level, and a recommended action: keep, flag, remove, shadowblock, bounce
Content types Text only Text, images, video, audio, and livestreams
Languages Limited. Not every attribute works in every language. 50+ languages
Harm coverage Toxicity-related attributes, such as TOXICITY, INSULT, and THREAT Also covers scams, doxxing, self-harm, PII, and attempts to move users off your platform
Review and enforcement None. You build your own review queue and user actions. Review queue, user actions (ban, shadowban, ip ban), and Nora, an AI agent that reviews flags
Setting rules Thresholds you tune by hand on each score An action for each severity level, plus a no-code rule builder and plain-language policies you can test on past content
Decision records A score with no reason. You build your own audit trail. An audit log of every decision and who or what made it
Cost Free $100 in free credits each month, then pay-as-you-go; up to 75% discounts on enterprise pricing

How to Migrate From Perspective API to Stream

Step 1: Map Perspective attributes to Stream harm labels

Perspective returns one score per attribute. Stream returns specific harm labels, a harm type, and a severity level. Use this as your starting mapping:

Perspective attribute Stream harm labels
TOXICITY No single equivalent. Use Hatred, Insult and Vulgarity together, and act on severity.
SEVERE_TOXICITY Any toxic label at High or Critical severity
IDENTITY_ATTACK Hatred, Racism, LGBTQIAPLUS_PHOBIA, Misogyny, Ableism
INSULT Insult, Body-shaming
PROFANITY Vulgarity
THREAT Threat
SEXUALLY_EXPLICIT Sexually Explicit, Sexual Harassment

Stream also detects harms Perspective never covered, including scams, doxxing, self-harm, PII, and attempts to move users off your platform. Decide which of those to turn on while you're setting up the policy.

Step 2: Turn score thresholds into severity actions

Most Perspective integrations had a rule like "hide above 0.9, send to review above 0.7." In Stream, you set an action for each severity level instead. This is a typical starting point:

Perspective rule Stream setting
Score above 0.9: remove Critical and High severity: remove
Score 0.7 to 0.9: hold for review Medium severity: flag to the review queue
Score below 0.7: allow Low severity: keep

Step 3: Swap the API call

A typical Perspective request:

POST https://commentanalyzer.googleapis.com/v1alpha1/comments:analyze?key=API_KEY
{ "comment": { "text": "example text" }, "languages": ["en"], "requestedAttributes": { "TOXICITY": {}, "INSULT": {} } }

The Stream equivalent:

const result = await client.moderation.check({
  entity_type: "comment",
  entity_id: "comment_123",
  entity_creator_id: "user_789",
  moderation_payload: { texts: ["example text"] },
  config_key: "your-policy-key",
});

The response includes a recommended_action of keep, flag, or remove, so your code makes one decision instead of comparing scores against thresholds. Anything flagged goes to the review queue automatically.

Step 4: Run both in parallel

Send live traffic to both APIs for 2 weeks before you switch. Compare how often each one flags content, review the cases where they disagree, and adjust your severity actions until false positives are where you want them.

Stream is offering free services for the 2-week parallel testing while you evaluate the product. To enable this, please reach out to kenzie.wilson@getstream.io.

Step 5: Cut over before December

Aim to have Perspective switched off by early December. December 31 lands at the end of peak holiday traffic, which is a bad week to find a gap in your setup.

What You Get Beyond a Toxicity Score

Stream AI Moderation gives you:

  • A review queue and dashboard for your moderators.
  • Actions per policy: remove, shadowblock, bounce, ban, or send to a team.
  • Image, video, audio, and livestream moderation through the same API.
  • A rule builder that combines AI labels, user history, and thresholds into if/then rules without code.
  • Policies you describe in plain language, test on past content, then turn on.
  • An audit log of every decision and who or what made it, for transparency reporting.

Frequently Asked Questions

Can I still sign up for Perspective API?

No. Jigsaw stopped accepting new requests in February 2026.

What is the best alternative to Perspective API?

Stream AI Moderation is the best alternative for teams that need more than a toxicity score. It does the same job as Perspective, checking content as it arrives, and it adds what Perspective didn't have, including image, video, and audio moderation, 50+ languages, a review queue, and an audit log, all through one API. Instead of a score you have to interpret, it returns harm labels, a severity level, and a recommended action (keep, flag, or remove).

Does Stream moderation work if I don't use Stream Chat?

Yes. Stream's moderation API works on its own, or alongside Stream Chat, Video, and Feeds.

When does Perspective API shut down?

Perspective API stays active until December 31, 2026, and stops working after that. Jigsaw stopped accepting new requests in February 2026. If your app still sends content to Perspective, aim to switch by early December so you aren't moving during peak holiday traffic.

Why is Google shutting down Perspective API?

Jigsaw, the Google team that built Perspective, says AI has advanced and there is now less demand for a standalone tool in this area.

Is there a drop-in replacement for Perspective API?

Some services copy Perspective's request format, so you only change the endpoint. They replace the score, but not what Perspective lacked, such as reasons, a review queue, or images and video. Stream AI Moderation uses its own API. You map each Perspective attribute to Stream harm labels, set an action per severity level, and change one API call.

Start Your Migration

The shutdown date won't move. Starting now means you test on real traffic in November instead of rushing a cutover during the holidays.

Start for free ->