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

Most of the time, the part located after the hash symbol (#) in a URL is ignored by search engines during crawling and indexing. Only the part before the hash is used for indexing.
🎥 Source video

Extracted from a Google Search Central video

💬 EN 📅 26/10/2022 ✂ 3 statements
Watch on YouTube →
Other statements from this video 2
  1. Les fragments d'URL avec hash (#) créent-ils des pages distinctes pour Google ?
  2. Le JavaScript peut-il modifier la façon dont Google traite les fragments d'URL avec hash ?
📅
Official statement from (3 years ago)
TL;DR

Google systematically ignores the part after the # in URLs during crawling and indexing. Only the segment before the hash counts for SEO. This rule directly impacts the architecture of JavaScript sites and SPAs.

What you need to understand

Why does Google ignore content after the hash?

The # symbol (hash or fragment identifier) was originally designed to point to a specific section of a web page, not to identify a unique resource. Historically, anything after the # is never sent to the server — it's handled client-side by the browser.

Google respects this HTTP convention. When Googlebot crawls example.com/page#section1 and example.com/page#section2, it considers them the same URL: example.com/page. The fragment is purely decorative for the search engine.

Does this rule apply without exception?

Mueller says "most of the time," which leaves room for interpretation. In practice, Google introduced temporary exceptions in the past — notably the #! (hashbang) scheme to handle JavaScript applications before client-side rendering became widespread.

But this method has been obsolete for years. Today, with dynamic rendering and improved JavaScript crawling, Google no longer needs these workarounds. The hash has become what it should be: an invisible marker for SEO.

What types of sites are affected?

Single Page Applications (SPAs) using frameworks like React, Vue, or Angular are the most impacted. Many of these architectures use hash-based URLs to simulate multi-page navigation without page reloads.

If your site displays mysite.com/#products or mysite.com/#contact, Google will only index one page: mysite.com/. All content "routed" after the # is invisible.

  • Hash-based URLs don't create distinct pages in Google's eyes
  • Dynamic content loaded via hash routing isn't separately indexable
  • Internal anchors (#section) pose no problem — they're not meant to be crawled
  • SPAs must use the History API (pushState) for clean URLs

SEO Expert opinion

Is this statement consistent with real-world observations?

Yes, this is one of the rare points where Google is perfectly clear and consistent over the years. All tests show that the hash is systematically truncated during indexing.

The nuance — and this is where Mueller remains vague — concerns JavaScript rendering. If your SPA loads different content depending on the fragment, Google sees this content technically during rendering... but it still associates it with the URL without the hash. Result: multiple distinct "pages" from a user perspective can end up merged in the index under a single URL.

What pitfalls should you anticipate with SPAs?

The real problem isn't so much that Google ignores the hash — it's that many developers do too. I've seen entire sites built with hash routing, convinced they had 50 indexable pages when they actually had one.

[To verify]: Google claims to render "most" JavaScript, but reality is more nuanced. Rendering has time limits, crawl budget constraints, and complexity boundaries. If your content depends on multiple interactions after initial load, there's no guarantee it will be indexed — hash or not.

Warning: Don't rely solely on the URL inspection tool to validate your rendering. Test with third-party tools and monitor your server logs to see which URLs Googlebot actually crawls.

Do internal anchors pose a problem?

No, and it's important to clarify this. Using #section-contact to create an anchor to a part of your page is perfectly legitimate and doesn't impact SEO. Google won't penalize this.

The problem only arises when you use the hash to simulate a multi-page architecture instead of properly structuring with distinct URLs. It's a question of intention and usage.

Practical impact and recommendations

What should you do if your site uses hash-based URLs?

If you have an SPA with hash routing (mysite.com/#/products), the solution is to migrate to the History API for clean URLs (mysite.com/products). This is technically feasible with all modern frameworks.

This migration requires properly configuring your server to always serve the main application, regardless of the requested URL. Without this, a refresh on /products will return a 404. This is an operation that affects both the front-end and infrastructure.

How do you verify that Google indexes your pages?

Use Google Search Console to inspect each URL you believe should be indexable. Check the "Coverage" tab to identify ignored or consolidated URLs.

Compare the number of pages in your XML sitemap with the number of pages actually indexed. If you have a significant gap and your site is an SPA, hash routing is probably the cause.

  • Audit the current architecture: identify all URLs using hashes
  • Migrate to the History API (pushState/replaceState) for clean URLs
  • Configure the server to handle routing server-side (SSR or fallback to index.html)
  • Update the XML sitemap with new URLs without hashes
  • Verify rendering with the GSC URL inspection tool
  • Monitor crawl logs to confirm Googlebot accesses the correct URLs
  • Implement canonical tags if necessary to avoid duplication
Migrating from hash-based architecture to clean URLs isn't trivial — it affects code, server configuration, and monitoring. If you don't have internal resources to pilot this project without issues, partnering with an SEO-specialized agency can prevent costly mistakes and guarantee a smooth transition without traffic loss.

❓ Frequently Asked Questions

Les ancres internes (#section) nuisent-elles au SEO ?
Non. Les ancres internes sont parfaitement légitimes et n'impactent pas négativement le référencement. Elles servent à améliorer l'expérience utilisateur en permettant de naviguer rapidement vers une section spécifique de la page.
Le schéma hashbang (#!) est-il encore supporté par Google ?
Non, Google a abandonné le support du hashbang. Cette technique était une solution temporaire pour les SPAs avant que le rendering JavaScript ne soit généralisé. Elle est obsolète et ne doit plus être utilisée.
Si Google rend ma SPA, voit-il le contenu chargé dynamiquement après le hash ?
Google peut voir le contenu rendu, mais il l'associera toujours à l'URL sans le hash. Cela signifie que plusieurs "pages" distinctes côté utilisateur peuvent être fusionnées sous une seule URL dans l'index.
Comment migrer d'un hash routing vers des URLs propres sans perdre de trafic ?
Utilisez le History API (pushState) pour des URLs propres, configurez le serveur pour gérer le routing, soumettez un nouveau sitemap, et surveillez l'indexation via la Search Console. Une migration bien planifiée évite les pertes de trafic.
Les paramètres après le hash sont-ils transmis à Google Analytics ?
Oui, Google Analytics peut tracker les fragments d'URL si configuré pour le faire. Mais cela n'a aucun impact sur l'indexation — Google Search ignore toujours la partie après le hash.
🏷 Related Topics
Content Crawl & Indexing Domain Name

🎥 From the same video 2

Other SEO insights extracted from this same Google Search Central video · published on 26/10/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.