Question
Pagination and Infinite Scroll: SEO Best Practices
Short answer
Google can only reach paginated content through links it can crawl. Its pagination documentation is direct: Google "generally crawls URLs found in the href attribute of <a> elements", and its crawlers "don't 'click' buttons and generally don't trigger JavaScript functions that require user actions to update the current page contents." So whatever the visitor sees, numbered pages, a "Load more" button or infinite scroll, every chunk of the list needs its own URL and a plain link to it. The rest of the rules follow: each page gets its own canonical, filter and sort variants stay out of the index, and rel="next" and rel="prev" no longer matter to Google.
Sources
Ask next
- Faceted Navigation SEO: Managing Filter-Generated URLs
- Canonical Tags: Solving Duplicate Content Issues
- XML Sitemaps: Creation, Optimization, and Error Handling
- Internal Linking Strategy: Link Equity Distribution and Crawl Optimization
- Site Architecture and URL Structure for SEO
- JavaScript SEO: Rendering Issues and Solutions
Choosing the Pattern
Google’s pagination and incremental loading guide compares the three patterns on user experience:
| Pattern | Google's listed pros | Google's listed cons |
|---|---|---|
| Pagination | "Gives users insight into result size and current position" | More complex controls, content split across pages, new page loads |
| Load more | "Uses a single page for all content"; can show the total result size | "Can't handle very large numbers of results" |
| Infinite scroll | "Uses a single page for all content"; intuitive | Can lead to "scrolling fatigue"; can't handle very large result sets |
Pick the pattern for your readers. The search requirement is the same for all three: a crawlable URL for each chunk of results.
Numbered Pagination That Google Can Follow
Google lists three best practices.
Link pages sequentially. Google says to “include links from each page to the following page using <a href> tags.” Google also suggests “linking from all individual pages in a collection back to the first page of the collection”, which gives “a hint that the first page of a collection might be a better landing page than other pages in the collection.”
Use URLs correctly.
- “Give each page a unique URL”, for example with a
?page=nparameter, because “URLs in a paginated sequence are treated as separate pages by Google.” - “Don’t use the first page of a paginated sequence as the canonical page. Instead, give each page its own canonical URL.” Page 5 canonicalizes to page 5.
- Don’t put page numbers in fragments. “Google ignores fragment identifiers”, and if the next-page URL differs only after the
#, Googlebot “may not follow the link, thinking it has already retrieved the page.”
Keep filters and sort orders out of the index. For variants such as ?order=price, Google suggests a noindex robots meta tag or robots.txt rules to “discourage crawling of particular URL patterns”. Filter handling in depth is in faceted navigation SEO.
Path-based URLs such as /page/2/ work as well as parameters. Pick one format and use it on every listing, so internal links, canonicals and sitemaps all agree. Canonical mistakes in general are covered in canonical tags.
Titles on Paginated Pages
Distinct titles are not required here. Google: “Normally, we recommend that you give web pages distinct titles to help differentiate them. However, pages in a paginated sequence don’t need to follow this recommendation. You can use the same titles and descriptions for all pages in the sequence. Google tries to recognize pages in a sequence and index them accordingly.”
Adding “Page 2 of 15” to the title or heading is still reasonable for readers who land on page 2 from a search result or a shared link. It is a usability choice, not a duplicate-title fix.
Reducing Depth in Long Series
With only Previous and Next links, page 100 is 99 links from page 1. Adding numbered links around the current page, plus links to the first and last page, shortens that path a great deal, though it doesn’t put every page within two clicks: from page 47 in a “1 … 45 46 [47] 48 49 … 100” control, a crawler can reach pages 1, 45, 46, 48, 49 and 100 directly, and each further step moves only a few pages.
Pagination controls alone won’t fix depth in a very long series. It also takes structural changes:
- Subcategories that split a 500-page listing into shorter lists.
- Links from related products and articles directly to the items deep in a series.
- A sitemap listing every item URL. Google’s guide suggests “using a sitemap file or a Google Merchant Center feed to help Google find all of the products on your site”; sitemap rules are in XML sitemaps.
How internal links shorten paths in general is covered in internal linking strategy, and the structure behind it in site architecture and URL structure.
rel=”next” and rel=”prev”
Google’s current guidance: “In the past, Google used <link rel="next" href="..."> and <link rel="prev" href="..."> to identify next page and previous page relationships. Google no longer uses these tags, although these links may still be used by other search engines.”
If your platform already outputs them, there’s no Google reason to remove them. If you’re building pagination now, the <a href> links between pages are what Google needs.
Infinite Scroll and Load More
A button or a scroll event that fetches more items through JavaScript leaves Google with whatever the first load contained, because Google’s crawlers don’t click and don’t trigger user-action JavaScript. Items that appear only after that interaction need another crawlable path.
Google’s February 2014 post on search-friendly infinite scroll set out the approach, and the post now carries Google’s own notice that “Some of the information may be outdated”. Google’s current lazy-loading guide keeps the same core rules: give each chunk “its own persistent, unique URL”, link the chunk URLs sequentially, and update the displayed URL with the History API when a new chunk becomes the primary visible element. The 2014 post’s central instruction is to produce “a paginated series (component pages) to go along with your infinite scroll.” The recommendations that remain practical:
- Split the content into component pages that can be accessed when JavaScript is disabled.
- Give each component page a full URL that “works to take anyone directly to the content” without the same cookies or browsing history.
- Avoid overlap: each item appears on one component page only.
- Use
pushStateto update the address as the visitor scrolls into the next chunk, so the URL in the bar matches what they see. - Return a 404 for out-of-range pages, such as
?page=999in a 40-page series.
In practice, build numbered pagination first and layer scrolling or a Load more button on top of it. The server renders page 1 with plain links to page 2, page 2 to page 3, and so on; JavaScript intercepts those clicks or the scroll and inserts the next chunk without a reload. If the script fails, the links still work, and Google follows the same links. JavaScript rendering issues in general are covered in JavaScript SEO.
Large Catalogs
On a catalog with thousands of listing pages, decide what each page is for:
- Listing pages that should be crawled. The sequence for each category, with self-referencing canonicals, so items deep in the list can be found.
- Variants that shouldn’t be indexed. Sort orders and the filter combinations you don’t want in search, handled with
noindexor robots.txt as Google suggests. - Items that need a shorter path. Add subcategories and related-item links rather than relying on page 300 of a general listing.
Don’t block the pagination itself. A robots.txt rule that disallows /page/ or ?page= stops Google from following the sequence, and items reachable only through it lose their crawl path. Server load from very large series is a crawl budget question, covered in how Google crawls and indexes websites.
The URL Parameters tool is not an option for any of this. Google announced on March 28, 2022 that it was “deprecating the URL Parameters tool in Search Console in 1 month”, and said that “Google’s crawlers will learn how to deal with URL parameters automatically”, pointing site owners who need more control to robots.txt rules. A parameter setting made in that tool years ago does nothing today.
Testing Paginated Pages
- Open a deep page directly. Load page 10 of a category in a fresh browser session. It should show the right items, a self-referencing canonical and links to its neighbors.
- Check the HTML, not only the screen. View the page source and confirm the pagination links are
<a href>elements. Then use URL Inspection in Search Console to see the rendered HTML Google gets. - Check the infinite scroll fallback. With JavaScript disabled, the component pages and their links should still be reachable.
- Check the canonicals. Every page in the series should name itself, not page 1.
- Check what Google requests. Server logs show whether Googlebot fetches deep pages in the series or stops early; see log file analysis.
- Check out-of-range URLs. A page number beyond the last page should return 404, not an empty listing with a 200.
Before a pagination or scrolling change goes live, open page 10 of a category directly: if it doesn’t show its own items, a canonical naming itself and <a href> links to its neighbors, fix that before any scrolling or Load more layer goes on top.
Link profile
Links to 8 guides
- Faceted Navigation SEO: Managing Filter-Generated URLs
- Canonical Tags: Solving Duplicate Content Issues
- XML Sitemaps: Creation, Optimization, and Error Handling
- Internal Linking Strategy: Link Equity Distribution and Crawl Optimization
- Site Architecture and URL Structure for SEO
- JavaScript SEO: Rendering Issues and Solutions
- How Google Crawls and Indexes Websites: The Technical Process Explained
- Log File Analysis: Understanding Googlebot Behavior
Linked from 5 guides
Cites 3 sources
- pagination and incremental loading guide developers.google.com
- search-friendly infinite scroll developers.google.com
- lazy-loading guide developers.google.com