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

When adapting mobile sites, it's advisable to use clean and distinctive URLs for each content section, especially with single-page applications.
46:06
🎥 Source video

Extracted from a Google Search Central video

⏱ 1h10 💬 EN 📅 29/01/2016 ✂ 10 statements
Watch on YouTube (46:06) →
Other statements from this video 9
  1. 2:06 Le défilement infini tue-t-il vraiment l'indexation de votre contenu ?
  2. 4:17 Faut-il vraiment adopter l'AMP pour améliorer son référencement mobile ?
  3. 17:59 Est-ce que Google Analytics influence vraiment le classement de vos pages ?
  4. 20:04 Combien de sites interconnectés peut-on gérer sans déclencher une pénalité Google ?
  5. 41:56 Les interstitiels mobiles peuvent-ils vraiment être indexés par Google ?
  6. 49:56 Les images influencent-elles vraiment le classement dans Google ?
  7. 53:26 Les SPA sont-elles vraiment compatibles avec un bon référencement Google ?
  8. 60:37 Le HTML valide est-il vraiment un facteur de ranking pour Google ?
  9. 68:04 Penguin : pourquoi Google ne communique-t-il aucune date précise de déploiement ?
📅
Official statement from (10 years ago)
TL;DR

John Mueller emphasizes that mobile sites, particularly Single Page Applications (SPAs), need distinct and clean URLs for each content section. Without this structure, Google may fail to index your pages correctly, jeopardizing your organic visibility. This recommendation especially targets modern JavaScript applications that frequently use a single URL to display different content.

What you need to understand

Do SPAs present a structural problem for Google?

Single Page Applications (SPAs) like React, Vue, or Angular have transformed mobile web development, but they create a major challenge for crawling. Technically, a SPA loads a single HTML page and then modifies the DOM using JavaScript to display different content.

The issue? Google needs to execute JavaScript to discover these virtual 'pages'. If your SPA uses a single URL (example.com) and only alters the content without changing the URL, Googlebot sees only one page. Your catalog of 500 products? Only a single indexed URL.

What does 'clean and distinctive URLs' actually mean?

