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 treats links in dropdown menus like any other internal links as long as they are present in the HTML when the page is loaded. Make sure these links do not depend on a JavaScript request to appear.
14:20
🎥 Source video

Extracted from a Google Search Central video

⏱ 1h13 💬 EN 📅 26/06/2017 ✂ 26 statements
Watch on YouTube (14:20) →
✂ Other statements from this video 25 ▾
  1. 4:51 Why doesn't Google guarantee an increase in featured snippets?
  2. 5:48 How does Googlebot actually calculate your crawl budget?
  3. 8:04 Does Google really handle duplicate content when HTTP and HTTPS don't redirect?
  4. 8:45 Is JavaScript really blowing your crawl budget?
  5. 10:26 Does Google really use your meta descriptions in search snippets?
  6. 12:10 Why do rel='next' and rel='prev' tags fail on noindex pages?
  7. 12:16 Can you really combine rel=next/prev and noindex without sacrificing your crawl budget?
  8. 13:54 Does Google really merge HTTP and HTTPS into a single canonical URL?
  9. 14:20 Are links in dropdown menus really crawled by Google?
  10. 15:06 Are site-wide links really safe for your SEO?
  11. 15:11 Do site-wide links really penalize your SEO?
  12. 16:06 Is it really necessary to optimize your meta descriptions if Google rewrites them?
  13. 16:16 Relative or absolute internal links: Do they really affect SEO?
  14. 16:34 Do relative links hurt SEO compared to absolute links?
  15. 17:31 Do low-quality featured snippets expose a flaw in Google's algorithms?
  16. 20:00 Does rel=next/prev still work with noindex pages?
  17. 24:11 Will featured snippets really expand beyond just definitions?
  18. 28:12 Does Google manually correct search results based on internal reports?
  19. 28:16 Are rich cards truly deployed equally across all countries?
  20. 30:40 Does Google really index the content of your iframes?
  21. 35:15 Is your crawl budget leaking due to unnecessary URLs?
  22. 38:04 Should you really create a separate URL for each product filter in e-commerce?
  23. 48:11 What happens if your robots.txt file is blocked or inaccessible?
  24. 48:27 Does Google really index JavaScript, or should you be cautious about it?
  25. 52:57 Does Google really index JavaScript just like any HTML page?
📅
Official statement from (9 years ago)
TL;DR

Google claims that links in dropdown menus are treated just like other internal links, with one condition: they must be present in the initial HTML without relying on JavaScript to display. Specifically, a menu that loads its links via an AJAX request after the page loads does not pass any PageRank. The implication is straightforward: your menus must be crawlable right from the raw HTML rendering, before any JS execution.

What you need to understand

Why Does Google Emphasize Presence in the Initial HTML?

Google's crawler first analyzes the raw HTML returned by your server. If your menu links rely on a JavaScript request to appear, Googlebot must wait for a second processing phase: the JS rendering. This step consumes significantly more server resources and time.

In practice, Google prioritizes links directly accessible in the initial DOM. A menu built entirely in client-side JS may have its links ignored or processed with delay, especially on high-volume sites.

What Does It Mean for a Link to Be “Present in the HTML on Load”?

A link is considered present in the HTML if you can see it in the raw source code (Ctrl+U in Chrome). It doesn't matter if it is visually hidden by CSS, as long as the <a href="..."> tag exists in the DOM before any JavaScript execution.

Classic dropdown menus built with display: none or visibility: hidden are fine. The trap is when the menu loads its subcategories via fetch() or XMLHttpRequest only on click or hover.

What’s the Difference Between Pure HTML Menus and JS Menus?

A pure HTML menu displays all its links in the initial source code, even if they are CSS-hidden. Google sees them immediately, crawls them, and passes PageRank according to your internal linking structure.

A dynamic JS menu generates its links after the page loads, often in response to user interaction. If Googlebot doesn't trigger this interaction or if the JS rendering fails, those links simply do not exist for the search engine.

  • Crawlable Initial HTML: links treated like any internal link, PageRank passed normally
  • JavaScript Required for Display: risk of crawl exclusion, delayed discovery, loss of PageRank
  • CSS Hidden but HTML Present: no problem, Google reads the HTML before the CSS
  • AJAX or fetch() on Click: links invisible in raw HTML, often ignored by Googlebot
  • Costly JS Rendering: even if Google executes JS, it prioritizes resources based on the available crawl budget

SEO Expert opinion

Does This Statement Align with Field Observations?

Yes, completely. Crawl tests show that links present in the initial DOM are prioritized for discovery. Server logs confirm that Googlebot crawls these URLs much faster than those generated dynamically in JS.

The catch is that many modern front-end frameworks (React, Vue, Angular) generate all content client-side. If you do not implement server-side rendering (SSR) or static pre-generation, your menus are invisible in the raw HTML. [To Be Verified]: Google claims to constantly improve its JS rendering, but in practice, the delay between HTML crawl and JS rendering can reach several days on lower-priority sites.

