← All research

PerplexityBot vs PerplexityUser: the two-bot model and what it means for opt-out

2026-03-05·2 min read
crawlersperplexityrobots-txt

Perplexity is one of the few AI-search providers to publish a clear two-bot model with explicit, distinct compliance rules. Understanding the split is necessary if you want to make informed decisions about whether (and how) to block Perplexity from your domain.

The two bots

PerplexityBot — A traditional indexing crawler. Used to build and maintain Perplexity's search corpus. Its requests carry the PerplexityBot user-agent string. Per Perplexity's published guidance, PerplexityBot respects robots.txt.

PerplexityUser — Fired when an individual user submits a query whose answer requires fetching a specific URL. Per Perplexity's documentation, this is treated as a user-initiated browsing action rather than a crawl, and on that basis Perplexity states they do not bind PerplexityUser to robots.txt. The framing parallels how a browser fetches a page when a user pastes a URL — the browser doesn't consult robots.txt.

Why this matters

This distinction has been controversial. Critics argue that any automated fetch from Perplexity infrastructure should respect robots.txt regardless of trigger; Perplexity argues PerplexityUser fetches are extensions of a human's browsing intent. Whichever framing you find more persuasive, the practical implication is:

  • A robots.txt block of PerplexityBot removes you from Perplexity's search index — Perplexity will not surface your domain in unprompted answers.
  • That same block does not prevent PerplexityUser from fetching your URL when a user explicitly asks Perplexity about it.
  • A complete block of both requires Disallow: / for both PerplexityBot AND PerplexityUser in robots.txt, and even then Perplexity's documented position is that PerplexityUser may still fetch on user request.

Example robots.txt patterns

Block Perplexity's search index but allow user-initiated fetches:

User-agent: PerplexityBot
Disallow: /

Attempt to block both (effectiveness depends on whether Perplexity treats your block as binding for PerplexityUser):

User-agent: PerplexityBot
Disallow: /
User-agent: PerplexityUser
Disallow: /

Verifying who actually fetched your page

Server access logs let you tell PerplexityBot fetches apart from PerplexityUser fetches by inspecting the User-Agent header. If you see PerplexityUser hits despite a block, that's expected per Perplexity's stated policy — the block applies to PerplexityBot.

How AI Visibility Monitor checks this

The Crawler Access tool reports both PerplexityBot and PerplexityUser robots.txt status independently. The Performance probe queries Perplexity Sonar and parses returned citations URLs into the Citations dashboard, so you can see which of your pages Perplexity is actively surfacing in answers — separate from the question of which bots can fetch you.

Sources

  1. Perplexity Bots & User Agents · Perplexity Documentationhttps://docs.perplexity.ai/guides/bots
  2. PerplexityBot user agent · Perplexity Documentationhttps://docs.perplexity.ai/guides/bots#perplexitybot
  3. PerplexityUser user agent · Perplexity Documentationhttps://docs.perplexity.ai/guides/bots#perplexity-user

Spot something we missed or got wrong? Email research@codeandwander.com.