LLM user-agent rendering capabilities analysis
January 2026
Powered by RESONEOAnalyse des capacités de rendu des agents utilisateur LLM
Janvier 2026
Powered by RESONEOThis study analyzes the real-world rendering capabilities of AI chatbot crawlers when users ask them to fetch and analyze web content. We deployed a test page with 15 distinct content injection methods, from static HTML to Shadow DOM, iframes, delayed JavaScript, and fetch() API calls, each containing a unique sentinel string.
By asking each AI assistant to visit our test page and report the sentinels they found, we determined exactly what content each crawler can (and cannot) see. All requests were logged with full headers, timing data, and behavioral patterns.
🧪 Try it yourself: Access the test page
Cette étude analyse les capacités de rendu réelles des crawlers des chatbots IA lorsque les utilisateurs leur demandent de récupérer et d'analyser du contenu web. Nous avons déployé une page de test avec 15 méthodes d'injection de contenu distinctes, du HTML statique au Shadow DOM, iframes, JavaScript différé et appels fetch(), chacune contenant une chaîne sentinelle unique.
En demandant à chaque assistant IA de visiter notre page de test et de rapporter les sentinelles trouvées, nous avons déterminé exactement quel contenu chaque crawler peut (ou ne peut pas) voir. Toutes les requêtes ont été loguées avec les headers complets, les données de timing et les patterns comportementaux.
🧪 Essayez vous-même : Accéder à la page de test
Not all AI assistants see your website the same way. Here's what you need to know:
Microsoft's AI assistant
xAI and DeepSeek crawlers
OpenAI, Anthropic, Google
Perplexity AI
Google Search AI Overview
Tous les assistants IA ne voient pas votre site web de la même manière. Voici ce qu'il faut savoir :
L'assistant IA de Microsoft
Crawlers xAI et DeepSeek
OpenAI, Anthropic, Google
Perplexity AI
AI Overview de Google Search
| Agent | User-Agent | Headers | JS | fetch() | Shadow open | Shadow closed | iframe | template | noscript | Max delay |
|---|---|---|---|---|---|---|---|---|---|---|
| Bing Copilot | Stealth Chrome | ✓ | ✓ | ✗ | ✓ | ✗ | ✓ | ✓ | ✗ | ~53ms |
| Grok (xAI) | Stealth multi-IP | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✓ | ~2s |
| DeepSeek | Stealth Firefox zh-CN | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✓ | ✗ | ~1s |
| ChatGPT | ChatGPT-User | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | n/a |
| Claude | Claude-User | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | n/a |
| Gemini | "Google" | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | n/a |
| Perplexity | Perplexity-User | ✗ Empty | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | n/a |
| AI Mode | None (no fetch) | n/a | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | n/a |
Key insight: Bing Copilot is the ONLY agent capable of reading Shadow DOM (open mode) and iframe content. However, its extremely short timeout (~53ms) means it misses any delayed content.
Key insight: Grok parses the rendered DOM (not HTML source), which explains why it sees noscript but not template content. Waits up to 2s for delayed JS.
Key insight: DeepSeek parses HTML source after partial JS execution, which explains why it sees template (raw HTML) but not noscript (JS enabled). Shorter timeout than Grok (~1s).
Key insight: ChatGPT is transparent about its capabilities and limitations. It parses raw HTML source without any JS execution.
Key insight: Claude behaves identically to ChatGPT: honest identification, raw HTML parsing, no JS. More conservative compression headers (no brotli/zstd).
Key insight: Gemini initially hallucinated content based on URL inference. Only fetched the actual page when explicitly prompted to "fetch the content". Results identical to ChatGPT/Claude once it actually crawls.
Recommendation: To make your content accessible to Perplexity, disable gzip/brotli/zstd compression for requests with "Perplexity" in the User-Agent, or for requests with empty Accept-Encoding headers. See the integration recommendations section for server configuration examples.
Key insight: Google AI Mode (AI Overviews) CANNOT fetch URLs at all. It only works with content already indexed by Google Search. For non-indexed pages, it either refuses to answer or hallucinates based on URL patterns. The ONLY solution is to get your page indexed by Google.
| Agent | User-Agent | Headers | JS | fetch() | Shadow open | Shadow closed | iframe | template | noscript | Délai max |
|---|---|---|---|---|---|---|---|---|---|---|
| Bing Copilot | Stealth Chrome | ✓ | ✓ | ✗ | ✓ | ✗ | ✓ | ✓ | ✗ | ~53ms |
| Grok (xAI) | Stealth multi-IP | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✓ | ~2s |
| DeepSeek | Stealth Firefox zh-CN | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✓ | ✗ | ~1s |
| ChatGPT | ChatGPT-User | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | n/a |
| Claude | Claude-User | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | n/a |
| Gemini | "Google" | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | n/a |
| Perplexity | Perplexity-User | ✗ Vides | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | n/a |
| AI Mode | Aucun (pas de fetch) | n/a | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | n/a |
Point clé : Bing Copilot est le SEUL agent capable de lire le Shadow DOM (mode open) et le contenu des iframes. Cependant, son timeout extrêmement court (~53ms) fait qu'il rate tout contenu différé.
Point clé : Grok parse le DOM rendu (pas le code source HTML), ce qui explique pourquoi il voit noscript mais pas le contenu template. Attend jusqu'à 2s pour le JS différé.
Point clé : DeepSeek parse le code source HTML après exécution JS partielle, ce qui explique pourquoi il voit template (HTML brut) mais pas noscript (JS activé). Timeout plus court que Grok (~1s).
Point clé : ChatGPT est transparent sur ses capacités et limitations. Il parse le code source HTML brut sans aucune exécution JS.
Point clé : Claude se comporte de manière identique à ChatGPT : identification honnête, parsing HTML brut, pas de JS. Headers de compression plus conservateurs (pas de brotli/zstd).
Point clé : Gemini a d'abord halluciné du contenu basé sur l'inférence de l'URL. Il n'a récupéré la page qu'après un prompt explicite "fetch the content". Résultats identiques à ChatGPT/Claude une fois qu'il crawle vraiment.
Recommandation : Pour rendre votre contenu accessible à Perplexity, désactivez la compression gzip/brotli/zstd pour les requêtes avec "Perplexity" dans le User-Agent, ou pour les requêtes avec des headers Accept-Encoding vides. Voir la section recommandations d'intégration pour des exemples de configuration serveur.
Point clé : Google AI Mode (AI Overviews) NE PEUT PAS fetch d'URLs du tout. Il fonctionne uniquement avec le contenu déjà indexé par Google Search. Pour les pages non indexées, il refuse de répondre ou hallucine en se basant sur les patterns d'URL. La SEULE solution est de faire indexer votre page par Google.
Practical guidance for making your content visible to AI assistants
Content loaded via JavaScript (React, Vue, AJAX) is invisible to most AI crawlers. Always provide static fallbacks.
| Method | ChatGPT/Claude/Gemini | Grok/DeepSeek | Bing |
|---|---|---|---|
| Static HTML | ✓ | ✓ | ✓ |
| <noscript> | ✓ | ~ | ✗ |
| JS immediate | ✗ | ✓ | ✓ |
| JS delayed >2s | ✗ | ✗ | ✗ |
Popup content, cookie banners, and modal dialogs are typically invisible because they require user interaction or are hidden by default.
| Method | ChatGPT/Claude/Gemini | Grok/DeepSeek | Bing |
|---|---|---|---|
| Inline content | ✓ | ✓ | ✓ |
| display:none modal | ✗ | ✗ | ✗ |
| JS-triggered popup | ✗ | ✗ | ✗ |
Embedded content (videos, maps, forms, widgets) is invisible to almost all AI crawlers. Only Bing Copilot can read iframe content.
| Method | ChatGPT/Claude/Gemini | Grok/DeepSeek | Bing |
|---|---|---|---|
| iframe src | ✗ | ✗ | ✓ |
| iframe srcdoc | ✗ | ✗ | ✓ |
| YouTube embed | ✗ | ✗ | ~ |
| Static description | ✓ | ✓ | ✓ |
Shadow DOM is a universal blind spot. Even Bing can only read "open" mode. Use Shadow DOM for styling isolation, not for hiding important content.
| Method | ChatGPT/Claude/Gemini | Grok/DeepSeek | Bing |
|---|---|---|---|
| Light DOM | ✓ | ✓ | ✓ |
| Shadow (open) | ✗ | ✗ | ✓ |
| Shadow (closed) | ✗ | ✗ | ✗ |
| Slotted content | ✓ | ✓ | ✓ |
JSON-LD in script tags is NOT directly extracted by HTML-only user-mode crawlers (ChatGPT-User, Claude-User, Gemini). However, indexing and training bots (GPTBot, ClaudeBot, OAI-SearchBot, etc.) which are outside the scope of this study may have JS rendering capabilities and could potentially extract JSON-LD content.
| Method | ChatGPT/Claude/Gemini | Grok/DeepSeek | AI Mode |
|---|---|---|---|
| JSON-LD script | ✗ | ✗ | ✓* |
| Visible HTML | ✓ | ✓ | ✓* |
| Microdata | ✓ | ✓ | ✓* |
* Only if page is indexed by Google
Guide pratique pour rendre votre contenu visible aux assistants IA
Le contenu chargé via JavaScript (React, Vue, AJAX) est invisible pour la plupart des crawlers IA. Prévoyez toujours des fallbacks statiques.
| Méthode | ChatGPT/Claude/Gemini | Grok/DeepSeek | Bing |
|---|---|---|---|
| HTML statique | ✓ | ✓ | ✓ |
| <noscript> | ✓ | ~ | ✗ |
| JS immédiat | ✗ | ✓ | ✓ |
| JS différé >2s | ✗ | ✗ | ✗ |
Le contenu des popups, bannières cookies et dialogues modaux est généralement invisible car il nécessite une interaction utilisateur ou est masqué par défaut.
| Méthode | ChatGPT/Claude/Gemini | Grok/DeepSeek | Bing |
|---|---|---|---|
| Contenu inline | ✓ | ✓ | ✓ |
| Modal display:none | ✗ | ✗ | ✗ |
| Popup déclenché JS | ✗ | ✗ | ✗ |
Le contenu embarqué (vidéos, cartes, formulaires, widgets) est invisible pour presque tous les crawlers IA. Seul Bing Copilot peut lire le contenu des iframes.
| Méthode | ChatGPT/Claude/Gemini | Grok/DeepSeek | Bing |
|---|---|---|---|
| iframe src | ✗ | ✗ | ✓ |
| iframe srcdoc | ✗ | ✗ | ✓ |
| Embed YouTube | ✗ | ✗ | ~ |
| Description statique | ✓ | ✓ | ✓ |
Le Shadow DOM est un angle mort universel. Même Bing ne peut lire que le mode "open". Utilisez le Shadow DOM pour l'isolation des styles, pas pour masquer du contenu important.
| Méthode | ChatGPT/Claude/Gemini | Grok/DeepSeek | Bing |
|---|---|---|---|
| Light DOM | ✓ | ✓ | ✓ |
| Shadow (open) | ✗ | ✗ | ✓ |
| Shadow (closed) | ✗ | ✗ | ✗ |
| Contenu slotté | ✓ | ✓ | ✓ |
Le JSON-LD dans les balises script n'est PAS directement extrait par les crawlers user-mode HTML uniquement (ChatGPT-User, Claude-User, Gemini). Cependant, les bots d'indexation et d'entraînement (GPTBot, ClaudeBot, OAI-SearchBot, etc.) qui sont hors du périmètre de cette étude peuvent avoir des capacités de rendu JS et pourraient potentiellement extraire le contenu JSON-LD.
| Méthode | ChatGPT/Claude/Gemini | Grok/DeepSeek | AI Mode |
|---|---|---|---|
| Script JSON-LD | ✗ | ✗ | ✓* |
| HTML visible | ✓ | ✓ | ✓* |
| Microdata | ✓ | ✓ | ✓* |
* Uniquement si la page est indexée par Google