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 advises using clear and accessible URLs for mobile sites and avoiding URL structures that utilize fragments like URL#.
40:08
🎥 Source video

Extracted from a Google Search Central video

⏱ 57:45 💬 EN 📅 25/09/2015 ✂ 10 statements
Watch on YouTube (40:08) →
Other statements from this video 9
  1. 1:04 Le contenu dupliqué pénalise-t-il vraiment votre référencement ?
  2. 3:47 Faut-il vraiment utiliser la balise canonical sur toutes vos variations de pages ?
  3. 4:47 Hreflang : simple déclaration d'intention ou levier critique pour le SEO international ?
  4. 6:57 Le responsive design impacte-t-il vraiment le classement Google ?
  5. 33:13 Faut-il vraiment dupliquer le contenu visible dans les balises alt des images ?
  6. 72:53 Les liens vers les associations professionnelles aident-ils vraiment votre SEO ?
  7. 76:33 Faut-il vraiment modifier ses URLs pour y ajouter des mots-clés ?
  8. 80:02 Pourquoi 1+1 ne fait-il pas 2 lors d'une fusion de sites ?
  9. 80:10 Les erreurs 404 pénalisent-elles vraiment votre référencement ?
📅
Official statement from (10 years ago)
TL;DR

Google states that URLs with fragments (#) pose issues for mobile indexing and recommends clear and accessible URLs. This means that a site relying on #fragments for navigation risks having its content ignored by the mobile Googlebot. The solution lies in maintaining clean canonical URLs; otherwise, your mobile structure could compromise your organic visibility.

What you need to understand

What is a URL fragment and why is it problematic?

A URL fragment is the part after the hash symbol (#) in a web address, such as example.com/page#section2. Historically, browsers have used these fragments to navigate to anchors on the page without triggering a new HTTP request.

The issue? Googlebot traditionally ignores everything after the # because it sees it as a client-side instruction, not a separate resource. If your mobile site loads dynamic content via fragments (a popular technique in single-page applications from 2010 to 2015), Google likely doesn't see that content.

Why is this recommendation specifically for mobile?

With the widespread mobile-first indexing, Google crawls and indexes the mobile version of your site first. If that version relies on fragments to display content, you create a blind spot in the index.

Older JavaScript frameworks (like Angular.js with its # routing, some poorly configured React implementations) have heavily employed this approach. On desktop, these sites could manage with workarounds (escaped fragments, prerendering). In mobile-first indexing, these crutches are no longer sufficient: Google wants clean URLs, period.

What does “clear and accessible URLs” mean in practice?

Google refers to standard canonical URLs: example.com/products/shoes rather than example.com/#/products/shoes. Each indexable resource must have its own HTTP URL, directly accessible via GET, without requiring client-side JavaScript to reveal the content.

This also means that your server must respond with a 200 on these URLs, not a 404 that then redirects via JS. The initial served HTML must contain the main content or at least a sufficient skeleton for Googlebot to understand the page even before executing JavaScript.

  • Avoid fragments (#) for routing distinct content — every indexable page should have its own URL
  • Favor the History API (pushState) for modern single-page applications, which allows clean URLs without reloading
  • Check mobile rendering in Search Console to confirm that Googlebot can see your main content
  • Test your URLs in private browsing with JavaScript disabled: if you see nothing, Google likely sees nothing either
  • Set up SSR or SSG prerendering if your stack demands compromises (Next.js, Nuxt, Gatsby to avoid this issue from the start)

SEO Expert opinion

Is this directive consistent with what is observed in practice?

Yes, and it's even a recurring problem in audits. Sites that have migrated to JS frameworks without reviewing their URL architecture end up with ghost pages: they exist for users but not for Google. I've seen e-commerce sites lose 40% of their organic traffic after a poorly calibrated React overhaul, precisely because of this kind of mistake.

What's interesting is that Google no longer talks about escaped fragments (the #!/ hack from 2012-2015). This technique is dead and buried. If you still have it in your legacy code, now is the time to refactor [To verify] if you haven't already seen a decline in rankings.

In which cases does this rule not really apply?

Traditional internal navigation anchors pose no issue: example.com/seo-guide#chapter-3 works perfectly. Google indexes the base URL and ignores the fragment for indexing, but the user lands at the right spot. This is the intended use of fragments, and it works.

Second exception: tracking or UI parameters (modals, tabs, light filters) passed in fragments. Example: example.com/products#color-filter-red. As long as the main content exists in the initial DOM and the fragment only changes the display, Google doesn’t care. The risk arises when the fragment loads distinct content that doesn’t exist elsewhere.

What nuances should be added to this recommendation?

John Mueller remains vague on one point: what about JavaScript rendering and crawl budgets? Google claims it executes JS, but we know that this rendering is costly and not systematic. A site that forces Google to execute JS to reveal URLs hidden behind fragments is wasting its crawl budget.

Another nuance: this recommendation mostly targets high page volume sites. If you have 10 static pages with a few anchors, no one is going to penalize you. But for a site with 10,000 product entries routed with #, it’s sure to be a disaster.

Warning: If your site relies on an older JS framework (Angular 1.x, Backbone with # routing), migrating to clean URLs is critical. Don't underestimate the impact: plan 301 redirects, sitemap updates, and monitor for 404s. This is a major technical overhaul.

Practical impact and recommendations

What should you check first on your mobile site?

First step: audit your URLs in mobile navigation. Open your site on mobile, navigate, and observe the address bar. If you see # changing with every click without the base URL moving, you have a problem. Supplement this with a crawl using Screaming Frog or Oncrawl in mobile user-agent to list all actually accessible URLs.

Second check: Search Console, Coverage tab. Look at the pages marked “Detected, currently not indexed.” If you see URL patterns that should be indexed but are not, cross-reference with your fragment list. Also, use the URL inspection tool to test the mobile rendering of suspicious pages.

How to correct an architecture relying on fragments?

The technical solution depends on your stack. For modern single-page applications, switch to the History API (pushState/replaceState), which allows clean URLs without fragments. Frameworks like React Router, Vue Router, Angular (recent versions) support this natively. Set them up in “history” mode rather than “hash.”

For legacy sites or complex stacks, consider server-side rendering (SSR) or static site generation (SSG). Next.js, Nuxt, Gatsby resolve this issue at the source by generating complete HTML pages with canonical URLs. This requires a refactor, but it’s an opportunity to modernize your entire architecture.

What mistakes should be avoided during migration?

A classic error: forgetting 301 redirects. If your old URLs with fragments were referenced (backlinks, social shares), you must properly redirect. The problem is that you cannot redirect a fragment server-side (it’s never sent to the server). Solution: client-side JavaScript that detects old patterns and redirects to the new clean URLs.

Another pitfall: breaking the crawl budget by duplicating everything. If you keep both old fragmented URLs AND new clean URLs accessible, you create massive duplicate content. Choose a single canonical structure and enforce it everywhere (rel=canonical, redirects, consistent internal links).

  • Crawl your mobile site and list all URLs containing # that serve distinct content
  • Configure your JS framework in “history” mode to generate clean URLs without fragments
  • Implement JavaScript redirects for old fragments if necessary (and document this technical debt)
  • Update all internal links and the XML sitemap to point to the new canonical URLs
  • Check mobile rendering in Search Console after migration and monitor 404 errors for at least 3 months
  • Test in real conditions: private browsing, JS disabled, slow 3G connection — if it works, Google will see your content
Migrating from a fragmented architecture to clean URLs is a significant technical project that impacts application routing, crawling, indexing, and user experience. This type of optimization requires sharp technical expertise and coordination between developers and SEO. If your internal team lacks resources or specialized skills on these topics, working with an experienced SEO agency can accelerate compliance and secure the transition without traffic loss.

❓ Frequently Asked Questions

Les fragments d'URL (#) sont-ils totalement interdits pour le SEO ?
Non, les fragments pour ancres internes classiques fonctionnent parfaitement. Le problème apparaît quand vous utilisez des fragments pour router des contenus distincts qui devraient avoir leurs propres URLs indexables.
Google indexe-t-il quand même les contenus chargés via fragments en exécutant le JavaScript ?
Théoriquement oui, mais c'est coûteux en crawl budget et non garanti. En pratique, beaucoup de contenus derrière des fragments ne sont jamais indexés, surtout sur mobile où Google est plus strict.
Comment rediriger une URL avec fragment côté serveur ?
Impossible : les fragments ne sont jamais envoyés au serveur. Vous devez gérer la redirection côté client via JavaScript en détectant les anciens patterns et en redirigeant vers les nouvelles URLs propres.
React Router en mode « hash » pose-t-il problème pour le SEO mobile ?
Oui, absolument. Passez en mode « history » (BrowserRouter) pour générer des URLs propres. Vous devrez configurer votre serveur pour servir index.html sur toutes les routes.
Les escaped fragments (#!/) fonctionnent-ils encore ?
Non, cette technique est obsolète depuis des années. Google ne la supporte plus et vous risquez une désindexation progressive si vous comptez encore dessus.
🏷 Related Topics
Crawl & Indexing AI & SEO Mobile SEO Domain Name Pagination & Structure

🎥 From the same video 9

Other SEO insights extracted from this same Google Search Central video · duration 57 min · published on 25/09/2015

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