Meta Tags for AI Search: What's Documented and What Isn't
· 17 min read · Updated
Listen to this article · 20 min
AI-generated voice
Українською: Мета теги для AI: що підтверджено, а що ні — читати українською
Meta tags live in the <head> of a page: the title, the description, the canonical address, the rules for robots. They are not part of the visible text, but browsers, search engines and social networks read them. For AI search, vendor documentation boils meta tags down to robots directives. Google and Microsoft name robots directives for their AI features, while OpenAI, Anthropic and Perplexity document only robots.txt, with no word about title, description or Open Graph.
An earlier version of this post said that four tags (title, description, og:image and canonical) decide how your brand looks on a citation card in ChatGPT and Perplexity. I found no primary source for that claim, so this version sticks to what the vendors document and what I measured myself.
TL;DR
- Google sets no additional requirements, special optimizations or markup for AI Overviews and AI Mode. A page has to be indexed and eligible to be shown in Google Search with a snippet (documentation updated 10 December 2025).
- To limit how a page appears in AI answers, Google names
nosnippet,data-nosnippet,max-snippetandnoindex. In September 2023 Microsoft describednoarchiveandnocachefor Bing Chat (Bing blog). - As of 18 October 2026, the crawler pages of OpenAI, Anthropic and Perplexity describe their bots and robots.txt, but do not mention title, description, Open Graph, canonical or hreflang.
- In my test on 18 October 2026, 40 pages gave 34 title probes, and the title reached the text in three of five converters. The description reached it in only one (trafilatura with metadata, 25 of 28 pages), and
og:imagein none (0 of 23 pages). - According to Seer Interactive, a controlled test on 21 pages found no effect of the description on AI crawling (an estimate of minus 1.3%, 95% interval from minus 5.9% to plus 3.3%) or on citations. It is a single-site case study, and it did not measure the title.
- What to do: check your robots directives, and repeat anything a model should read in the visible text of the page. In my test on 10 October 2026, values that existed only in JSON-LD markup (JSON for Linked Data) barely reached the text: at most 4 of 413 values across 40 pages.
What are meta tags in HTML?
Strictly speaking, <meta> is only one of the metadata elements in the <head> of an HTML (HyperText Markup Language) document. MDN describes it as the element for metadata that cannot be expressed by the other meta-related elements, such as <base>, <link>, <script>, <style> or <title>. When I say meta tags for SEO, I mean a wider set than <meta> alone: title, description, canonical, robots and the Open Graph tags.
Which meta tags does AI search read?
By "AI documentation" below I mean two Google pages, AI features and your website and the guide to optimizing for generative AI features, plus the crawler pages of OpenAI, Anthropic and Perplexity, all opened on 18 October 2026. None of them mentions title, description, Open Graph, canonical or hreflang. The "My test" column shows how many head values reached the text of five converters (method below). The summary:
| Tag | AI documentation | My test: what reached the text |
|---|---|---|
robots: nosnippet, max-snippet, noindex |
Google names them as controls for its AI features. | Not measured. |
robots: noarchive, nocache |
Microsoft described them for Bing Chat. | Not measured. |
robots for Applebot and Amazonbot (their own crawler pages) |
Data from these crawlers may train AI models. | Not measured. |
title |
Not mentioned. | Reached it in three of five converters: markdownify 34 of 34, trafilatura 26 of 34, Jina Reader 14 of 34 pages. |
description |
Not mentioned. | Only trafilatura with metadata: 25 of 28 pages. None in the other four. |
og:image |
Not mentioned. | Reached no converter: 0 of 23 pages. |
canonical, hreflang |
Not mentioned. | The scan can't tell: canonical matched the page's own URL on 27 of 28 pages. |
According to Google's documentation, updated 10 December 2025, only a page that is indexed and eligible to be shown in Google Search with a snippet can become a supporting link in AI Overviews or AI Mode. A page with noindex fails that requirement. The documents promise nothing about title, description or Open Graph, and my test showed a spread: the title reached the text in three converters of five, the description in one, og:image in none. Reaching the text is not the same as reaching the answer: the documentation does not explain how a crawler prepares a page for the model.
What I measured, and what I didn't
First, on 10 October 2026, I took the top twenty Google results (United States, English) from DataForSEO for three queries: "json-ld for ai search", "schema markup for ai" and "structured data ai search". Of 54 unique URLs I dropped 14 (social networks, video, errors). I ran the remaining forty pages through four libraries (trafilatura 2.3.1, html2text 2025.4.15, markdownify 1.2.3, readability-lxml 0.9) and the public Jina Reader.
In that JSON-LD scan, a probe was a value of 12 or more characters, or a date, that appeared nowhere else in the page's code. There were 413 of them on 29 pages. Three libraries (readability, html2text, markdownify) kept none, Jina Reader kept one and trafilatura kept four, so at most 4 of 413 possible values.
On 18 October 2026 I repeated the test for head tags: on 39 of those forty pages (one returned 403) plus my own post on alexturik.com, forty pages in total. A probe was a value of title, meta description, og:title, og:description, og:image, the twitter tags or canonical, at least 12 characters long, that does not appear in the body (I count tags and attributes as part of the body). Values that duplicated the title, the description or the page URL I counted once, so a tag gets no credit for work another tag or the request did.
In the head-tag test, html2text and readability kept no value at all. Values of og:title, og:description and the twitter tags that differed from the title or description turned up on five pages or fewer, so I give no rates for them. The title and description survived into text far more often than JSON-LD values did, but it all depends on the converter.
Writesonic, which sells AI visibility tracking, tested the assistants themselves: it placed 62 marker-insertion methods on one page and, in March 2026, asked six assistants to report what they found (study). Five of six found the title and two found og:title, while none found the description, og:description, og:image or JSON-LD. The page contradicts itself: its summary gives Open Graph tags 0 of 6, its table gives og:title 2 of 6, and the page's markup says 60 markers against 62 in the text. The authors give neither the prompt nor any repeat runs, and Perplexity was excluded.
The limits of these measurements:
- The sample is narrow: forty pages on one topic, one market, two dates. A different date will give different numbers.
- The description survived only because trafilatura was called with
with_metadata=True; that parameter defaults to off, so in the default mode I expect no description, though I did not run that mode. Which mode any AI product uses is not documented. - I used common open tools and one public service, not a copy of the ChatGPT, Claude or Perplexity pipeline, because no AI product documents its converter. Reaching the text does not mean a model used it.
- The four libraries read raw HTML without JavaScript; I did not check whether Jina Reader runs JavaScript.
- Absence from the documentation does not prove a tag goes unread. OpenAI's help article on ChatGPT search (403 error), the X Cards documentation (402 error) and Bing's current webmaster guidelines did not open for me, so for Microsoft I rely on the Bing blog post of 22 September 2023.
Does the meta description affect AI citations?
None of the vendor documentation pages I checked describes such an effect. Google explains that snippets are created automatically from page content, and that it sometimes uses the meta description when that describes the page more accurately than the content does (snippets in Search, updated 20 April 2026).
I found one controlled test for the description. Seer Interactive replaced the description on 21 of its own pages (with a single period on 11, with a boilerplate sentence on 10). It kept 10 more pages as controls and, by Seer's account, measured AI bot requests and citations for six weeks. The true effect on AI crawling came out at minus 1.3%, with a 95% interval from minus 5.9% to plus 3.3%, which is a statistical zero, and citations showed neither a drop nor a lift from the experiment. The charts show only ChatGPT-User, the way citations were measured is not described, and the effect was estimated with a Bayesian counterfactual model. It is one agency's case study on one site, not peer-reviewed research; Seer did not measure the title, and the case study does not discuss its limits.
A preprint by Zhang Kai, He Xinyue and Yao Jingang (28 April 2026) analyses 21,143 citations in ChatGPT, Google AI Overview and Perplexity. It has no results on meta description, title tag, Open Graph or canonical. In §9.3 the authors advise aligning metadata and titles with likely query intent, but they did not test that, and "title-question match" in §5.3 is only named among candidate variables.
Write the description as an accurate summary of the page: Google advises making descriptions genuinely descriptive and specific to each page. The 120 to 165 character window in the alexturik.com code (src/lib/snippet-limits.ts, commit 9636cb1) is my working rule, not a Google requirement: I found no such number in the documentation.
Google builds the title link in its results automatically from several sources: the <title> element, headings such as h1, the og:title tag and other text on the page (title links documentation, updated 10 December 2025). If Google decides the title does not reflect the page content, it may show different text. To make the main title obvious, the documentation advises putting its text in the first visible heading on the page (h1).
What are Open Graph tags for?
The Open Graph protocol lets any web page become a rich object in a social graph. Its tags (also called og tags) set the object's title and image, as well as its address. Under the specification at ogp.me, four properties are required: og:title, og:type, og:image and og:url, while og:description is optional.
Open Graph tags are read by the crawlers of social networks and messengers. If the tags are missing, Meta's crawler, per its documentation, guesses the title, description and image with its own heuristics. Slack looks for OpenGraph and X Card (formerly Twitter Card) markup, as described in its documentation. The AI documentation does not mention Open Graph, and in my test og:image reached the text nowhere, so set it for social cards, not for citations. Values of og:title and og:description mostly duplicate the title and description, so there is too little separate data on them. For og:image, Meta recommends at least 1200 by 630 pixels and names 600 by 315 as the minimum for a large card (Meta's image requirements).
What is documented about canonical, robots and hreflang?
Google calls rel="canonical" a strong signal and advises absolute URLs over relative ones (canonicalization and duplicates, updated 10 July 2026). On alexturik.com, canonical and og:url both come from one url variable in doMetadata (src/lib/seo.tsx, commit 9636cb1).
Of all the head tags, the AI documentation names only robots directives. Google names the nosnippet, max-snippet and noindex directives, plus the data-nosnippet attribute (robots meta tag, updated 24 March 2026). Applebot supports nosnippet, while Amazonbot does not mention it (Apple and Amazon pages). OpenAI and Perplexity describe control through robots.txt.
A robots meta tag works only if the crawler can fetch the page: Google says that if robots.txt blocks a page, its systems will not find the indexing and serving rules. I covered the usual noindex mistakes in the post on how noindex quietly hides pages from AI, and the bot tokens are collected in the AI crawler list.
For hreflang, Google requires each language version to list itself and all the others. If two pages do not point to each other, the tags are ignored (localized versions, updated 21 September 2026). This site derives hreflang from the pair of an English original and its Ukrainian version (postLanguageAlternates in src/lib/posts.ts, commit 9636cb1).
How do I check a page's meta tags?
The check has two parts: what the server sends, and what the browser sees after running JavaScript. The difference matters: according to Vercel's analysis of 17 December 2024, the crawlers of OpenAI, Anthropic and Perplexity did not execute JavaScript, while Gemini used Googlebot's rendering. That applies to Google's crawling: per the Writesonic study (March 2026), when Gemini reads a URL in conversation it gets the same raw HTML without JavaScript as ChatGPT and Claude. The JavaScript trap covers that gap in full. The steps:
- Open the page, press
Ctrl+U(Cmd+Option+Uon macOS) and find canonical, description andog:titlein the source. This is the raw HTML the server sent. - Fetch the same HTML from a terminal, without a browser. The command below prints the title, meta and link tags, and the second grep keeps the ones you need.
curl -sL https://example.com/page \
| tr '\n' ' ' \
| grep -oiE '<title[^>]*>[^<]*|<(meta|link)[^>]*>' \
| grep -iE 'title|description|canonical|robots|og:|twitter:|hreflang'- Run the snippet below in the DevTools console. It reads the rendered page, so a difference from step 2 usually means tags added by JavaScript.
const read = (selector, attr = "content") =>
document.querySelector(selector)?.getAttribute(attr) ?? null;
console.table({
title: document.title,
description: read('meta[name="description"]'),
canonical: read('link[rel="canonical"]', "href"),
robots: read('meta[name="robots"]'),
"og:title": read('meta[property="og:title"]'),
"og:image": read('meta[property="og:image"]'),
"twitter:card": read('meta[name="twitter:card"]'),
});- In Search Console, open URL Inspection: Google says it shows the HTML Googlebot received while crawling.
- For a quick overview there is my AEO Checker extension. It checks six values (title, description,
og:title,og:image, canonical andlang) and, separately,noindex,nofollowandnonein the robots meta tag. It reads the rendered page in the open tab, not the raw HTML, and it accepts a description of 50 to 160 characters.
If the HTML from curl and the rendered page in DevTools show different values, JavaScript is usually adding the tag (a User-Agent-dependent response, cookies or a bot challenge can also cause a difference), so some bots won't see it. The fix is simple: send the tags in the HTML from the server instead of adding them with a script after load.
Does Next.js put my tags in the head?
Not always. The Next.js documentation on streaming metadata says Next.js can send the initial UI without waiting for generateMetadata to finish, and then append the resulting tags to <body>. When metadata is resolved at request time, only "HTML-limited bots", detected by User-Agent, get it blocking the render and in <head>; a page whose metadata is prerendered carries the tags in its initial HTML for every bot. In Next.js 16.3.0 the default list includes Bingbot, Applebot, facebookexternalhit, Twitterbot, LinkedInBot, Slackbot and Google crawlers such as AdsBot-Google, but not GPTBot, ClaudeBot or PerplexityBot. Googlebot is not on it either: the documentation says bots that execute JavaScript, such as Googlebot, read streamed metadata correctly.
The curl in step 2 sends a User-Agent that is not on that list either, so it shows you what those bots get. If the tags arrive after </head>, the documented switch turns streaming metadata off for every User-Agent; the docs warn that this could lead to longer response times:
import type { NextConfig } from "next";
const config: NextConfig = {
htmlLimitedBots: /.*/,
};
export default config;A narrower regex works too, but it replaces the default list rather than adding to it (htmlLimitedBots).
FAQ
Do ChatGPT, Claude and Perplexity read meta tags?
Not reliably. The documentation of OpenAI, Anthropic and Perplexity does not mention meta tags. In my test on 18 October 2026, the title reached the text in three converters of five, the description in one and og:image in none. In Writesonic's vendor test (Perplexity excluded), five assistants of six found the title and none found the description. Repeat anything important in the visible text.
How long should a title and meta description be?
Google sets no length limit for either: per its documentation, results are truncated to fit the device width. A 60-character ceiling for the title and 120 to 165 characters for the description are working rules on alexturik.com, and the build enforces them. The AEO Checker extension accepts a description of 50 to 160 characters.
Do I need og:image if AI cites me?
I found no documentation linking og:image to AI citations. In my test, og:image reached the text in none of five converters (0 of 23 pages), and in Writesonic's vendor test none of six assistants found it. The image is for social cards: Meta recommends at least 1200 by 630 pixels.
How do I limit a page's use in AI answers with a meta tag?
For Google, use nosnippet, max-snippet or noindex: they are named in its documentation on AI features. For Bing Chat, Microsoft described noarchive and nocache. OpenAI, Anthropic and Perplexity document robots.txt and name no meta tags. Keep in mind that noindex also removes the page from regular Google results.
Sources
- Google Search Central: AI features and your website — no special requirements for AI Overviews and AI Mode, and the robots controls that apply
- Google Search Central: optimizing for generative AI features — the second Google page checked for head tags
- Google Search Central: snippets — when the meta description is used, and that its length is not limited
- Google Search Central: control your title links — the sources Google builds a title link from
- Google Search Central: robots meta tag —
nosnippet,max-snippet,noindexanddata-nosnippet - Google Search Central: consolidate duplicate URLs —
rel="canonical"as a strong signal - Google Search Central: localized versions — the hreflang reciprocity rule
- Bing Webmaster Blog: options to control content use in Bing Chat —
noarchiveandnocache, 22 September 2023 - OpenAI: crawlers, Anthropic: crawler, Perplexity: crawlers — bots and robots.txt, no head tags
- Apple: Applebot, Amazon: Amazonbot — supported robots directives and use of crawled data for AI training
- Seer Interactive: do meta descriptions influence AI visibility? — the one controlled description test I found
- Zhang, He, Yao: citation preprint — 21,143 AI citations, no results on head tags
- Writesonic: what LLMs see on your website — a vendor test of six assistants, March 2026
- Vercel: the rise of the AI crawler — which AI crawlers executed JavaScript, December 2024
- The Open Graph protocol — required and optional
og:*properties - Meta for Developers: sharing for webmasters and image requirements — how Meta's crawler reads Open Graph, and image sizes
- Slack: unfurling links in messages — OpenGraph and X Card markup in link previews
- MDN: the meta element — what
<meta>is, and the other metadata elements - Next.js: streaming metadata and
htmlLimitedBots— when tags land in<body>instead of<head>
Part of the Answer Engine Optimization (AEO) cluster: the full reading order in dependency sequence, plus a glossary of every term used across these articles.
What does your page actually send in its head?
Follow me on LinkedIn for more practical AEO breakdowns. If you need a technical audit of a corporate site or a Next.js architecture review, email me about a consulting engagement.