What does Google say about SEO? /
Quick SEO Quiz

Test your SEO knowledge in 5 questions

Less than a minute. Find out how much you really know about Google search.

🕒 ~1 min 🎯 5 questions

Official statement

Google Search does not click on buttons on web pages. A non-functional 'Add to Cart' button in SSR is therefore not an issue for organic search.
15:50
🎥 Source video

Extracted from a Google Search Central video

⏱ 30:57 💬 EN 📅 11/11/2020 ✂ 26 statements
Watch on YouTube (15:50) →
Other statements from this video 25
  1. 1:36 How can you effectively test JavaScript rendering before taking your site live?
  2. 1:36 Why has testing JavaScript rendering before launch become essential for Google indexing?
  3. 1:38 Why does a website redesign cause rank drops even without content changes?
  4. 1:38 Does migrating to JavaScript really affect SEO rankings?
  5. 3:40 Hreflang: Why does Google still stress this tag for multilingual content?
  6. 3:40 Does Googlebot really see every localized version of your pages?
  7. 3:40 Does hreflang really group your multilingual content in Google's eyes?
  8. 4:11 How can you make your hyper-local content URLs discoverable without sacrificing traffic?
  9. 4:11 How can you structure your URLs to enhance the discoverability of hyper-local content?
  10. 5:14 Can user personalization trigger a penalty for cloaking?
  11. 5:14 Could personalizing content for your users lead to a cloaking penalty?
  12. 6:15 Are Core Web Vitals really measured on users or bots?
  13. 6:15 Are Core Web Vitals really measured from Google bots or from your actual users?
  14. 7:18 Why isn’t schema markup enough to ensure rich snippets appear?
  15. 7:18 Why don't rich snippets show up even with valid Schema.org markup?
  16. 9:14 Is dynamic rendering really dead for SEO?
  17. 9:29 Should we ditch dynamic rendering for SSR with hydration?
  18. 11:40 How does the JavaScript main thread block interactivity on your pages according to Google?
  19. 11:40 How does the JavaScript main thread affect the indexing of your pages?
  20. 12:33 Can Google really overlook your critical tags in the battle between initial and rendered HTML?
  21. 13:12 What happens when your initial HTML differs from the HTML rendered by JavaScript?
  22. 15:50 Is it true that Googlebot doesn't click on buttons on your site?
  23. 26:58 Should you prioritize JavaScript performance for your real users over optimization for Googlebot?
  24. 28:20 Are web workers truly compatible with Google's JavaScript rendering?
  25. 28:20 Should you really be wary of Web Workers for SEO?
📅
Official statement from (5 years ago)
TL;DR

Google Search does not trigger any onClick events or simulate user interactions during crawling. Buttons like 'Add to Cart', 'Load More', or other client-side click-required elements do not directly impact SEO, as long as essential content is available server-side. This clarification redefines the boundary between technical crawling and post-indexing user experience.

What you need to understand

What does ‘Google doesn’t click’ actually mean?

Googlebot loads HTML, executes JavaScript for rendering, but does not trigger any user actions. No clicking on buttons, no hovering, no automatic infinite scrolling. The bot reads what is displayed after the initial JS execution, and that’s it.

This distinction is crucial to understand why a ‘See More’ button that loads content via AJAX will never be a problem for SEO — because that additional content is not intended to be indexed via that entry point. If your architecture relies on such interaction to reveal URLs or critical text, you have a structural problem, not a technical bug.

Why is this statement emerging now?

Because modern web heavily relies on client-side JavaScript frameworks (React, Vue, Angular) where part of navigation and interactivity depends on user events. Developers often wonder if Googlebot “sees” what is behind a button.

Martin Splitt's answer is clear: no. If content only appears after a click or another client-side interaction, Googlebot will never see it. This validates the SSR (Server-Side Rendering) or SSG (Static Site Generation) approach for any content intended to be indexed.

What are the implications for crawling and indexing?

Critical content — descriptive text, titles, internal links — must be present in the initial DOM or generated by JS at page load, without user intervention. E-commerce buttons like ‘Add to Cart’ or ‘Compare’ are purely functional: they have no role in content discovery.

On the other hand, a ‘Load the Next 50 Products’ button that injects new product listings into the DOM poses a real issue if those products do not have dedicated URLs. Google will never see them. The solution? Classic pagination with distinct URLs or lazy-load with SSR fallback.

  • Googlebot executes JavaScript but simulates no user actions (click, scroll, hover).
  • Content revealed by client-side interaction remains invisible for crawling.
  • Functional e-commerce buttons (cart, wishlist, UI filters) have no direct SEO impact.
  • Pure CSR architecture: risk of invisibility if content relies on onClick events.
  • SSR/SSG recommended for any content intended for indexing.

SEO Expert opinion

Is this statement consistent with what is observed on the ground?

Yes, and it's even a long-awaited confirmation. Tests in Search Console and using tools like OnCrawl or Screaming Frog clearly show that Googlebot does not trigger complex JavaScript events. It renders the page, reads the resulting DOM, and moves on.

Sites that relied on ‘load more’ interfaces without real pagination have always faced indexing issues. This statement changes nothing about the ground reality — it officially documents it. That said, the nuance lies in “does not click on buttons”: some developers might interpret that as “Google does not execute JS”, which would be incorrect.

What are the gray areas that this statement does not cover?

