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:
-
Fetches the page: XeoPix requests the URL and checks that the response is HTML content.
-
Extracts the title: The system parses the raw HTML and extracts the text content of the
<title>tag from the head section. -
Normalizes the title: XeoPix cleans up the title by:
- Decoding HTML entities
- Collapsing extra whitespace
- Trimming leading/trailing spaces
-
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?
-
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
-
Audit your titles: Crawl your website to identify pages missing titles, duplicate titles, or titles outside the recommended length.
-
Create unique titles: Write a descriptive, unique title for each page that accurately describes its content.
-
Follow length guidelines: Aim for 50-60 characters to avoid truncation in search results while providing enough context.
-
Use templates wisely: If using CMS templates, ensure they generate unique titles for each page (e.g., include the page name or category).
-
Avoid duplication: Check that no two pages have exactly the same title tag.
-
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
| Field | Type | Description |
|---|---|---|
| title | String? | The page title tag content |
| titleIsUnique | Boolean? | 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
- Page has H1 tag — Page contains an
<h1>element. No issue should be reported.
Negative Test Cases
- No H1 tag — Page has no
<h1>element (only<h2>). The issue should be reported with message'No H1 heading found on the page'. - Starts with H2 without H1 — Page begins with an
<h2>heading without a preceding<h1>. The issue should be reported. - Body has no headings — Page body contains only non-heading elements (e.g.,
<p>). The issue should be reported.
Boundary Cases
None.
Edge Cases
- Headings in wrong order — Page starts with
<h2>without an<h1>first. This is treated as missing H1. - 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.messageis'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
Related Production Files
toggleGroups/pageSeoBasics.jsissueCodes.jsutils/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
- Title links — Google Search Central
- title element — MDN
- The title element — WHATWG