noai & noimageai: Block AI Training with Meta Tags
The noai and noimageai directives let you opt out of AI training on a per-page basis — without touching robots.txt, without removing yourself from search results.
What are noai and noimageai?
noai and noimageai are directives added to the robots meta tag (or HTTP response header) that tell AI crawlers not to use your content for model training. They were proposed by web publishers and have been adopted by major AI companies including Google, OpenAI, and Anthropic.
noaiPrevents AI bots from using any page content (text, code, structured data) for training AI models.
noimageaiPrevents AI image models from using images on the page as training data. Does not affect text content.
These are complementary directives. Most publishers use both:
<meta name="robots" content="noai, noimageai">
noai vs. noindex — Critical Difference
These are often confused. They do completely different things:
| Directive | Search visibility | AI training | Use when |
|---|---|---|---|
| noindex | ❌ Removed from search | ⚠️ No direct effect | You don't want the page in any search results |
| noai | ✓ Still indexed | 🛡️ Blocks AI training | You want search visibility but no AI training use |
| noai, noimageai | ✓ Still indexed | 🛡️ Blocks text + image training | Full AI training opt-out, keep SEO |
| noindex, noai | ❌ Removed from search | 🛡️ Blocks AI training | Private/sensitive pages — no indexing, no training |
noai if you want to stay in search results but opt out of AI training. Only use noindex if you genuinely want the page removed from search.How to Implement
<head> of every page you want to protect. Works for HTML pages only.<head> <meta name="robots" content="noai, noimageai"> </head>
<meta name="robots" content="index, follow, noai, noimageai">
<meta name="robots" content="noimageai">
# In your server {} block:
add_header X-Robots-Tag "noai, noimageai" always;
# Or for specific paths only:
location /blog/ {
add_header X-Robots-Tag "noai, noimageai" always;
}Header always set X-Robots-Tag "noai, noimageai"
const nextConfig = {
async headers() {
return [
{
source: '/(.*)',
headers: [
{ key: 'X-Robots-Tag', value: 'noai, noimageai' },
],
},
];
},
};export default {
async fetch(request) {
const response = await fetch(request);
const newResponse = new Response(response.body, response);
newResponse.headers.set('X-Robots-Tag', 'noai, noimageai');
return newResponse;
},
};<!-- Block only AI training bots, allow AI search bots --> <meta name="GPTBot" content="noindex"> <meta name="ClaudeBot" content="noindex"> <meta name="CCBot" content="noindex"> <meta name="cohere-ai" content="noindex"> <!-- Allow AI search bots (PerplexityBot, OAI-SearchBot, etc.) --> <!-- Don't set a meta tag for them, or set content="index" --> <!-- Or: block an AI search bot from one specific page --> <meta name="PerplexityBot" content="noindex">
Note: per-bot meta tags use noindex, not noai. The noai directive only works in the generic name="robots" tag.
Settings → Search Appearance → Advanced → "Allow search engines to show your site" — or add noai via the Advanced Robots Meta Tags plugin. For X-Robots-Tag, add to functions.php via add_action('send_headers', ...).
Edit any post → Rank Math → Advanced tab → "Custom Meta Robots Tags" → add "noai, noimageai".
Project Settings → SEO → Meta Tags section, or use Custom Code in page settings to add the meta tag to the <head>.
Edit theme.liquid to add the meta tag inside the <head> tag. For site-wide coverage, add it to the layout file.
Inject custom code via Settings → Code Injection → Site Header. Add the meta tag there.
Which AI Bots Respect noai?
The noai directive is newer than robots.txt, so compliance varies. Major players have adopted it; smaller or less-scrupulous crawlers may not honour it.
For Bytespider, use robots.txt + consider server-level IP blocking. See full details in the Bytespider bot profile.
noai vs. robots.txt: When to Use Which
robots.txtOne file controls everything. More widely supported, bot checks it before crawling any page.
meta noaiPer-page control without touching robots.txt. Ideal for protecting individual blog posts or premium content.
X-Robots-Tag headerMeta tags only work in HTML. HTTP headers work for any file type.
Bothrobots.txt prevents the crawl; meta noai provides a second signal if the bot crawls anyway.
Frequently Asked Questions
noai is a robots meta directive that signals AI crawlers not to use your page content for AI model training. Place it in <meta name="robots" content="noai"> or in the X-Robots-Tag HTTP header.
noai blocks AI training on all page content (text, code, structured data). noimageai only blocks AI training on images. Most publishers use both together: <meta name="robots" content="noai, noimageai">.
No. noindex removes your page from search results entirely. noai only signals opt-out from AI training — your page stays fully visible in Google and other search engines.
Major AI companies (OpenAI, Anthropic, Google, Perplexity, Cohere) honour noai. Bytespider (ByteDance) has a documented history of ignoring meta directives. For Bytespider, use robots.txt disallow or server-level blocking.
Not strictly required — robots.txt blocking is usually sufficient. noai provides a belt-and-braces second layer in case a crawler fetches the page without checking robots.txt first. It's a 5-second addition that doesn't hurt.
Check if noai is set on your site
Enter any URL to instantly see its X-Robots-Tag headers, meta robots directives, and whether AI training bots are being blocked.
Related Guides
Is your site protected from AI bots?
Run a free scan to check your robots.txt, meta tags, and overall AI readiness score.
Scan My Site Free →