Technical SEO
Pagination SEO Best Practices: URLs, Canonicals, Links
Give every paginated page its own URL and self-referencing canonical, link pages with real <a href> links, avoid # page numbers, and make load more or infinite scroll fall back to crawlable pages.
By SEORecheck Research Team, SEO auditorsPublished 10 min read

Pagination SEO best practices come down to one goal: Google must be able to reach every item in a long list. Give each page in the series its own URL and its own canonical, connect the pages with normal <a href> links, don't put page numbers in # fragments, and make sure load more or infinite scroll still works as crawlable pages.
Most pagination problems don't come from a missing tag. They come from well-meant "fixes", like pointing every page's canonical at page 1 or adding noindex to page 2 and beyond. Those changes quietly cut off the products or articles that are only linked from deeper pages. This guide covers what Google documents, the mistakes that cause real losses, and how to check your own site.
What is pagination in SEO and why does it matter?
Pagination means splitting a long list (category products, blog archives, search results, forum threads) across several URLs, usually ?page=2, ?page=3 and so on. For SEO, the paginated pages matter less as ranking pages than as paths. They are how crawlers find the items on page 7 that nothing else links to.
Google's pagination documentation explains why the setup matters. 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." Say a "Load more" button only fetches products with JavaScript and has no link behind it. Every product beyond the first batch then depends on your sitemap or on other internal links to be discovered.
So the goal of pagination SEO isn't to rank page 4 of a category. It's to keep page 4 crawlable and indexable enough that the items on it get found, and to keep page 1 as the obvious landing page for the category query. On small sites this rarely matters. On stores with hundreds of products per category, or on blogs with years of archives, it decides whether deep content gets indexed at all. It's one of the structural decisions covered in website architecture for SEO.
Pagination SEO best practices: the core rules
These are the rules Google documents, plus a few practices that follow directly from them.
- Give every page a unique URL. Google says to "give each page a unique URL. For example, include a
?page=nquery parameter, as URLs in a paginated sequence are treated as separate pages by Google" (Google Search Central)./shoes?page=2and/shoes/page/2/both work. Choose one pattern and use it everywhere. - Never use fragments for page numbers. Google ignores everything after
#. To Google,/shoes#page=2is the same URL as/shoes. - Use a self-referencing canonical on every page. Page 2 is canonical to page 2, page 3 to page 3. Don't canonicalize the series to page 1 (see below).
- Link the pages with crawlable
<a href>links. At minimum, link each page to the next one. Numbered links (1, 2, 3 … 12) make deep pages fewer clicks away. - Link every page back to page 1. Google suggests "linking from all individual pages in a collection back to the first page of the collection to emphasize the start of the collection."
- Keep page 1 at one URL. If
/shoesand/shoes?page=1both return the same list, 301-redirect?page=1to/shoes(or at least canonicalize it there). Then link to the clean URL from your pagination. - Return 404 for out-of-range pages. If
?page=999shows an empty list with a 200 status, crawlers can create endless thin URLs. A real 404 is cleaner. Our guide to 404 errors and SEO explains why that's harmless. - Make titles distinguishable. Google doesn't require unique titles for paginated pages. Still, adding "– Page 2" to the title avoids duplicate-title warnings in crawlers and makes clear which page is which.
Here is what the <head> and pagination links of page 2 look like when set up correctly:
<head>
<title>Women's Running Shoes – Page 2 | Example Store</title>
<link rel="canonical" href="https://example.com/running-shoes?page=2">
</head>
<body>
<!-- product grid -->
<nav aria-label="Pagination">
<a href="/running-shoes">1</a>
<a href="/running-shoes?page=2" aria-current="page">2</a>
<a href="/running-shoes?page=3">3</a>
<a href="/running-shoes?page=3">Next</a>
</nav>
</body>
Should paginated pages canonical to page 1?
No. Each paginated page should have a canonical pointing to itself. Google says plainly: "Don't use the first page of a paginated sequence as the canonical page. Instead, give each page its own canonical URL" (Google Search Central). Page 2 lists different items than page 1, so it isn't a duplicate.
Pointing page 2+ at page 1 tells Google that those pages are copies of page 1, which they aren't. Google may then treat the deeper pages as duplicates and pay less attention to them. The links on those pages are the main route to the products or posts they list, so those items lose that route. The site then often sees "Duplicate, Google chose different canonical than user" or products stuck as discovered but not indexed.
There's one exception. If you offer a real "view all" page that loads the full list fast, the paginated pages can canonicalize to that view-all URL, because it contains everything they do. For most stores with large categories, a single view-all page is too heavy to be practical. For more on choosing canonicals, see our canonical tag guide.
Does Google still use rel="prev" and rel="next"?
No. Google says it "no longer uses these tags, although these links may still be used by other search engines" (Google Search Central). If your CMS already outputs them, there's no need to remove them. Just don't count on them to explain the series to Google.
What Google relies on instead is the visible, crawlable link between pages. A series that has rel="next" in the <head> but no real <a href> "Next" link in the body is effectively broken for Google. Treat the <link> tags as optional extras and the anchor links as required.
Should you noindex paginated pages?
Usually not. Adding noindex to page 2+ removes pages that list unique items from the index. It also makes those deep pages a weaker path to the items on them, which is the opposite of what you want. Keep paginated pages indexable, with self-referencing canonicals, and let page 1 rank for the category query on its own strength.
noindex belongs on a different kind of URL: sorted and filtered variations that repeat the same list in another order. Google recommends that, "to avoid indexing variations of the same list of results, block unwanted URLs from being indexed with the noindex robots meta tag or discourage crawling of particular URL patterns with a robots.txt file" (Google Search Central).
The line is simple:
| URL | What it is | Recommended handling |
|---|---|---|
/shoes?page=3 |
Unique slice of the list | Indexable, self-canonical, linked |
/shoes?page=1 |
Duplicate of /shoes |
301 or canonical to /shoes |
/shoes#page=3 |
Fragment, invisible to Google | Replace with a real URL |
/shoes?sort=price_asc&page=3 |
Same items, different order | noindex, or block the pattern in robots.txt |
/shoes?color=red&size=42 (no results) |
Empty filter combination | Return 404 |
/shoes?page=999 |
Out-of-range page | Return 404 |
One warning: don't combine robots.txt blocking with noindex on the same URL. A blocked URL is never fetched, so Google never sees the noindex. The robots.txt guide covers this trap.
How do pagination and faceted navigation interact?
Every filter multiplies your paginated series. Five colors × six sizes × ten pages is already 300 URLs for one category. Google's faceted navigation guidance says this can create "infinite URL spaces" that cause overcrawling and slower discovery of new content. Its options include blocking facet URLs in robots.txt, using the standard & separator for parameters, returning 404 for filter combinations with no results, and canonicalizing filtered URLs to the unfiltered version.
In practice, keep the plain, unfiltered series (/shoes?page=n) fully crawlable. Then control the filtered and sorted variants separately. Keep the parameter order consistent (?color=red&page=2, never sometimes ?page=2&color=red) so the same list doesn't show up under two URLs. On large stores this is mostly a crawl-efficiency problem, covered in depth in crawl budget optimization.
Are infinite scroll and load more buttons bad for SEO?
They aren't bad in themselves, but they're risky when they're the only way to reach deeper items. Google's crawlers don't click buttons or scroll to trigger JavaScript. Content that appears only after those actions may never be seen. The fix is to build both patterns on top of real paginated URLs.
A safe implementation:
- Load more as a real link. Make the button an
<a href="/shoes?page=2">that JavaScript intercepts to append products in place. Users get the smooth experience, and crawlers follow the href to a real page 2. - Paginated URLs that work on their own. Opening
/shoes?page=3directly must return page 3's items in the HTML (or in the rendered DOM), not page 1 with a scroll position. - Update the URL as users scroll. With infinite scroll, change the address bar to the matching
?page=nas each chunk loads. Shared links and the back button then land in the right place. - Use valid href values. Google's link crawlability guide says it can only reliably crawl
<a>elements with anhref. Patterns like<a onclick="goto(...)">,href="javascript:..."orrouterLinkwithout an href don't count.
Google also suggests "using a sitemap file or a Google Merchant Center feed to help Google find all of the products on your site." That's a useful safety net, but it doesn't replace crawlable links. If your listing pages are rendered by a JavaScript framework, also check what Googlebot really sees. Our guide to JavaScript SEO rendering problems shows how.
Which pagination pattern should you choose?
Pick based on how people use the list, then make it crawlable. Search engines can handle all three patterns when the implementation is right.
| Pattern | Best for | SEO risk | Must-have |
|---|---|---|---|
| Numbered pages | Large catalogs, archives, anything people browse to a specific spot | Low | Unique URLs, self-canonicals, <a href> links |
| Load more button | Stores where users compare items on one screen | Medium | Button backed by a real ?page=n link |
| Infinite scroll | Feeds, inspiration galleries, news | High | Paginated fallback URLs and a URL that updates on scroll |
| View all | Short lists that load fast | Low (if fast) | Page stays fast; paginated pages may canonicalize to it |
Whichever you choose, also check click depth. If an item sits on page 40 and the only path is "Next" 39 times, it's effectively orphaned. Numbered links with jumps (1, 2, 3 … 10 … 40), more specific subcategories and links from related products all shorten that path. See internal linking for SEO for ways to do this without cluttering templates.
How do you audit pagination on your site?
Start with a crawler, because most pagination faults only show up across many URLs at once. Then confirm the important ones in Search Console.
- Crawl a large category or archive. Check that the crawler reaches the last page by following links alone. If it stops at page 1, your pagination isn't crawlable.
- Check canonicals on page 2+. Each should point to itself (or to a real view-all page). Canonicals pointing to page 1 are the most common fault.
- Look for
noindexon paginated pages. Plugins and themes sometimes add it by default. - Test JavaScript patterns. Disable JavaScript or view the rendered HTML in Search Console's URL Inspection tool, and confirm that load more and scroll have
<a href>links behind them. - Probe edge cases. Open
?page=1,?page=0and?page=9999and note the status codes and canonicals. - Check the items, not just the pages. Pick products from deep pages and inspect them in Search Console. If they show as "Discovered – currently not indexed," weak discovery paths are a likely cause.
A free SEORecheck audit crawls your site with real browser rendering and flags paginated pages with canonicals pointing to page 1, noindexed listing pages, links that only exist after JavaScript runs, and items buried too deep to be found. You can see how findings are presented in the sample report.
Key takeaways
- Give every paginated page a unique, crawlable URL (
?page=nor/page/n/), never a#fragment. - Use self-referencing canonicals on page 2+. Pointing them to page 1 goes against Google's guidance.
- Google no longer uses
rel="prev"/rel="next". Real<a href>links between pages do the work. - Keep paginated pages indexable. Save
noindexand robots.txt rules for sorted and filtered duplicates. - Back load more and infinite scroll with real paginated URLs that work when opened directly.
- Return 404 for out-of-range pages and empty filter combinations, and redirect
?page=1to the clean URL. - Audit by crawling through the series and checking whether items on deep pages get indexed.


