# Pagination is handled with proper SEO signals

- **Pattern:** `ab-001685` (`marketing-advanced-seo.technical-seo.pagination-handling`)
- **Severity:** medium
- **Lifecycle:** active
- **Last modified:** 2026-04-18
- **Canonical URL:** https://auditbuffet.com/patterns/ab-001685
- **License:** CC-BY-4.0 — attribute to AuditBuffet Pattern Catalog (https://auditbuffet.com/patterns/ab-001685)

## Why it matters

Canonicalizing every paginated page to page 1 instructs Google to drop pages 2+ from its index entirely, so deep archive content, older blog posts, and paginated product listings become invisible to search. Base URL and `?page=1` variants serving identical content without disambiguation split the signal between two URLs, and neither ranks as well as a single consolidated URL would.

## Severity rationale

Medium because the defect deindexes deeper paginated content but does not affect the first page's rankings.

## Remediation

Give every paginated page a self-referencing canonical — page 2 canonicals to its own URL, not page 1 — so each page is independently indexable. Redirect the `?page=1` variant to the base URL, or canonical both to the same form, so you never serve identical content from two URLs.

```tsx
// app/blog/page.tsx
export const metadata = { alternates: { canonical: `https://yoursite.com/blog?page=${page}` } }
```

## Detection

- **ID:** `pagination-handling`
- **Severity:** `medium`
- **What to look for:** Count all paginated routes. Enumerate which use rel=next/prev, canonical to page 1, or no pagination signals. Detect paginated routes by looking for route patterns with page parameters (`/blog/page/[page]`, `?page=N`), or components that render pagination UI (prev/next links, page number navigation). For detected pagination, check: (1) each paginated page has a canonical pointing to itself (not to page 1), (2) the first page (`/blog`) has a canonical pointing to itself (not `/blog/page/1`), (3) if using query string pagination, canonical tags handle the parameter consistently. Note: Google deprecated rel=prev/next in 2019; self-referencing canonicals are the current best practice.
- **Pass criteria:** Paginated pages have self-referencing canonical tags. The base page URL and the first page variant either redirect to a canonical form or have canonical tags that align. At least 90% of paginated routes should have proper pagination signals.
- **Fail criteria:** All paginated pages share the same canonical as the first page (pointing to page 1). OR the base URL and `?page=1` variant both serve identical content with no canonical disambiguation.
- **Skip (N/A) when:** No paginated routes detected in the project.

- **Cross-reference:** For crawl budget efficiency with pagination, see `crawl-budget-efficiency`.
- **Detail on fail:** `"Pagination detected but all paginated pages (/blog?page=2, ?page=3) have canonical pointing to /blog (page 1). This instructs search engines to ignore all paginated content beyond the first page."`
- **Remediation:** Each paginated page contains unique content and should be independently indexable. Use self-referencing canonicals: each page at `/blog/page/2` should canonical to `https://yoursite.com/blog/page/2`, not to the first page. Ensure the base URL (`/blog`) and the first-page variant (`/blog/page/1`) resolve to the same canonical URL — either redirect one to the other, or give both a canonical pointing to the same URL form.

  ```tsx
  // app/blog/page.tsx — pagination metadata
  export const metadata = { other: { 'rel-next': '/blog?page=2', 'rel-prev': page > 1 ? '/blog?page=' + (page-1) : undefined } }
  ```

Taxons: findability

HTML version: https://auditbuffet.com/patterns/ab-001685
