Pagination splits a long list, such as a blog archive, a product category or a set of search results, across several pages: page 1, page 2, page 3 and so on. It keeps pages small and fast for visitors. It also creates a crawling question. If a search engine cannot get from page 1 to page 12, it may never discover the items that only appear on page 12.
Good pagination SEO is mostly plain engineering. Each page needs its own address, each page needs real links to its neighbours, and your tags must not tell search engines to ignore pages you want them to read. This guide is for site owners, developers and content editors who run any kind of paged list. By the end you will know how to build paged URLs, link them, canonicalise them, handle sort and filter variants, and test that Google can follow the chain.
Pagination SEO does not make search engines index every page of a list. Google decides what to index based on quality and usefulness, and a correct setup only removes the technical blockers.
Before you begin
You will need:
- A list of the paginated sections of your site (blog archive, categories, tag pages, search results, forum threads).
- Access to the templates or code that print the page links, the
<head>tags and the sitemap. - A Google Search Console property for the site, so you can use the URL Inspection tool. See Set Up Google Search Console if you have not done this.
- About one hour for a small site. Larger sites should plan a test on one section first.
Risk is low if you change only links and tags, but a wrong canonical or noindex tag can remove pages from search results. Save a copy of the template before editing, and test on one section before rolling the change out everywhere.
How search engines treat paginated pages
Google's documentation on pagination and incremental loading says that Google generally finds new URLs by following <a> elements that have an href attribute. It does not click buttons or reliably run JavaScript that needs a user action. That one fact drives most of the advice below.
Google also treats each paginated URL as a separate page. It does not need unique titles or descriptions for every page in the sequence, because it tries to recognise sequences and can show the same title across them. The old rel="next" and rel="prev" link tags are no longer used by Google, although Google notes that other search engines may still use them. You can leave them in place if your platform adds them, but do not rely on them to get pages crawled.
Step-by-step instructions
Step 1: Give every page its own crawlable URL
Each page of the list must have a unique address that returns the same results every time it is requested. A query parameter works well:
https://example.com/blog/?page=2
https://example.com/blog/?page=3
A path also works:
https://example.com/blog/page/2/
Use an absolute page number, never something relative such as ?date=yesterday, because the same URL would show different content from one day to the next. Do not use a fragment (the part after #) for the page number, as in /blog/#page=2. Google ignores fragments, and a next-page link that differs only by a fragment may be skipped because the crawler assumes it has already fetched that page.
Page 1 should keep one preferred address. Decide whether it is /blog/ or /blog/?page=1, and redirect the other to it, so you do not create a duplicate of the first page. See Fix Duplicate URLs and Incorrect Canonical Tags for the redirect and canonical side of that choice.
What success looks like: you can paste the URL of page 3 into a fresh browser window and see page 3, and the address does not rely on a fragment or on cookies.
Step 2: Link the pages with real anchors
Print the links to other pages as ordinary anchors with a real href:
<nav aria-label="Pagination">
<a href="/blog/?page=1">First</a>
<a href="/blog/?page=2">Previous</a>
<span aria-current="page">3</span>
<a href="/blog/?page=4">Next</a>
</nav>
At a minimum, every page should link to the next page so the crawler can walk the whole sequence. Linking back to the previous page and to the first page also helps visitors. Google notes that linking every page in a collection back to the first page can hint that the first page is the better landing page for the collection.
A link that looks like <a href="#" onclick="loadPage(4)"> or a <button> that fetches the next page with JavaScript does not give a crawler a URL to follow. If your design uses a "Load more" button, keep a real link underneath it, as explained in Infinite Scroll SEO.
What success looks like: with JavaScript turned off in your browser, you can still click through from page 1 to the last page.
Step 3: Set a self-referencing canonical on each page
A canonical tag tells search engines which URL you consider the main version of a page. Google's pagination guidance says not to use the first page of a paginated sequence as the canonical page for the rest. Pages 2, 3 and 4 hold different items from page 1, so pointing them at page 1 tells Google to ignore the items they list.
Give each page its own canonical, written as an absolute URL:
<!-- in the <head> of https://example.com/blog/?page=3 -->
<link rel="canonical" href="https://example.com/blog/?page=3">
Check that your template builds this from the current page number and does not output the same canonical on every page. Pick one canonical method (the HTML tag or an HTTP header) and use it consistently.
What success looks like: viewing the source of two different pages in the sequence shows two different canonical URLs, each matching the page you are on.
Step 4: Keep sort and filter variants under control
Lists often offer sort orders and filters, such as ?page=2&order=price. Each combination creates another URL that shows mostly the same items. Google's guidance suggests two tools. You can add a noindex robots meta tag to the variants you do not want in search results, or you can discourage crawling of those URL patterns with robots.txt.
Choose one on purpose. If robots.txt blocks a URL, Google cannot read a noindex tag on it, so combining the two on the same URLs defeats the noindex. Keep the default, unsorted sequence crawlable and indexable. The detailed rules for filters are in Faceted Navigation and URL Parameters.
What success looks like: the default sequence (?page=2, ?page=3) is open to crawlers, and your chosen variants are either noindex or disallowed, but not both.
Step 5: Make the items discoverable another way
Pagination is one route to your content. Do not make it the only route. Important items should also appear in the XML sitemap and be linked from relevant pages, such as a category page or a related-article block. Sitemap entries should be canonical, absolute URLs. See How to Create a Valid XML Sitemap for the file rules.
A deep page in a long sequence takes many clicks to reach, so older items can be hard to find through pagination alone. Linking them from elsewhere shortens the path for both visitors and crawlers. The ideas in Internal Linking Strategy apply here.
What success looks like: a sample of items from the last pages of the list is also reachable from at least one other page and appears in your sitemap.
Step 6: Test with the URL Inspection tool
Open Search Console, paste the URL of a deep page such as ?page=8 into the URL Inspection tool and run a live test. Open the rendered HTML and confirm that the pagination links and the items appear. Check that the page is not blocked by robots.txt and that no noindex rule is found.
Repeat for the last page of the sequence and for a sort variant you meant to exclude. The excluded variant should report the rule you chose.
What success looks like: the live test fetches the page, the rendered HTML contains the next-page link and the items, and the indexing status matches your intent.
A note on titles, headings and thin pages
You do not need a unique title tag for every page, but a small label helps visitors who have several tabs open. A common pattern is to add the page number after the topic, for example "Running Shoes (Page 3)". Keep the main heading on the page describing the list, not repeating a long block of text on every page. If page 1 carries an introduction that pages 2 and later do not need, show it only on page 1 so the later pages are not near-copies of the first.
Do not create paginated pages that hold only one or two items because of an off-by-one error in your page size. A last page with a single item is not harmful on its own, but a template bug that generates many near-empty pages can waste crawling and look low quality.
Final verification checklist
- Every page of each list has its own URL that returns the same results on every request.
- Page numbers are not carried in a
#fragment. - Page 1 has one preferred address, and the alternate address redirects to it.
- Each page links to the next page with an
<a href>link that works without JavaScript. - Each page has a canonical tag pointing to itself, not to page 1.
- Sort and filter variants are either
noindexor disallowed in robots.txt, never both. - Important items from deep pages are in the sitemap and linked from another page.
- A live URL Inspection test of a deep page shows the links and items in the rendered HTML.
Common mistakes to avoid
- Canonical tags on every page pointing to page 1. This tells Google to treat pages 2 onward as copies of page 1. Give each page a self-referencing canonical.
- Fragment URLs for pages.
/blog/#page=3is not a separate page for Google. Switch to?page=3or/page/3/. - A "Next" button that is not a link. If it only runs JavaScript, crawlers get no URL. Use an anchor with an
href, or add one beside the button. - Noindex on pages 2 and later by default. Google drops a page with
noindexfrom its results, so the list pages you wanted to appear will not. Only use it on variants you truly do not want in search. - Blocking paginated URLs in robots.txt. A blocked page cannot pass the crawler on to the items it lists, and the block hides any
noindexor canonical tag on it. - Relative parameters.
?date=yesterdaychanges meaning every day, so the same URL stands for different content. Use absolute numbers. - Relying on
rel="next"andrel="prev". Google does not use them. Keep real links in the page body. - Forgetting the last pages in the sitemap. Deep items need another discovery path.
Frequently asked questions
Should I put all paginated pages in the sitemap?
You can list the paged URLs if you want them crawled, but the sitemap should mainly list the canonical pages you want in search results, such as the individual articles or products. Sitemaps are a hint, not a command, and they do not replace links between pages.
Is a "view all" page better than pagination?
Not automatically. A single huge page can be slow and heavy on mobile. Google's documentation describes the trade-offs of pagination, load more and infinite scroll, and says each has benefits and limits. Pick the pattern that works for your users and make sure each chunk still has a crawlable URL.
Do I need to remove rel="next" and rel="prev"?
No. They do no harm, and other search engines may still read them. Google just does not use them, so do not count on them for discovery.
Can paginated pages share the same title?
Yes. Google tries to recognise sequences, so repeated titles and descriptions are acceptable. Adding the page number is still a courtesy for people.
Why is page 2 not in the index even though the setup is correct?
Google chooses what to index, and a list page often has little unique value compared with the items it links to. A correct setup lets Google crawl the page. It does not oblige Google to index it. If the items themselves are not being indexed, read Crawled, Currently Not Indexed.
Related guides
- Infinite Scroll SEO: Make Endless Lists Crawlable With Real Links
- Faceted Navigation SEO: Stop Filters Creating Endless URLs
- Fix Duplicate URLs and Incorrect Canonical Tags
- Internal Linking Strategy: Link Your Pages for People and Crawlers
- How to Create a Valid XML Sitemap for Your Website
Official references
- https://developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading
- https://developers.google.com/search/docs/crawling-indexing/links-crawlable
- https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls
- https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap
Next step: See how Crawvix checks a website and capture a baseline once scanning opens. This guide provides technical information, not a guarantee of rankings, traffic or index inclusion.
Crawvix Editorial Team
· Published October 29, 2026 · Last updated October 29, 2026 · 9 min read