What Are the Real Limitations of This Recommendation?

Mueller's statement remains vague on one point: what happens for sites that entirely rely on JS for navigation? Google claims to crawl JS, but the reality is more nuanced. JS rendering is not automatic; it depends on the crawl budget, the site's priority, and the complexity of the code.

E-commerce sites with thousands of categories loaded dynamically on hover face real risks. If Googlebot does not trigger the hover or if the JS fails, entire parts of the catalog may remain uncrawled. This is not theoretical: we regularly observe massive indexing drops after a poorly managed JS redesign.

Are There Cases Where a JS Menu Can Still Work?

Yes, if you implement a hybrid rendering. Next.js, Nuxt.js, or other frameworks can generate HTML server-side while keeping client-side JS interactivity. In this case, Googlebot receives complete HTML with all menu links, and users enjoy a dynamic experience.

The alternative is to use a secondary navigation accessible in the footer or via an HTML sitemap to ensure all critical URLs are crawlable, even if the main menu relies on JS. But this is just a safety net, not an ideal solution for internal linking.

Practical impact and recommendations

How Can You Check If Your Dropdown Menus Are Crawlable?

First step: test your menu with JavaScript disabled. In Chrome, open DevTools > Settings > Debugger > Disable JavaScript, then reload your page. If your menu links disappear, Google cannot see them in the initial HTML.

Second check: inspect the raw source code (Ctrl+U or Cmd+Option+U). Look for your navigation URLs. If they do not appear in this source code, they rely on JS and might not be crawled effectively. Also use the URL Inspection Tool from Search Console to see what Googlebot actually renders.

What Mistakes Should Definitely Be Avoided with Dropdown Menus?

The classic mistake is building all navigation through React or Vue without SSR. The initial HTML contains a simple <div id="app"></div>, and the whole menu generates client-side. Result: Googlebot sees an empty page during the first crawl.

Another trap: menus that load their subcategories via AJAX on hover. Googlebot does not hover over elements, so those links never load. Even if Google claims to execute some JS events, it does not systematically trigger all user interactions.

What If Your Site Already Completely Relies on JS?

You have three options. First solution: switch to a framework with server-side rendering (Next.js, Nuxt, SvelteKit). This is the sustainable solution but also the most costly in development.

Second option: implement static pre-rendering with tools like Prerender.io or Rendertron. These services generate HTML versions of your pages for crawlers while serving the JS version to users. Third option: ensure an alternative internal linking via footer, HTML sitemap, or category pages accessible without JS. This is an acceptable compromise if your main menu remains dynamic but critical URLs stay accessible in other ways.

  • Test the menu with JavaScript disabled in the browser
  • Check for the presence of links in the raw source code (Ctrl+U)
  • Use Google's URL Inspection Tool from Search Console
  • Avoid menus that load their links via fetch() or AJAX on click/hover
  • Favor frameworks with server-side rendering (SSR) if you use React/Vue/Angular
  • Create a backup internal linking (footer, HTML sitemap) if the main menu relies on JS
Dropdown menus must be present in the initial HTML to ensure optimal crawling. If your architecture relies on complex JavaScript, these optimizations may require a significant technical overhaul. Consulting a specialized SEO agency can help you identify risks specific to your site and develop a rendering strategy suited to your technical and business constraints.

❓ Frequently Asked Questions

Un menu masqué en CSS display:none est-il crawlé par Google ?
Oui, tant que les liens existent dans le HTML initial. Google lit le HTML avant d'appliquer le CSS, donc un lien masqué visuellement reste crawlable et transmet du PageRank.
Les menus mega-menu avec des centaines de liens posent-ils problème ?
Pas directement, mais un excès de liens internes sur chaque page dilue le PageRank transmis à chacun. Privilégiez une hiérarchie claire et limitez les liens de menu aux catégories principales.
Googlebot déclenche-t-il les événements hover ou click sur les menus ?
Non, pas de manière fiable. Googlebot peut exécuter du JS mais ne simule pas systématiquement les interactions utilisateur comme le survol ou le clic. Ne comptez pas là-dessus pour charger vos liens.
Un sitemap XML compense-t-il un menu non crawlable ?
Le sitemap aide à la découverte des URLs, mais il ne remplace pas le maillage interne pour la transmission de PageRank. Un menu non crawlable affaiblit toute votre structure de liens internes.
Faut-il abandonner React/Vue pour le SEO ?
Non, mais il faut impérativement utiliser un rendu serveur (SSR) ou une pré-génération statique. Les frameworks modernes comme Next.js ou Nuxt.js résolvent ce problème sans sacrifier l'expérience utilisateur.
🏷 Related Topics
Domain Age & History AI & SEO JavaScript & Technical SEO Links & Backlinks Pagination & Structure Local Search

🎥 From the same video 25

Other SEO insights extracted from this same Google Search Central video · duration 1h13 · published on 26/06/2017

🎥 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.