Skip to Content

Paginated pages missing rel=next and rel=prev

What Is This Issue

This issue checks whether paginated pages have proper pagination signals and canonical tags so search engines can understand the relationship between sequence pages.

For paginated pages to pass this check:

  • The page must be correctly identified as paginated (through URL patterns like /page/2/ or pagination navigation elements)
  • The page should have at least one of the following:
    • A canonical tag
    • Rel=“next” and/or rel=“prev” link tags
  • Pagination URLs should be valid and properly formatted

Example: If you have a blog with multiple pages (/blog/page/1/, /blog/page/2/, etc.), each page should include pagination signals so search engines understand they’re part of a sequence.

Why Is This Important

Proper pagination markup is important for:

  • Crawlability: Clear pagination signals help search engines discover and crawl all pages in a sequence
  • Indexability: Canonical tags on paginated pages prevent indexing confusion
  • User experience: Well-structured pagination helps both users and search engines navigate through content

When paginated pages lack proper signals, search engines may:

  • Have difficulty understanding the relationship between pages
  • Index pages inconsistently
  • Miss some pages in the sequence during crawling

Resolving this issue improves your SEO health score by ensuring search engines can properly navigate and understand your paginated content.

How XeoPix Detects This

XeoPix identifies pagination issues through these steps:

  1. Fetches the page: XeoPix requests the URL and checks the HTML response.

  2. Detects pagination: The system looks for evidence that the page is paginated:

    • URL patterns (like /page/2/, ?page=2, ?paged=2)
    • Pagination navigation elements in the HTML (next/prev links, numbered page links)
  3. Extracts signals: XeoPix extracts:

    • Canonical URL from <link rel="canonical">
    • Rel=“next” and rel=“prev” URLs from link tags
    • Pagination navigation links from the body
  4. Evaluates completeness: The system checks if paginated pages have:

    • At least a canonical tag, OR
    • Rel=“next” and/or rel=“prev” signals
  5. Flags issues: XeoPix triggers warnings when paginated pages lack these essential signals.

The detection uses only raw HTML—no JavaScript rendering is performed.

How To Fix

  1. Identify paginated pages: Ensure your pagination URL patterns are consistent (e.g., /page/2/, ?page=2, etc.).

  2. Add canonical tags: Include a canonical tag on each paginated page pointing to the preferred URL for that page.

  3. Use rel=“next” and rel=“prev”: Add these link tags in the head section to indicate the relationship between sequential pages:

    <link rel="prev" href="https://example.com/blog/page/1/" /> <link rel="next" href="https://example.com/blog/page/3/" />
  4. Ensure valid URLs: Make sure all pagination URLs are valid and accessible.

  5. Keep navigation crawlable: Ensure pagination links are in standard HTML <a> tags that search engines can follow.

  6. Test implementation: Crawl your paginated pages to verify that canonical tags and pagination signals are properly detected.

What We Store

Storage Level

Page Level — This issue is evaluated for each individual URL.


Database Table / Prisma Model

PageSeoBasicsData


Stored Fields

FieldTypeDescription
paginationNextString?URL specified in rel=“next” pagination link
paginationPrevString?URL specified in rel=“prev” pagination link

Detection Dependencies

  • The following data sources are required to evaluate this issue:
  • HTML Document — The crawler extracts <link rel="next"> and <link rel="prev"> tags from the HTML head

Examples

Example 1: Blog with proper pagination signals

Scenario: A blog with multiple pages that has proper pagination markup.

Passes because:

  • Each paginated page has a canonical tag
  • Rel=“next” and rel=“prev” tags are present
  • Pagination URLs are valid and accessible
<!-- On page /blog/page/2/ --> <link rel="canonical" href="https://example.com/blog/page/2/" /> <link rel="prev" href="https://example.com/blog/page/1/" /> <link rel="next" href="https://example.com/blog/page/3/" />

Example 2: Paginated page missing signals

Scenario: A paginated page that search engines cannot properly understand.

Fails because:

  • No canonical tag is present
  • No rel=“next” or rel=“prev” tags are present
  • Search engines may not understand the page relationship
<!-- On page /blog/page/2/ --> <!-- Missing canonical and pagination signals -->

Example 3: E-commerce category pages

Scenario: An e-commerce site with paginated category pages.

Passes because:

  • Each page has self-referencing canonical tags
  • Clear pagination navigation is present
  • URLs follow a consistent pattern
<!-- On page /shop/category/page/2/ --> <link rel="canonical" href="https://example.com/shop/category/page/2/" /> <link rel="prev" href="https://example.com/shop/category/" /> <link rel="next" href="https://example.com/shop/category/page/3/" />

Unit Test

Test File

__tests__/seo-audit-checks/pageSeoBasics/issue-13-duplicate-meta-description.test.js

Purpose

Validates that the SEO audit correctly detects pages with duplicate <meta name="description"> tags while allowing pages with a single meta description tag to pass.

Tested Function

runPageSeoBasics() from toggleGroups/pageSeoBasics.js

Issue Information

  • Issue Number: 13
  • Issue Code: NO_DUPLICATE_ELEMENTS (no_duplicate_elements)
  • Toggle Group: pageSeoBasics

Test Scenarios

Positive Test Cases

  1. Single meta description tag — Page has exactly one <meta name="description"> tag. No issue should be reported.
  2. Empty head — Page has an empty <head> section with no meta description tags. No issue should be reported.

Negative Test Cases

  1. Two duplicate meta description tags — Page has two <meta name="description"> tags. The issue should be reported with duplicateElements containing { element: 'meta-description', count: 2 }.
  2. Three or more duplicate meta description tags — Page has three <meta name="description"> tags. The issue should be reported with count: 3 for the meta-description element.

Boundary Cases

None.

Edge Cases

  1. Empty head — A page with no <head> content should not trigger a false positive.
  2. Three or more duplicates — Verifies the detection works for 3+ duplicate meta description tags, not just exactly 2.

Expected Outcome

Pass

The issue is not reported when the page has zero or one <meta name="description"> tag.

Fail

The issue is reported when the page has two or more <meta name="description"> tags.

Validation

  • Verifies correct issue detection for duplicate meta description tags
  • Verifies no issue is reported when there is a single meta description tag
  • Verifies the duplicateElements array contains the correct element and count values for meta-description
  • Verifies detection works for 2 and 3+ duplicate meta description tags
  • Verifies empty head does not produce false positives
  • toggleGroups/pageSeoBasics.js
  • issueCodes.js
  • utils/issues.js

Coverage Summary

  • Covers single meta description tag (pass)
  • Covers two duplicate meta description tags (fail)
  • Covers three duplicate meta description tags (fail)
  • Covers empty head (pass)
  • Validates payload structure (duplicateElements array with meta-description element)

References

Last updated on