Skip to Content

Title tags duplicated or outside the recommended length

What Is This Issue

This issue checks whether every page on your website has a unique, non-empty title tag that falls within the recommended length of 50-60 characters.

The title tag is the text that appears in search engine results as the clickable headline for a page. For this check to pass:

  • Every page must have exactly one title tag in the HTML head section
  • Each title must be unique across all pages on the site
  • The title should be between 50-60 characters long (recommended, not required)
  • The title should not be empty or just whitespace

Example: A page about “Blue Widgets” should have a unique title like “Blue Widgets - Premium Quality | Example Store” rather than a generic “Home” or a title duplicated from another page.

Why Is This Important

Title tags are critical for:

  • Rankings: Title tags are a primary ranking factor that tells search engines what the page is about
  • Indexability: Unique titles help search engines understand that each page has distinct content
  • User experience: Titles appear in search results and browser tabs, helping users identify and navigate to your content
  • AI Search / AEO: Clear, descriptive titles help AI systems understand your page content for answer generation

When title tags are missing, duplicated, or poorly written, search engines may:

  • Rewrite your titles in search results
  • Have difficulty understanding which pages are unique
  • Display generic or confusing titles in search results
  • Reduce click-through rates from search results

Resolving this issue improves your SEO health score by ensuring each page has a clear, unique identity in search results.

How XeoPix Detects This

XeoPix identifies title tag issues through these steps:

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

  2. Extracts the title: The system parses the raw HTML and extracts the text content of the <title> tag from the head section.

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

    • Decoding HTML entities
    • Collapsing extra whitespace
    • Trimming leading/trailing spaces
  4. Checks for issues: The system evaluates:

    • Is there exactly one title tag?
    • Is the title non-empty?
    • Is the title unique across all pages in the crawl?
    • Is the title length within the recommended 50-60 character range?
  5. Flags problems: XeoPix triggers issues when titles are missing, duplicated across multiple pages, or significantly outside the recommended length.

The detection uses only raw HTML—no JavaScript-rendered titles are considered.

How To Fix

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

  2. Create unique titles: Write a descriptive, unique title for each page that accurately describes its content.

  3. Follow length guidelines: Aim for 50-60 characters to avoid truncation in search results while providing enough context.

  4. Use templates wisely: If using CMS templates, ensure they generate unique titles for each page (e.g., include the page name or category).

  5. Avoid duplication: Check that no two pages have exactly the same title tag.

  6. Test your changes: Recrawl your site after making changes to verify all pages now have unique, properly formatted titles.

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
titleString?The page title tag content
titleIsUniqueBoolean?Whether the title is unique across the site

Detection Dependencies

  • The following data sources are required to evaluate this issue:
  • HTML Document — The crawler extracts the <title> tag content
  • Page Post-Crawl Comparison — Requires data from all crawled pages to check for uniqueness across the site

Examples

Example 1: Good unique title

Scenario: A product page with a descriptive, unique title.

Passes because:

  • Title is unique across the site
  • Title accurately describes the page content
  • Title length is within recommended range (50-60 chars)
<title>Blue Widgets - Premium Quality | Example Store</title>

Example 2: Duplicate titles

Scenario: Multiple pages with the same title tag.

Fails because:

  • Two different pages have exactly the same title
  • Search engines can’t distinguish the pages
  • Users see identical titles in search results
<!-- On page /products/widgets --> <title>Products | Example Store</title> <!-- On page /services --> <title>Products | Example Store</title>

Corrected version:

<!-- On page /products/widgets --> <title>Widgets - Premium Products | Example Store</title> <!-- On page /services --> <title>Our Services | Example Store</title>

Example 3: Title too short or too long

Scenario: A page with a title that’s too short or gets truncated.

Fails because:

  • Title is too short (less than 50 chars) and may be too generic
  • Or title is too long (more than 60 chars) and gets truncated in search results
<!-- Too short --> <title>Widgets</title> <!-- Too long (gets truncated in search results) --> <title> Blue Widgets - Premium Quality Industrial Grade Heavy Duty Long-Lasting Durable </title>

Corrected version:

<title>Blue Widgets - Premium Quality | Example Store</title>

Unit Test

Test File

__tests__/seo-audit-checks/pageSeoBasics/issue-39-h1-heading.test.js

Purpose

Validates that the SEO audit correctly detects pages that are missing an H1 heading while allowing pages with a properly placed H1 tag to pass.

Tested Function

runPageSeoBasics() from toggleGroups/pageSeoBasics.js

Issue Information

  • Issue Number: 39
  • Issue Code: H1_H6_HEADING (h1_h6_heading)
  • Toggle Group: pageSeoBasics

Test Scenarios

Positive Test Cases

  1. Page has H1 tag — Page contains an <h1> element. No issue should be reported.

Negative Test Cases

  1. No H1 tag — Page has no <h1> element (only <h2>). The issue should be reported with message 'No H1 heading found on the page'.
  2. Starts with H2 without H1 — Page begins with an <h2> heading without a preceding <h1>. The issue should be reported.
  3. Body has no headings — Page body contains only non-heading elements (e.g., <p>). The issue should be reported.

Boundary Cases

None.

Edge Cases

  1. Headings in wrong order — Page starts with <h2> without an <h1> first. This is treated as missing H1.
  2. Empty body — Page body with no headings at all still triggers the detection.

Expected Outcome

Pass

The issue is not reported when the page has at least one <h1> tag.

Fail

The issue is reported when the page has no <h1> tag, regardless of whether other heading levels exist.

Validation

  • Verifies correct issue detection when no H1 is present
  • Verifies no issue is reported when H1 is present
  • Verifies the issue details.message is 'No H1 heading found on the page'
  • Verifies detection works for pages with H2 but no H1
  • Verifies detection works for pages with no headings at all
  • toggleGroups/pageSeoBasics.js
  • issueCodes.js
  • utils/issues.js

Coverage Summary

  • Covers page with H1 (pass)
  • Covers page with H2 only (fail)
  • Covers page with H2 but no H1 (fail)
  • Covers page with no headings (fail)
  • Validates issue message in payload

References

Last updated on