Technical SEO · Glossary · Updated Apr 2026

Infinite scroll SEO

Definition

Infinite scroll SEO is the problem of making continuously-loading list pages crawlable. Googlebot doesn't scroll — it requests URLs. A pure JS infinite scroll where new items load on scroll without changing the URL is invisible to crawlers beyond the first page. The fix: paginated alternative URLs.

Find related

Long definition

Infinite scroll is a UX pattern: the user lands on /category, scrolls, and items 21-40 are fetched and appended without a page reload. It's good for engagement, easy to build with modern JS, and silently disastrous for SEO if implemented as JS-only.

Why it breaks crawling: Googlebot requests a URL, renders the page (within the WRS budget), and indexes what it sees. It doesn't simulate scroll events. If items 21+ only appear after a scroll-triggered fetch, Google indexes only items 1-20 and treats the rest of the catalog as unreachable from this entry point.

The fix is paginated alternative URLs — a parallel pagination scheme that exists only for crawlers and users without JS:

<!-- Visible to user as infinite scroll -->
<a href="/category?page=2">Page 2</a>
<a href="/category?page=3">Page 3</a>

Each ?page=N URL must:

  • Return a unique, server-rendered HTML response containing items N×20 to (N+1)×20.
  • Self-canonical<link rel="canonical" href="/category?page=2">. Don't canonicalize page 2+ to page 1; that hides the items.
  • Link to neighbor pages — at minimum prev/next, ideally a full page-number nav.
  • Be in the XML sitemap if the items on each page warrant indexing.

The official guidance from Google's JavaScript SEO docs and the older "search-friendly infinite scroll" article: build the page-number version first, then layer infinite-scroll UX on top using the History API to update the URL as the user scrolls (history.pushState('/category?page=3')). This way crawlers see the static pagination, users get the scroll experience, and both work from the same source data.

The same logic applies to "Load more" buttons that fetch via JS without a URL change: invisible to Googlebot beyond the first batch.

Common misconceptions

  • "Googlebot can scroll because it renders JavaScript." It executes JS but doesn't synthesize user events. No scroll, no click, no hover. Anything gated behind a user gesture is invisible.
  • "rel=prev/next makes infinite scroll work." Google deprecated rel=prev/next for indexing in March 2019. They still work for accessibility and some other crawlers, but Google ignores them. The fix is real, crawlable URLs, not link relations.
  • "A sitemap listing all items is enough." A sitemap helps discovery, but PageRank flows through links, not sitemap entries. Items only reachable via the sitemap rank worse than items linked from a paginated category page.
  • "View-all is the same as infinite scroll." View-all is one page with all items rendered server-side — fully crawlable, but slow on large catalogs. Infinite scroll is incremental loading. The two need different fallbacks: view-all needs a canonical strategy; infinite scroll needs paginated URLs.