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:
-
Fetches the page: XeoPix requests the URL and checks the HTML response.
-
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)
- URL patterns (like
-
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
- Canonical URL from
-
Evaluates completeness: The system checks if paginated pages have:
- At least a canonical tag, OR
- Rel=“next” and/or rel=“prev” signals
-
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
-
Identify paginated pages: Ensure your pagination URL patterns are consistent (e.g.,
/page/2/,?page=2, etc.). -
Add canonical tags: Include a canonical tag on each paginated page pointing to the preferred URL for that page.
-
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/" /> -
Ensure valid URLs: Make sure all pagination URLs are valid and accessible.
-
Keep navigation crawlable: Ensure pagination links are in standard HTML
<a>tags that search engines can follow. -
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
| Field | Type | Description |
|---|---|---|
| paginationNext | String? | URL specified in rel=“next” pagination link |
| paginationPrev | String? | 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
- Single meta description tag — Page has exactly one
<meta name="description">tag. No issue should be reported. - Empty head — Page has an empty
<head>section with no meta description tags. No issue should be reported.
Negative Test Cases
- Two duplicate meta description tags — Page has two
<meta name="description">tags. The issue should be reported withduplicateElementscontaining{ element: 'meta-description', count: 2 }. - Three or more duplicate meta description tags — Page has three
<meta name="description">tags. The issue should be reported withcount: 3for themeta-descriptionelement.
Boundary Cases
None.
Edge Cases
- Empty head — A page with no
<head>content should not trigger a false positive. - 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
duplicateElementsarray contains the correctelementandcountvalues formeta-description - Verifies detection works for 2 and 3+ duplicate meta description tags
- Verifies empty head does not produce false positives
Related Production Files
toggleGroups/pageSeoBasics.jsissueCodes.jsutils/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 (
duplicateElementsarray withmeta-descriptionelement)
References
- Consolidate duplicate URLs — Google Search Central
- Pagination with rel=next and rel=prev — Google Search Central
- Link Types — WHATWG