Martin Splitt does not specify if Googlebot simulates scrolling to trigger standard lazy-loads (like Intersection Observer). In practice, we know that native HTML lazy-load (loading="lazy") is well managed, but what about custom JS implementations? [To be verified] based on configurations.

Another point: Single Page Applications (SPA) with client-side routing. If navigation between pages happens via pushState without reloading, does Google correctly follow internal links? Yes, as long as the <a href> tags are present in the DOM. But if navigation relies solely on buttons with onClick, it’s dead.

In what cases could this rule lead to confusion?

A developer might conclude they can completely disregard button accessibility on the grounds that “Google doesn’t care”. Wrong. An inaccessible button (no semantics, no keyboard fallback) impacts UX, thus behavioral signals, and indirectly ranking.

Moreover, saying “e-commerce buttons don’t matter” does not mean that the content around the button is unimportant. If your product listing only displays price after clicking “See Price”, Google will not see it — and that’s a problem for rich snippets and semantic indexing.

Attention: Do not confuse “Google does not click” with “Google does not execute JS”. JavaScript rendering is active, but no user events are simulated. Your content must be present after the first paint, not after an interaction.

Practical impact and recommendations

What should you audit first on your site?

Start by identifying all the content revelation mechanisms: ‘See More’ buttons, accordions, tabs, modals. If indexable text or critical internal links are hidden behind an onClick, you have a blind spot. Use the URL inspection tool in Search Console to see exactly what Google renders.

Then, ensure that your product listings, blog posts, and landing pages display all essential content server-side or via JS executed at load — without user intervention. Secondary elements (collapsible customer reviews, technical specs in accordion) can remain lazy if they are not priority content for ranking.

How to adapt your technical architecture?

If you are in pure Client-Side Rendering (CSR), migrate to SSR (Next.js, Nuxt.js) or SSG (Gatsby, Eleventy) for all indexable content. Interactive buttons (cart, filters, UI animations) can remain client-side without issue — they aren’t the ones carrying the content.

For product or article lists, prefer classic pagination with distinct URLs rather than a “Load More” AJAX system. If you want to keep the UX fluid, implement a lazy-load with server-side fallback: links to subsequent pages must exist in the initial HTML.

What mistakes should you absolutely avoid?

Never hide critical content (long descriptions, spec tables, internal link lists) behind a ‘Show More’ button without SSR alternatives. Google will not click, so that content will not exist for indexing. The same goes for tabs: if each tab contains important unique text, either display them all in SSR or create dedicated pages.

Also, avoid confusing user interaction and JavaScript rendering. A React component that shows up on load without a click? No problem. A component that requires hover or manual toggle? Problem. The line is there.

  • Audit all buttons revealing indexable content (‘See More’, accordions, tabs)
  • Check server-side rendering of critical product listings and editorial pages
  • Test Googlebot rendering via Search Console (URL inspection tool)
  • Migrate AJAX paginated lists to classic pagination or SSR
  • Ensure strategic internal links are present in the initial HTML
  • Implement SSR fallback for any custom interaction-based lazy-load
This statement confirms a well-known ground rule: All content intended for Google must be available without user interaction. Functional e-commerce buttons pose no issues, but any architecture that hides text or URLs behind a click is an SEO dead end. Technical auditing of these interaction points, migrating to SSR/SSG, and reworking certain navigation logics can quickly become complex, especially on high-traffic sites or hybrid tech stacks. If your team lacks resources or expertise on these subjects, enlisting a specialized SEO agency in JavaScript SEO can expedite compliance and avoid costly visibility errors.

❓ Frequently Asked Questions

Est-ce que Google peut quand même voir le contenu révélé par un bouton si j'utilise du lazy-load standard ?
Le lazy-load HTML natif (loading="lazy") est géré par Googlebot. En revanche, un lazy-load custom basé sur un clic ou un scroll simulé ne fonctionne pas — le contenu reste invisible.
Les filtres de produits en AJAX sont-ils un problème pour le SEO ?
Si les filtres modifient l'URL (via pushState ou paramètres GET) et que les résultats sont accessibles via ces URLs, pas de souci. Si tout repose sur du JS sans URL distincte, Google ne verra qu'une seule version de la page.
Un bouton « Ajouter au panier » non-fonctionnel côté serveur nuit-il au référencement ?
Non, puisque Google ne clique pas dessus. Ce bouton n'a aucun rôle dans le crawl ou l'indexation — c'est purement fonctionnel pour l'utilisateur.
Comment vérifier que mon contenu est bien visible par Googlebot ?
Utilise l'outil d'inspection d'URL dans la Search Console, section "Afficher la page explorée". Compare le DOM rendu avec ce que tu vois en navigation réelle. Tout écart signale un problème.
Peut-on utiliser des accordéons ou des tabs pour structurer le contenu sans pénalité ?
Oui, si le contenu est présent dans le DOM initial (même masqué en CSS). Google lit tout le HTML rendu. En revanche, si le contenu s'injecte au clic via AJAX, il ne sera pas vu.
🏷 Related Topics
Domain Age & History JavaScript & Technical SEO

🎥 From the same video 25

Other SEO insights extracted from this same Google Search Central video · duration 30 min · published on 11/11/2020

🎥 Watch the full video on YouTube →

Related statements

💬 Comments (0)

Be the first to comment.

2000 characters remaining
🔔

Get real-time analysis of the latest Google SEO declarations

Be the first to know every time a new official Google statement drops — with full expert analysis.

No spam. Unsubscribe in one click.