Mueller emphasizes two criteria: each distinct content must have its own unique URL, and this URL should be 'clean', meaning stable and descriptive. No fragments (#section1, #product-42) that disappear during sharing or crawling.

In practice, your structure should look like example.com/category/product-name rather than example.com#product-42 or worse, example.com?state=XyZ8kL. Fragments (#) are traditionally ignored by search engines, though Google has progressed on this front with modern SPAs.

Does this recommendation only apply to mobile?

No, but the mobile context amplifies it. Historically, some sites maintained separate mobile versions (m.example.com) with different URLs than their desktop counterparts. Since mobile-first indexing, Google prioritizes indexing the mobile version.

If your mobile site uses unstable or fragmented URLs while your desktop displays clean URLs, you create a structural inconsistency that Google will penalize. Mobile-first indexing means your mobile URLs are now your reference URLs.

  • Unique URL for each distinct content: every product page, article, or section should have its own address
  • No fragments (#) as the primary identifier, prefer real paths (/page)
  • Mobile/desktop consistency: both versions must share the same URL structure
  • Server-side routing or History API: implement URL management that actually modifies the displayed address
  • Avoid dynamically generated state parameters (?state=hash) that change with each session

SEO Expert opinion

Is this statement consistent with field observations?

Absolutely. SEO audits consistently reveal that poorly configured SPAs suffer from a disastrous indexing rate. I've seen sites with 2,000 functional pages but only 50 indexed URLs because they used JavaScript routing without the History API.

Google has indeed improved its JavaScript rendering, but relying on it is still risky. Crawl budget is limited, and forcing Googlebot to execute complex JS to discover your URLs consumes resources it could allocate to explore more content. Sites that expose clean URLs directly in their initial HTML always perform better.

What nuances should be added to this advice?

Mueller does not specify the implementation method, which leaves a gray area. Technically, three approaches exist: Server-Side Rendering (SSR), Static Site Generation (SSG), or Client-Side Routing with History API. [To be verified] which method Google actually favors, as crawl performance varies.

SSR ensures clean URLs from the initial HTML, but it's costly in server resources. CSR with History API modifies the visible URL, but Google still needs to execute JS to discover internal links. In practice, SSR + CSR hydration (the Next.js/Nuxt.js approach) offers the best compromise, but Mueller does not make any technical distinction here.

In what cases can this rule be relaxed?

Pure web applications (dashboards, SaaS tools) that do not seek organic traffic can ignore this advice. If your content lives behind a login and is not intended to be indexed, the URL architecture matters little for SEO.

Some ultra-dynamic content like product search filters can legitimately use URL parameters. The nuance: these parameters must be managed with rel="canonical" or robots.txt to avoid duplication. But be cautious, using parameters for main content (not filters) remains a mistake.

Attention: Google is increasingly detecting sites that serve different content based on the User-Agent (cloaking). If your mobile version shows clean URLs to Googlebot but fragments to users, you risk a manual penalty. User/bot consistency is now critical.

Practical impact and recommendations

What practical steps should you take for your SPAs?

First, audit your current structure. Navigate your mobile site and observe the address bar: does the URL change on each page? If it remains the same or uses #fragments, you have a problem. Then test with "site:yourdomain.com" in Google to compare the number of indexed pages against your actual pages.

If you're using React, Vue, or Angular, implement a robust routing system. React Router (with BrowserRouter), Vue Router (history mode), or Angular Router should be configured to change the full URL. On the server side, set up your hosting to redirect all routes to index.html (SPA fallback) while preserving the requested URL.

What technical mistakes should you absolutely avoid?

Don't confuse HashRouter and BrowserRouter in React. The former uses #fragments (example.com/#/page), while the latter uses real routes (example.com/page). Only BrowserRouter is suitable for SEO. Check your configuration, as many beginner tutorials still recommend HashRouter for simplicity.

Avoid state parameters in the URL generated by state managers (Redux, Vuex). URLs like example.com?view=ZxY8 that change on each visit prevent stable indexing. If you must pass state, use descriptive paths (example.com/category/view-list) or semantic parameters (example.com/products?sort=price).

How can you verify that your implementation works?

Use Google Search Console and submit your main URLs via the inspection tool. The 'Crawled version' tab shows you exactly what Googlebot sees. If your content doesn't appear or if the displayed URL differs from the submitted one, your routing is problematic.

Also test with Screaming Frog in JavaScript rendering mode. Compare a standard crawl (raw HTML) versus a crawl with rendering enabled. The gap between the two reveals your reliance on JavaScript. Ideally, 80% of your internal links should be discoverable in raw HTML, even for a modern SPA.

❓ Frequently Asked Questions

Les fragments d'URL (#) sont-ils toujours ignorés par Google ?
Non, Google peut indexer les fragments dans certains cas (notamment avec le schéma #! obsolète), mais ce n'est pas fiable. Pour un SEO solide, utilisez des chemins réels (/page) plutôt que des fragments.
Faut-il abandonner les SPA pour le SEO ?
Pas nécessairement. Les frameworks modernes comme Next.js (React) ou Nuxt.js (Vue) permettent du Server-Side Rendering qui génère des URL propres indexables. Le problème vient des SPA purement client-side mal configurées.
Le mode HashRouter est-il acceptable pour un site non-commercial ?
Si vous ne cherchez pas de trafic organique (application interne, outil derrière login), oui. Mais pour tout contenu public destiné à être trouvé via Google, passez impérativement à BrowserRouter ou équivalent.
Comment gérer les filtres produit sans créer des milliers d'URL ?
Utilisez des paramètres d'URL pour les filtres (?couleur=rouge&taille=M) et bloquez-les via robots.txt ou gérez-les avec rel="canonical" vers la page catégorie principale. Seules les pages de contenu unique doivent avoir des URL indexables distinctes.
Search Console signale mes URL comme non indexées malgré un sitemap correct, que faire ?
Vérifiez si Googlebot peut réellement accéder au contenu en testant l'inspection d'URL. Si le rendu JavaScript échoue ou est lent, implémentez du pré-rendu (SSR/SSG) ou un service comme Prerender.io pour servir du HTML statique aux bots.
🏷 Related Topics
Domain Age & History Content Mobile SEO Domain Name Pagination & Structure

🎥 From the same video 9

Other SEO insights extracted from this same Google Search Central video · duration 1h10 · published on 29/01/2016

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