Skip to Content

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:

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

  2. Extracts the description: The system parses the raw HTML head section and extracts the content value of the <meta name="description"> tag.

  3. Normalizes the description: XeoPix cleans up the description by:

    • Decoding HTML entities
    • Collapsing extra whitespace
    • Trimming leading/trailing spaces
  4. 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?
  5. 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

  1. Audit your descriptions: Crawl your website to identify pages missing meta descriptions, duplicate descriptions, or descriptions outside the recommended length.

  2. Create unique descriptions: Write a compelling, unique meta description for each page that accurately summarizes its content.

  3. Follow length guidelines: Aim for 150-160 characters to provide enough context without truncation in search results.

  4. 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).

  5. Avoid duplication: Check that no two pages have exactly the same meta description.

  6. Make it compelling: Write descriptions that encourage users to click while accurately representing the page content.

  7. 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

FieldTypeDescription
metaDescriptionString?The meta description tag content
metaDescIsUniqueBoolean?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

  1. Valid heading hierarchy — Page has a proper heading sequence: <h1><h2><h3>. No issue should be reported.
  2. Only H1 — Page has only an <h1> with no other headings. No issue should be reported.
  3. All heading levels in sequence — Page has <h1> through <h6> in proper sequential order. No issue should be reported.

Negative Test Cases

  1. 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 a headingTree property.

Boundary Cases

  1. 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.message and details.headingTree are present
  • toggleGroups/pageSeoBasics.js
  • issueCodes.js
  • utils/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

Last updated on