What does Google say about SEO? /
Quick SEO Quiz

Test your SEO knowledge in 3 questions

Less than 30 seconds. Find out how much you really know about Google search.

🕒 ~30s 🎯 3 questions 📚 SEO Google

Official statement

Websites should use the HTML anchor tag with an href attribute pointing to an accessible URL, rather than buttons or spans with JavaScript event handlers to simulate links.
🎥 Source video

Extracted from a Google Search Central video

💬 EN 📅 03/02/2022 ✂ 13 statements
Watch on YouTube →
Other statements from this video 12
  1. Le keyword stuffing est-il vraiment pénalisé par Google ?
  2. Le texte caché est-il toujours considéré comme du spam par Google ?
  3. Le contenu généré aléatoirement fait-il vraiment partie des pratiques spam selon Google ?
  4. Les backlinks sont-ils devenus inutiles pour le référencement naturel ?
  5. Le HTML valide est-il vraiment nécessaire pour bien se classer dans Google ?
  6. Faut-il vraiment abandonner les images CSS au profit des balises <img> pour le SEO ?
  7. Le noindex est-il vraiment une règle absolue ou Google prend-il des libertés ?
  8. HTTPS est-il vraiment obligatoire pour être indexé par Google ?
  9. Pourquoi Google recommande-t-il d'abandonner les plugins pour afficher du contenu web ?
  10. Pourquoi Google ne déclenche-t-il pas les événements de scroll ou de clic pour crawler votre contenu ?
  11. L'alt text des images reste-t-il vraiment indispensable face à la vision par ordinateur de Google ?
  12. Les directives SEO de Google sont-elles vraiment fiables sur la durée ?
📅
Official statement from (4 years ago)
TL;DR

Google explicitly requests using <a href> tags with accessible URLs rather than buttons or spans with JavaScript to create links. Simulated links in JS prevent Googlebot from discovering and crawling your pages properly. A return to HTML fundamentals that goes beyond mere compliance.

What you need to understand

What differentiates a real link from a simulated one?

A real HTML link uses the <a href="URL"> tag with a directly accessible URL in the href attribute. The browser and Googlebot can immediately identify the destination without executing any code.

A simulated link is a <button>, a <span>, or even a <div> that triggers navigation via JavaScript (onClick, eventListener). The destination URL is hidden in the JS code, not in the raw HTML.

Why does Googlebot struggle with JavaScript links?

Googlebot must first download the HTML, then execute the JavaScript, then identify the URLs hidden in event handlers. This process consumes crawl budget and is not guaranteed 100% of the time.

With an <a href>, the URL is immediately visible in the initial DOM. No need for a rendering phase to discover the page. The link is crawlable on the first pass.

Does this rule really apply to all links?

Martin Splitt talks about structural navigation links — menus, pagination, internal linking. The links that allow Googlebot to discover your content.

For occasional action buttons (modal opening, AJAX submission), the problem is minor. But as soon as it's about making a URL discoverable, the <a> tag remains essential.

  • <a href> tags are crawled instantly without JavaScript rendering
  • Simulated links in JS require an expensive rendering phase and are not guaranteed
  • This constraint directly impacts page discoverability and crawl budget
  • The rule primarily concerns structural navigation (menus, pagination, linking)
  • Google always prioritizes HTML fundamentals over complex JS solutions

SEO Expert opinion

Is this statement consistent with what we observe in the field?

Completely. Crawl audits consistently show that sites with heavy JS-based navigation have lower discovery rates. Google crawls fewer pages and takes longer to index new content.

I've seen sites lose 30-40% of indexed pages after migrating to a poorly implemented SPA architecture with simulated links everywhere. Returning to clean <a href> tags = crawl normalization within weeks.

What nuances should we consider?

Google can discover JS links — but it's less reliable and slower. If your site has 10,000 pages and tight crawl budget, you can't afford this inefficiency.

Another point: accessibility. A button that simulates a link breaks the experience for screen reader users and keyboard navigation. SEO and UX converge here — which should always be a red flag when considering technical shortcuts.

Caution: some modern JS frameworks (Next.js, Nuxt) automatically generate <a href> tags even if you use their navigation components. Always verify the final rendered HTML, not just your source code.

In what cases can this rule be relaxed?

For purely application interactions — member areas, dashboards, dynamic filters without URL changes — you can use buttons without issue. Google doesn't seek to crawl these elements.

But as soon as an action changes the URL or displays new indexable content, return to <a href>. Let's be honest: 90% of navigation use cases fall into this category.

Practical impact and recommendations

What should you audit as a priority on your site?

Start with primary navigation: header, footer, dropdown menus. Open the inspector and verify that every navigation link is a proper <a href="URL"> with a valid complete or relative URL.

Next, look at pagination — product categories, blog archives, listings. "Next Page" buttons must be real links. Same for filters that modify the URL (sorting, product filters).

How do you fix existing simulated links?

If you have <button onClick="navigateTo('/page')">, replace them with <a href="/page">. You can keep your JS for animations or tracking, but the URL must be in the href.

For SPAs, use progressive enhancement: the link works in pure HTML, JS intercepts the click for smooth transitions. Next.js <Link> does exactly that.

  • Audit primary navigation (header, footer, menus) with the HTML inspector
  • Verify that all pagination links use <a href>
  • Replace onClick buttons with links containing href + optional JS interception
  • Test your site with JavaScript disabled to identify broken links
  • Check crawl logs to detect undiscovered pages
  • Use framework components that generate real HTML (Next Link, Nuxt NuxtLink)
  • Validate link accessibility with a screen reader
Using <a href> tags for all navigation links is non-negotiable if you want optimal crawling. Complex sites with multiple templates and frameworks can make compliance technically challenging — especially if you need to refactor shared components or migrate from an SPA to a hybrid architecture. In these situations, engaging an SEO agency specialized in modern framework constraints can accelerate the project and prevent regressions.

❓ Frequently Asked Questions

Est-ce que Googlebot crawle quand même les liens JavaScript ?
Oui, mais avec un délai et sans garantie. Google doit d'abord rendre la page en JS, ce qui consomme du crawl budget et peut échouer. Un lien HTML classique est crawlé immédiatement.
Les frameworks comme React ou Vue sont-ils concernés ?
Absolument. Si ton composant React génère un <button> avec onClick au lieu d'un <a href>, tu es dans le cas problématique. Utilise les composants de routing qui génèrent de vrais liens HTML.
Comment vérifier si mes liens sont bien détectés par Google ?
Désactive JavaScript dans ton navigateur et vérifie que tous les liens fonctionnent. Consulte aussi les logs de crawl dans Search Console pour identifier les pages que Googlebot ne découvre pas.
Peut-on mélanger <a href> et JavaScript pour améliorer l'UX ?
Oui, c'est même recommandé. Le href assure la crawlabilité, le JavaScript peut intercepter le clic pour ajouter des animations ou du tracking. C'est le principe du progressive enhancement.
Les liens en JavaScript dans le footer comptent-ils autant que ceux du menu ?
Oui. Google ne fait pas de distinction de zone. Tout lien servant à la découverte de pages indexables doit être un vrai lien HTML, quelle que soit sa position dans la page.
🏷 Related Topics
AI & SEO JavaScript & Technical SEO Links & Backlinks Domain Name

🎥 From the same video 12

Other SEO insights extracted from this same Google Search Central video · published on 03/02/2022

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