squirrelscan
GitHub

Pagination canonicals: why page 2 is not page 1

Canonicalizing every paginated page to page 1 hides the rest of the sequence. squirrel detects paginated URLs and checks where their canonical points.

What pagination canonicals are

A paginated listing splits one set of items across several URLs. Each of those URLs holds different items, so each is a distinct page rather than a duplicate of the first.

Pointing every page’s canonical at page 1 tells search engines the rest do not exist as separate documents, which is how items that only appear on page 4 stop being discovered. The correct arrangement is a self-referencing canonical on each page. The rel="next" and rel="prev" link relations describe the sequence; Google stopped using them as an indexing signal in 2019, and they remain valid HTML that other clients may read.

What squirrel checks

The rule runs on every crawled page. A page counts as paginated when its URL carries a page, p, pg, offset or start query parameter, or when its path ends in /page/<number>. It also looks for link[rel="next"] and link[rel="prev"] in the head. For a URL that answers with an HTTP redirect, the URL tested, and the base a relative canonical resolves against, is the one the redirect ended on, since that is the page whose tags are read. The crawled URL is used when no HTTP redirect was observed, when any hop was a client-side one (JavaScript or meta refresh), or when the final URL does not parse.

  • Skipped when the page is neither paginated nor carrying pagination links. Message: Page does not appear to be paginated.
  • pagination-canonical warns when a paginated page has a canonical that is not itself paginated. Message: Paginated page canonicalizes to non-paginated URL, with the value Page 3 → https://example.com/blog. It passes otherwise with Paginated page has appropriate canonical. The first page of a list is exempt: ?page=1, an empty or 0 page value, ?offset=0, ?start=0 or /page/1 holds the same content as the unpaginated URL, so a canonical pointing at that URL (the same path and other query parameters, without the page marker) is correct and passes. A first page canonicalizing anywhere else still warns. This check only runs when a canonical tag is present.
  • pagination-links reports info when rel="next" or rel="prev" is present. Message: Pagination links present, with prev, next as the value.
  • pagination-links reports info when the page is paginated with neither link. Message: No rel=next/prev links (optional).

Severity is info and the weight is 4, so this rule surfaces the pattern rather than penalising it.

How to fix it

<link rel="canonical" href="https://example.com/blog?page=3" />
<link rel="prev" href="https://example.com/blog?page=2" />
<link rel="next" href="https://example.com/blog?page=4" />

Give each paginated URL a canonical that points at itself. Make sure the items on each page are reachable by a crawler without JavaScript, and consider a view-all page as the canonical target only when it genuinely lists everything.

A filtered listing whose parameters happen to include p or start is treated as paginated by the URL test. Disable the rule for those routes if the canonical is deliberate.

Rule IDcrawl/pagination
CategoryCrawlability
ScopePer-page
Severityinfo
Weight4/10

Enable / disable

Disable this rule

[rules]
disable = ["crawl/pagination"]

Disable all Crawlability rules

[rules]
disable = ["crawl/*"]

Enable only this rule

[rules]
enable = ["crawl/pagination"]

enable replaces the default ["*"], so this is the only rule selected. Leave disable out: a rule that matches any disable pattern is skipped even when enable names it. Only an enabled setting under a rule’s own [rule_options] table overrides both lists.

Crawlability findings ship in every audit next to the SEO, performance and agent experience rules. See The Screaming Frog alternative for agents for how an agent works through a report.

References

Check your site

Run squirrel audit https://example.com and open the Crawlability section of the report. Every paginated page is listed with where its canonical points. Signed-out local audits need no account and cost nothing. Signed-in audits spend credits.

Type to search…

↑↓ navigate↵ openesc close