Meta descriptions duplicated or outside the recommended length
What Is This Issue
This issue checks whether every page on your website has a unique, non-empty meta description that falls within the recommended length of 150-160 characters.
The meta description is the text that often appears below the page title in search engine results. For this check to pass:
- Every page must have exactly one meta description tag in the HTML head section
- Each description must be unique across all pages on the site
- The description should be between 150-160 characters long (recommended, not required)
- The description should not be empty or just whitespace
Example: A product page should have a unique description like “Discover our premium blue widgets with 5-year warranty. Free shipping on orders over $50. Order now!” rather than a generic “Welcome to our store” description used on every page.
Why Is This Important
Meta descriptions are important for:
- Rankings: While not a direct ranking factor, compelling descriptions improve click-through rates from search results
- User experience: Descriptions provide a preview of page content in search results, helping users decide whether to click
- AI Search / AEO: Clear, descriptive meta descriptions help AI systems understand your page content for answer generation
- Indexability: Unique descriptions help search engines understand that each page has distinct content
When meta descriptions are missing, duplicated, or poorly written, search engines may:
- Generate their own snippets from page content, which may not be optimal
- Display duplicate snippets for multiple pages
- Show truncated or irrelevant text in search results
- Reduce click-through rates due to unclear or generic descriptions
Resolving this issue improves your SEO health score by ensuring each page has a compelling, unique description in search results.
How XeoPix Detects This
XeoPix identifies meta description issues through these steps:
-
Fetches the page: XeoPix requests the URL and checks that the response is HTML content.
-
Extracts the description: The system parses the raw HTML head section and extracts the content value of the
<meta name="description">tag. -
Normalizes the description: XeoPix cleans up the description by:
- Decoding HTML entities
- Collapsing extra whitespace
- Trimming leading/trailing spaces
-
Checks for issues: The system evaluates:
- Is there exactly one meta description tag?
- Is the description non-empty?
- Is the description unique across all pages in the crawl?
- Is the description length within the recommended 150-160 character range?
-
Flags problems: XeoPix triggers issues when meta descriptions are missing, duplicated across multiple pages, or significantly outside the recommended length.
The detection uses only raw HTML—no JavaScript-rendered meta descriptions are considered.
How To Fix
-
Audit your descriptions: Crawl your website to identify pages missing meta descriptions, duplicate descriptions, or descriptions outside the recommended length.
-
Create unique descriptions: Write a compelling, unique meta description for each page that accurately summarizes its content.
-
Follow length guidelines: Aim for 150-160 characters to provide enough context without truncation in search results.
-
Use templates wisely: If using CMS templates, ensure they generate unique descriptions for each page (e.g., use product descriptions, category summaries, or page excerpts).
-
Avoid duplication: Check that no two pages have exactly the same meta description.
-
Make it compelling: Write descriptions that encourage users to click while accurately representing the page content.
-
Test your changes: Recrawl your site after making changes to verify all pages now have unique, properly formatted meta descriptions.
What We Store
Storage Level
Page Level — This issue is evaluated for each individual URL.
Database Table / Prisma Model
PageSeoBasicsData and PagePostCrawlComparison
Stored Fields
| Field | Type | Description |
|---|---|---|
| metaDescription | String? | The meta description tag content |
| metaDescIsUnique | Boolean? | Whether the meta description is unique across the site |
Detection Dependencies
- The following data sources are required to evaluate this issue:
- HTML Document — The crawler extracts the
<meta name="description">tag content - Page Post-Crawl Comparison — Requires data from all crawled pages to check for uniqueness across the site
Examples
Example 1: Good unique meta description
Scenario: A product page with a descriptive, unique meta description.
Passes because:
- Meta description is unique across the site
- Description accurately summarizes the page content
- Description length is within recommended range (150-160 chars)
<meta
name="description"
content="Discover our premium blue widgets with 5-year warranty. Free shipping on orders over $50. Order now and upgrade your setup today."
/>Example 2: Duplicate meta descriptions
Scenario: Multiple pages with the same meta description.
Fails because:
- Two different pages have exactly the same description
- Search engines can’t distinguish the pages in search results
- Users see identical snippets for different pages
<!-- On page /products/widgets -->
<meta
name="description"
content="Welcome to our store. We have great products."
/>
<!-- On page /services -->
<meta
name="description"
content="Welcome to our store. We have great products."
/>Corrected version:
<!-- On page /products/widgets -->
<meta
name="description"
content="Shop premium widgets with warranty. Free shipping on orders over $50. Find the perfect widget for your needs."
/>
<!-- On page /services -->
<meta
name="description"
content="Professional widget installation and maintenance services. Certified technicians. Book your appointment online today."
/>Example 3: Meta description too short or too long
Scenario: A page with a description that’s too short or gets truncated.
Fails because:
- Description is too short (less than 150 chars) and may not provide enough context
- Or description is too long (more than 160 chars) and gets truncated in search results
<!-- Too short -->
<meta name="description" content="Buy widgets." />
<!-- Too long (gets truncated in search results) -->
<meta
name="description"
content="Discover our premium blue widgets with 5-year warranty. Free shipping on orders over $50. Order now and upgrade your setup today. Available in multiple colors and sizes. Limited time offer."
/>Corrected version:
<meta
name="description"
content="Discover our premium blue widgets with 5-year warranty. Free shipping on orders over $50. Order now and upgrade your setup today."
/>Unit Test
Test File
__tests__/seo-audit-checks/pageSeoBasics/issue-40-heading-hierarchy.test.js
Purpose
Validates that the SEO audit correctly detects invalid heading hierarchies where heading levels are skipped (e.g., H1 directly to H3 without H2).
Tested Function
runPageSeoBasics() from toggleGroups/pageSeoBasics.js
Issue Information
- Issue Number: 40
- Issue Code:
H1_H6_HEADING(h1_h6_heading) - Toggle Group:
pageSeoBasics
Test Scenarios
Positive Test Cases
- Valid heading hierarchy — Page has a proper heading sequence:
<h1>→<h2>→<h3>. No issue should be reported. - Only H1 — Page has only an
<h1>with no other headings. No issue should be reported. - All heading levels in sequence — Page has
<h1>through<h6>in proper sequential order. No issue should be reported.
Negative Test Cases
- Skipped heading level — Page has
<h1>followed by<h3>(skipping H2). The issue should be reported with message'Heading hierarchy is invalid. Heading levels are skipped.'and aheadingTreeproperty.
Boundary Cases
- All heading levels in sequence — Verifies the full range of H1–H6 in sequence is accepted as valid.
Edge Cases
None.
Expected Outcome
Pass
The issue is not reported when heading levels follow a valid hierarchy (no levels are skipped; each heading is at the same or next level as the previous one).
Fail
The issue is reported when a heading level is skipped (e.g., H1 → H3 without H2).
Validation
- Verifies correct issue detection for skipped heading levels
- Verifies no issue is reported for valid heading hierarchies
- Verifies no issue is reported for a single H1 with no other headings
- Verifies no issue is reported for the full H1–H6 sequence
- Verifies the issue
details.messageanddetails.headingTreeare present
Related Production Files
toggleGroups/pageSeoBasics.jsissueCodes.jsutils/issues.js
Coverage Summary
- Covers valid heading hierarchy H1→H2→H3 (pass)
- Covers single H1 only (pass)
- Covers full H1→H2→H3→H4→H5→H6 sequence (pass)
- Covers skipped level H1→H3 (fail)
- Validates issue message and heading tree payload
References
- Snippet controls — Google Search Central
- meta name attribute — MDN
- The meta element — WHATWG