If you run an online store, a blog archive or a forum, you have pages that split one long list into page 1, page 2, page 3 and so on. Pagination SEO is about making sure Google can reach every item in that list and index each page correctly. Here’s the short answer. Give every page its own URL, and link the pages together with normal <a href> links. Let each page canonicalise to itself. And stop filter and sort versions from being indexed.
Most pagination problems come from a few habits that were once common advice and no longer are. In this guide I walk through what Google actually does with paginated pages, the mistakes that hide products and posts from search, and how to handle “load more” buttons and infinite scroll without losing content.
What Pagination Is and Why It Matters for Search
Pagination splits a large set of items across several URLs. You see it on category pages, search results pages, blog archives, review lists and comment threads.
The SEO risk is not the pagination itself. The risk is that the items on page 7 can only be reached through page 6, which can only be reached through page 5. If any link in that chain is broken or invisible to Googlebot, Google may never find anything beyond it.
That matters most for:
- Ecommerce category pages, where products deep in a list may have few other internal links.
- Blog and news archives, where older posts slowly drift to page 20 and beyond.
- Marketplaces and directories, where listings change often and Google needs to keep finding new ones.
Google has also said it doesn’t treat paginated pages as a special type. Page 2 is just another page that it crawls, judges, and may or may not index.
How Google Handles Paginated Pages Today
Google’s current guidance is in its Search Central documentation on pagination and incremental page loading. It’s written for ecommerce sites, but it applies to any paginated list. The main points are simple:
- Googlebot finds new pages by following URLs in the
hrefattribute of<a>elements. - Googlebot doesn’t click buttons. It generally doesn’t run JavaScript that needs a user action to load more content.
- Each page in a series should have a unique URL. Google treats each one as a separate page.
- Pages in a series should link to each other in order.
- Each page should have its own canonical URL, not one pointing to page 1.
Everything else in this guide follows from those rules.
What Happened to rel=”next” and rel=”prev”
For years, Google recommended <link rel="next"> and <link rel="prev"> tags in the page head to describe a paginated series. In March 2019, Google confirmed it no longer used them for indexing. It had stopped some time before it said so publicly.
So what should you do with existing tags?
- You don’t need to add them for Google. They won’t help your pages get crawled or ranked there.
- You don’t need to remove them either. They do no harm, and Google’s documentation notes that other search engines may still use them. I usually just leave them in place.
- Don’t rely on them as your only way of linking pages. Head tags are not crawlable links. Visible
<a href>links do that job.
Pagination SEO Best Practices
These are the practices that make a paginated series easy for Google to crawl and understand. I’ve listed them roughly in order of impact.
1. Give Every Page a Unique, Stable URL
Each page in the series needs its own address, for example /shoes/running/?page=2 or /blog/page/2/. A query parameter or a path segment both work. Pick one pattern and use it everywhere.
Don’t use fragment identifiers such as #page=2 for page numbers. Google ignores everything after the #. So it sees /shoes/running/#page=2 as the same URL as page 1, and may not crawl it at all.
Also make sure page 1 has one URL. If /shoes/running/ and /shoes/running/?page=1 both work, link to the clean version everywhere. Redirect or canonicalise the ?page=1 version to it. Otherwise you create a small but needless duplicate, the kind of issue covered in our guide to how Google handles duplicate content.
2. Link Pages in Order With Real Anchor Links
Every page should link to the next page, and ideally to the previous page, using standard anchor elements with an href. Google also suggests linking every page back to the first page. That helps it see where the series starts.
A crawlable pagination block can be as simple as this:
<nav aria-label="Pagination">
<a href="/shoes/running/">1</a>
<a href="/shoes/running/?page=2">Previous</a>
<span>Page 3 of 12</span>
<a href="/shoes/running/?page=4">Next</a>
<a href="/shoes/running/?page=12">12</a>
</nav>
These patterns look the same to a visitor, but they give Googlebot nothing to follow:
<!-- Googlebot will not follow these -->
<span onclick="goToPage(4)">Next</span>
<button data-page="4">Next</button>
<a href="#page=4">Next</a>
If your theme or JavaScript framework shows pagination as buttons, check the rendered HTML. This is one of the first things I look at on a new site. The fix is usually to output an <a> element with a real URL and let JavaScript improve it, not replace it.
3. Use Canonicals That Point to the Page Itself, Not Page 1
This is the most common pagination mistake I see. Someone sets every paginated page’s canonical tag to page 1, hoping to “consolidate” signals. Google’s documentation clearly says not to do this.
The reason is simple. Page 3 doesn’t hold the same products as page 1. A canonical says “this page is a copy of that one”. If Google accepts it, the content only found on page 3 can drop out, along with the links that lead to the items on it.
<!-- On https://www.example.com/shoes/running/?page=3 -->
<link rel="canonical" href="https://www.example.com/shoes/running/?page=3">
<!-- Not this -->
<link rel="canonical" href="https://www.example.com/shoes/running/">
Each paginated URL should point to itself. If you add tracking or session parameters, the canonical should still point to the clean paginated URL, such as ?page=3 without the extra parameters.
4. Handle Titles and Descriptions Sensibly
Google normally recommends unique titles and meta descriptions. But its pagination guidance makes an exception. Pages in a sequence can share the same title and description, and Google tries to recognise them as a series.
In practice, many sites still add a short page marker. That helps people who land on a deep page or have several tabs open:
- Page 1:
Running Shoes for Men and Women | Example Store - Page 2:
Running Shoes for Men and Women, Page 2 | Example Store
Either approach is fine. What I’d avoid is writing a separate keyword-targeted intro, title and description for page 2, page 3 and page 4. That tends to create thin, near-copy pages that compete for the same query, and it rarely helps. Keep the main category description on page 1, which is the page you want to rank.
5. Keep Paginated Pages Indexable
Some sites add noindex to page 2 onwards to keep “low-value” pages out of the index. This is usually not needed and can backfire.
Google has said that pages left on noindex for a long time may end up crawled less, and their links may stop being followed. On a category with hundreds of products, deeper products can then lose the internal links that helped Google find them.
6. Don’t Block Paginated URLs in robots.txt
Blocking ?page= in robots.txt stops Google from fetching pages 2 onwards. That means it can’t see the links on them. Products and posts that are only linked from deeper pages may never be found. Use robots.txt rules for filter and sort parameters, covered below, not for the page parameter itself.
7. Make Pages Load Fast
Google’s guidance also suggests preloading or preconnecting resources, so the next page loads quickly for users. Smaller pages help Googlebot too. For product grids, about 20 to 50 items per page keeps pages light without creating too many pages.
Should You Offer a “View All” Page?
A “view all” page shows every item in the series on one URL. Google’s older guidance, from 2011, recommended this. You built a view-all page and pointed the other pages’ canonicals to it, as long as it loaded quickly.
Google’s current ecommerce documentation doesn’t include that advice. But the approach still works in the right cases. It works best when:
- The list is small enough to load fast, for example a category with 60 products, not 6,000.
- Users actually want to see everything at once, such as a short article series or a small product range.
- The page stays usable on mobile, without huge images or long loading times.
If you go this route, the view-all page canonicalises to itself. The paginated pages can canonicalise to the view-all URL, because it really does hold their content. That’s the one case where pointing paginated pages to a different URL makes sense.
For large catalogues, a view-all page becomes slow and heavy, which hurts users and performance. Standard pagination with canonicals that point to each page itself is the safer default. It’s what I recommend for most stores.
Infinite Scroll and “Load More” Buttons
Infinite scroll and load-more buttons are popular because they keep shoppers on one page. The SEO problem is that both usually run on JavaScript triggered by a scroll or a click. Googlebot does neither.
If the only way to reach products 25 to 48 is to scroll or press a button, Google will usually see just the first batch. The fix is to build these features on top of real paginated URLs.
Make “Load More” Crawlable
Show the button as a link to the next page. Then use JavaScript to fetch the results and add them in place:
<div id="product-grid">
<!-- first 24 products rendered in the HTML -->
</div>
<a href="/shoes/running/?page=2" id="load-more">Load more</a>
Users who click get the smooth, single-page experience. Googlebot sees a normal link to ?page=2 and follows it. There it finds a page rendered on the server, with the next batch of products and a link to ?page=3.
Make Infinite Scroll Crawlable
The same idea applies. Behind the scrolling, there should be a paginated series that works on its own:
- Split the content into pages with unique URLs, just as you would for normal pagination.
- Make each paginated URL return the right batch of items when loaded directly, with no scrolling needed.
- Include crawlable
<a href>links to the next page in the HTML. For example, use a pagination block that is hidden behind the scroll or shown at the bottom. - If you like, update the address bar with the History API as the user scrolls into a new batch. Then a shared or bookmarked URL opens at the right place.
Here’s a quick test I use. Turn off JavaScript and open ?page=3. If you see page 3’s items and a link to page 4, Google can work through the series.
Google also points out that an XML sitemap or a Merchant Center product feed can help it find all your products. That’s a useful backup. But it doesn’t replace crawlable links, which also pass internal link signals and context.
Filters, Sorting and Paginated Variations
Pagination gets messy when it mixes with filters and sort orders. A category with 10 pages, 5 sort options and a dozen colour and size filters can create thousands of URLs. They all show the same products in a different order.
Google’s advice is that you can offer these options, but you should avoid having the variations indexed. Two tools do the job:
noindexon filter and sort combinations you don’t want in search. Google can still crawl these pages and follow their links.- robots.txt rules for URL patterns you don’t want crawled at all, such as sort parameters.
User-agent: *
Disallow: /*?*sort=
Disallow: /*?*order=
<!-- On /shoes/running/?colour=red&sort=price -->
<meta name="robots" content="noindex">
Don’t use both on the same URL. If robots.txt blocks a page, Google can’t fetch it to see the noindex.
Keep the plain paginated series, ?page=2, ?page=3 and so on, outside these rules. Those are the URLs that lead Google to your items. On large catalogues, cutting filter and sort URLs is also one of the easiest ways to stop wasted crawling. We explain this in our guide to crawl budget and when it matters.
If you want a few filtered views to rank, such as “red running shoes”, treat them as proper landing pages. Give them a clean URL, unique content and links from your menu. Don’t rely on parameter combinations.
How to Audit Pagination on Your Site
You can check most of this in under an hour with Search Console, a crawler and your browser. This is the order I follow:
- Inspect the HTML. On a category page, view the source or the rendered HTML. Confirm pagination uses
<a href>links with full or relative URLs, not buttons or fragments. - Check canonicals. Open page 2 and page 5 and confirm each canonical points to itself. In Search Console’s URL Inspection tool, compare the user-declared canonical with the Google-selected canonical. On a large store, I check many pages at once with the Search Console URL Inspection API.
- Crawl the site. Run a crawler from the homepage and check that it reaches the last page of each major category. Look at the crawl depth (how many clicks from the homepage) of products near the end of long lists.
- Look for orphaned items. Compare products or posts in your sitemap or database with what the crawler found through links. Anything missing is likely stuck behind broken pagination. Our guide to finding and fixing orphan pages covers this process.
- Review the Page Indexing report. Look for paginated URLs marked “Alternate page with proper canonical tag” or “Duplicate, Google chose different canonical than user”. These can point to canonical problems.
- Count parameter URLs. Check how many sort and filter combinations Google is crawling, using Crawl Stats or server logs. Then decide which to block or noindex.
Relying Less on Deep Pagination
Even perfect pagination puts items on page 15 a long way from your homepage. A few structure habits reduce how much Google has to depend on it:
- Break very large categories into subcategories, so each list is shorter.
- Link to important products and posts from related items, guides and hub pages, not just category lists.
- Set the default sort to something useful, such as best sellers, so your most important items sit on page 1.
Common Pagination Mistakes to Avoid
- Canonicalising every page to page 1. It tells Google to ignore the content on deeper pages.
- Using buttons or
onclickhandlers instead of links. Googlebot doesn’t click. - Using
#page=2style URLs. Google ignores fragments. - Blocking
?page=in robots.txt. It stops Google finding deeper items. - Infinite scroll that only works with JavaScript. Google usually sees only the first batch.
- Letting sort and filter combinations multiply. They waste crawling and create near-copy URLs.
- Returning soft 404s for pages past the end. If a category shrinks and
?page=40no longer exists, return a 404, not an empty page with a 200 status.
Conclusion: Getting Pagination SEO Right
Good pagination SEO is mostly about not getting in Google’s way. Give each page a unique URL, connect the pages with plain anchor links, let each page canonicalise to itself, and keep filter and sort versions out of the index. If you use infinite scroll or load-more buttons, build them on top of real paginated URLs. Then Googlebot can follow the same path without scrolling or clicking.
As a next step, I’d open your largest category. Check page 2’s canonical and pagination links, and run a crawl to see if the last page can be reached. If your category pages are in good shape, turn to the pages they lead to with our ecommerce product page SEO checklist.



