How to Set Up Robots.txt for AI SEO in 2026: The Definitive 10M-Request Guide
Why blocking all AI bots destroys your ChatGPT and Perplexity citations, which crawlers actually send traffic, and how to block scraper freeloaders in Next.js.
5 min read
Over 45% of all requests hitting modern web servers now originate from autonomous bots, scrapers, and artificial intelligence crawlers. When founders and engineering teams inspect their server logs, their initial reaction is often panic: server bandwidth spikes, edge invocation counts climb, and analytics show phantom traffic.
The most common impulse is to paste a blanket ban into robots.txt:
# ❌ The mistake that kills your AI visibility
User-agent: *
Disallow: /or adding blanket blocklists targeting anything with "bot" in the name.
Doing this in 2026 is fatal for your organic growth.
If you block all AI crawlers, you do not just stop scrapers. You also sever your connection to ChatGPT Search, Perplexity, Claude, Apple Intelligence, and the search APIs powering autonomous agents like Cursor, Windsurf, and Claude Code. You effectively make your company invisible to the answer engines that modern software buyers use every single day.
Below is the definitive strategy for structuring robots.txt in 2026, backed by log data from over 10 million requests across 22 production SaaS applications and waitlists.
The 4 Tiers of Web Crawlers in 2026
Modern bots fall into four distinct categories. Your robots.txt must treat each category differently.
| Tier | Category | Primary User-Agents | Action | Business Impact |
|---|---|---|---|---|
| Tier 1 | Search & AI Answer Bots | Googlebot, bingbot, OAI-SearchBot, ChatGPT-User, Claude-SearchBot, PerplexityBot, ExaSearchBot | ALLOW | Drives high-intent live buyer traffic, organic citations, and backlink referrals. |
| Tier 2 | Foundation Model Weights | GPTBot, ClaudeBot | ALLOW | Embeds your brand entity and terminology into next-generation model weights. |
| Tier 3 | Social Link Previews | facebookexternalhit, Twitterbot | ALLOW | Generates OpenGraph link cards in Slack, Discord, Twitter/X, LinkedIn, and messaging apps. |
| Tier 4 | Scraper Freeloaders | Bytespider, CCBot, meta-externalagent, Reflectionbot, ElevenlabsCrawler | BLOCK | Consumes server resources, downloads bulk tokens, and provides 0 traffic or citations back. |
1. Keep Search + AI Answer Bots
These crawlers power real-time discovery. When a user asks ChatGPT, "What is the best waitlist tool for a Next.js launch?" or searches on Perplexity, the engine executes a live retrieval-augmented generation (RAG) query.
The bots responsible for live answers and developer agent search must have unrestricted access to your public marketing pages, templates, docs, and blog:
- Googlebot & bingbot: Traditional search engines that now power AI overviews and Copilot.
- Applebot: Feeds Siri suggestions, Spotlight searches, and Apple Intelligence.
- OAI-SearchBot & ChatGPT-User: OpenAI's search-specific crawler and on-demand user browsing agent.
- Claude-SearchBot & Claude-User: Anthropic's live web retrieval agents.
- PerplexityBot & Perplexity-User: Perplexity's real-time citation pipeline.
- DuckAssistBot, Bravebot, YouBot: Independent private search and AI engines.
- ExaSearchBot, LinkupBot, ShapBot: Specialized neural search APIs used by autonomous AI developer tools and agent workflows to fetch live web documentation.
If any of these bots hit a Disallow: / rule, the answer engine drops your URL from the citation list and recommends your competitor instead.
2. Keep Foundation Model Crawlers (GPTBot & ClaudeBot)
GPTBot and ClaudeBot do not perform real-time search. They crawl the web to build pre-training and fine-tuning datasets for future models (like GPT-5 and Claude 4).
Why should an early-stage startup or growing SaaS allow them?
When an AI model has encountered your documentation, blog guides, and template library millions of tokens into its training weights, it develops latent brand recognition. When a user later prompts:
"Generate a waitlist architecture for my project,"
the model will naturally suggest your API structures, embed scripts, and idioms from memory without needing to query a search index. Both OpenAI and Anthropic respect crawl delays and average a lean 30 to 120ms per request with reasonable concurrency.
3. Keep Link Preview Bots
When subscribers share their verified referral links or founders post product updates, social networks and chat platforms immediately fetch the URL to render OpenGraph cards:
facebookexternalhit: Facebook, Instagram, Messenger, and WhatsApp.Twitterbot: Twitter / X card validator.Slackbot,LinkedInBot,TelegramBot: Workplace and messaging unfurls.
Blocking link preview bots makes your links appear as naked, unstyled text without titles, descriptions, or social images, slashing your click-through rates by up to 60%.
4. Block Pure AI Training Scrapers & Commercial Freeloaders
In our analysis of 10 million requests, over 1.6 million requests per week originated from aggressive scrapers that provide zero clicks, zero citations, and zero commercial upside:
- Bytespider (ByteDance / TikTok): Extremely aggressive crawler that frequently ignores crawl-delay directives and bombards origin servers.
- CCBot (Common Crawl): Scrapes mass text for public open-source dumps; valuable for researchers, but a heavy load on startup infrastructure.
- meta-externalagent & meta-externalads: Meta's web scrapers that vacuum content without directing search traffic to independent sites.
- Third-Party SEO Scrapers (
AionBot,Barkrowler,SERankingBacklinksBot,TokenFoundryBot): Commercial bots compiling competitive databases to sell to third parties.
By blocking these scrapers at the robots.txt level, you preserve edge bandwidth and database compute for real human visitors and high-value AI search assistants.
The Production Next.js App Router Implementation
In Next.js 14, 15, and 16, you can manage your rules programmatically inside src/app/robots.js. Next.js compiles this into a clean, compliant robots.txt served from the root.
Here is the exact configuration we run in production for Waitlyze:
// src/app/robots.js
import { SITE_URL } from "@/lib/site-metadata";
// Private app surfaces, dashboard routes, and tenant forms
const PRIVATE_PATHS = [
"/api/",
"/dashboard",
"/waitlists",
"/settings",
"/api-keys",
"/accept-invitation/",
"/verify/",
"/unsubscribe/",
"/forms/",
"/domain",
];
// Tier 1: Live AI Answer Engines and Neural Agent Search APIs
const AI_ANSWER_AND_SEARCH_BOTS = [
"Googlebot",
"bingbot",
"Applebot",
"OAI-SearchBot",
"ChatGPT-User",
"Claude-SearchBot",
"Claude-User",
"PerplexityBot",
"Perplexity-User",
"DuckAssistBot",
"Bravebot",
"YouBot",
"ExaSearchBot",
"LinkupBot",
"ShapBot",
];
// Tier 2: Foundation Model Crawlers
const FOUNDATION_AI_BOTS = ["GPTBot", "ClaudeBot"];
// Tier 3: Link Preview & Social Cards
const SOCIAL_PREVIEW_BOTS = ["facebookexternalhit", "Twitterbot"];
// Tier 4: Scraper Freeloaders (Block completely)
const BLOCKED_SCRAPERS = [
"meta-externalagent",
"meta-externalads",
"Reflectionbot",
"ElevenlabsCrawler",
"AionBot",
"TokenFoundryBot",
"Bytespider",
"CCBot",
"AwarioBot",
"QlyzeBot",
"Barkrowler",
"SERankingBacklinksBot",
"SenderBot",
"TernCrawler",
"SQLSpider",
"SpiderLing",
];
export default function robots() {
return {
rules: [
{
userAgent: [
...AI_ANSWER_AND_SEARCH_BOTS,
...FOUNDATION_AI_BOTS,
...SOCIAL_PREVIEW_BOTS,
],
allow: "/",
disallow: PRIVATE_PATHS,
},
{
userAgent: "*",
allow: "/",
disallow: PRIVATE_PATHS,
},
{
userAgent: BLOCKED_SCRAPERS,
disallow: "/",
},
],
sitemap: `${SITE_URL}/sitemap.xml`,
host: SITE_URL,
};
}Pairing Robots.txt with Machine-Readable Endpoints
robots.txt tells bots where they are permitted to go. But once an AI crawler arrives on your allowed pages, what does it read?
Standard HTML contains thousands of tokens of navigation bars, SVG icons, cookie banners, and CSS class names. In 2026, leading SaaS products pair their robots.txt strategy with Answer Engine Optimization (AEO):
- Markdown Negotiation: Support
Accept: text/markdownor provide/<path>.mdalternatives so agents can consume clean, concise markdown (like Youform and Waitlyze do). llms.txtandllms-full.txt: Provide a curated index of documentation, playbooks, and templates designed specifically for LLM context windows.ai.txt: Document clear permissions, attribution requirements, and machine catalog endpoints.
To see this in action, explore Waitlyze's machine-readable catalog at /api/md/_catalog or check out our developer guide on Next.js waitlist SEO architecture.
Frequently asked questions
Will blocking AI bots stop my website from being cited in ChatGPT and Perplexity?
Yes. Answer engines like ChatGPT Search (OAI-SearchBot, ChatGPT-User) and Perplexity (PerplexityBot) perform live web crawls to synthesize answers. If you block them in robots.txt, they cannot retrieve your pages or cite your brand.
What is the difference between an AI search bot and an AI training crawler?
AI search bots (OAI-SearchBot, PerplexityBot, Claude-SearchBot) fetch live URLs in response to user queries and supply clickable citations. Training crawlers scrape tokens into training datasets without sending direct search traffic.
Should I keep GPTBot and ClaudeBot allowed?
Yes, for pre-launch products and SaaS companies. Allowing GPTBot and ClaudeBot ensures future model weights recognize your product name and value proposition even before conducting live web lookups.
Why do link preview bots need explicit access?
Bots like facebookexternalhit and Twitterbot parse OpenGraph tags to generate link cards across Slack, X, Discord, and iMessage. Blocking them breaks your shared social previews.