# Pagination

Pagination is a list split over several pages, such as ?page=2 or /page/2/. Here is what changed in 2019, how to set it up per page, and how to handle view-all and infinite scroll on a small site.

Updated 2026-09-14 · Source: https://porteur.ai/glossary/pagination

## What changed in 2019

Google stopped using rel=next and rel=prev in 2019. It now treats each paginated page as its own URL. That means page two, three and four must stand on their own.

Do not point every page to page one with a canonical. That hides the rest from indexing. Each page needs a self-referencing canonical.

## The correct setup per page

1. **Give each page a stable URL** Use a clean pattern like /blog?page=2 or /category/widgets/page/3/. Avoid changing the order or count on every load.
2. **Use a self-referencing canonical** On /blog?page=2 the canonical is /blog?page=2. The same rule for every page in the sequence.
3. **Link pages together with real links** Add Previous and Next links as normal <a> elements. Also link to key page numbers, for example 1, 2, 3, 10, Last, to aid crawling.
4. **Keep items reachable outside pagination** Link items from categories, tags, related items and sitemaps. Do not rely on page depth alone for discovery.
5. **Set titles and headings clearly** For example: Title, Blog page 2 of 5. H1, Blog. Include the page number so searchers know what they will open.

A good page looks like /blog?page=3 with its own title, a self-canonical, links to page 2 and 4, and item cards linking to detail pages.

> Rule: never canonicalise paginated parts to page one.

## View-all pages: when to use

If a list is short, offer a single view-all page. Canonicalise the parts to the view-all. This gives one strong URL that can rank for the head term.

Do not use view-all when the list is long or heavy. It can slow to load and hurt Core Web Vitals. Keep to paginated parts in that case.

## Infinite scroll that Google can crawl

Infinite scroll is fine for users, but Google needs paginated URLs behind it. Build server-rendered pages for page 2, 3 and so on, and map the scroll positions to them.

- Update the URL as the user scrolls to match the underlying page, for example pushState to /blog?page=3
- Expose the same items at the same offsets on the paginated URLs
- Make sure the Next and Previous links exist in the HTML, not only via JavaScript

## How to check and measure

- Pick three sequences to audit, for example /blog, /changelog, /category/widgets
- Open page 2 and 3 of each, check the canonical points to itself
- Use View Source to confirm real <a> links for Previous, Next and numbered links
- In Search Console, inspect /page/2 and /page/3 URLs to see if they are indexed
- Check that items linked on page 3 are also reachable from their categories or sitemaps
- Watch crawl stats for spikes if you add many new pages at once

## Questions

### Should paginated pages be indexable or noindex?

Indexable. Google treats each page as its own URL. If you set noindex on parts you risk hiding items deeper in the list from normal crawling. Keep them indexable with self-referencing canonicals and good internal links.

### Do I still need rel=next and rel=prev for SEO?

No. As of 2019 Google does not use rel=next or rel=prev. You can keep them for users or other systems, but they do not affect how Google treats pagination.

### What is a simple pagination example for a blog?

/blog lists the newest posts. /blog?page=2 shows the next set. Each page has its own title like Blog page 2 of 5, a self-canonical to itself, and links to page 1 and 3. Every post is also linked from its category and the XML sitemap.

### How does pagination differ from lazy loading?

Pagination splits content across distinct URLs. Lazy loading keeps one URL and loads more items on scroll. For SEO, lazy loading alone is not enough, you still need crawlable paginated URLs behind any infinite scroll.

### When should I use a view-all page?

Use view-all when the full list is short and fast to load. Canonicalise the parts to the view-all. Skip it when the list is long, where a huge page can slow down and harm Core Web Vitals.

### Will pagination waste crawl budget on a small site?

On a small site, it is rarely a problem. Keep sequences short, ensure important items are linked outside pagination, and provide sitemaps. That keeps discovery reliable without deep crawl loops.

## Read next

- [Canonical tags: what they do and the mistakes that cost rankings](https://porteur.ai/guides/canonical-tag): What a canonical tag does, when to use one, the mistakes that cost rankings, and how to check and fix canonicals on a small site.
- [Alternate page with proper canonical tag: what Search Console means](https://porteur.ai/guides/alternate-page-with-proper-canonical-tag): What this Search Console status means, when to ignore it, when it hides the wrong page, and the exact checks and fixes to set the right canonical.
- [Internal linking for a small site: which pages link to which](https://porteur.ai/guides/internal-linking-for-seo): Decide which pages rank. Build hubs, write clear anchors, fix orphans, and crawl your site to map links you control.
- [URL parameters](https://porteur.ai/glossary/url-parameters): URL parameters are key=value after a question mark. Handle them to avoid duplicate pages, index bloat and wasted crawl, and to keep clean rankings.
- [Click depth](https://porteur.ai/glossary/click-depth): Click depth is the clicks from home to a page. Keep key pages within three clicks. Learn how to measure it and cut depth without spammy links.
- [Orphan pages: finding the pages nothing links to](https://porteur.ai/guides/orphan-pages): Find orphan pages on your site, why they happen, how to compare crawl, sitemap and Search Console, and what to do: link, merge, redirect or remove.

Want a quick check on your pagination and internal links, run your URL and get three concrete findings in about thirty seconds, free. Free check: https://porteur.ai/
