Skip to content
Browse all guides

Issue #300 · CRITICAL

This issue checks whether the page has a <title> tag in the HTML the server returned.

What is this issue?

This issue checks whether the page has a <title> tag in the HTML the server returned.

The title tag is the single most important piece of metadata on a page. It is what appears as the clickable headline in search results, as the browser tab label, and as the default text when someone shares the link. This check looks at the raw HTML response — before any JavaScript runs — because that is what a crawler sees first.

For this check to pass:

  • A <title> element must be present inside <head>
  • It must contain actual text, not be empty or whitespace only
  • It must be in the server's response, not injected later by client-side JavaScript

This check is only about presence. Whether the title is a sensible length is issue #302 and #303, and whether it is unique across the site is issue #39.

Example: When a crawler fetches your page it should immediately see <title>Wireless Noise-Cancelling Headphones | Acme Audio</title> in the HTML source.

Why does it matter?

A missing title tag affects:

  • Rankings: The title is a primary relevance signal. Without one, the search engine has nothing explicit to match a query against and must infer a subject from the body copy.
  • Click-through rate: Google composes a headline from whatever it can find — often the site name, a navigation label, or the first heading. That headline is rarely the pitch you would have written, and it is what decides whether anyone clicks.
  • Indexability: Pages without titles are harder for a crawler to tell apart. On a large site this contributes to duplicate-content consolidation, where several pages get collapsed into one result.
  • User experience: The browser tab falls back to the URL, which makes a page hard to find among a dozen open tabs.
  • AI Search / AEO: Answer engines lean heavily on the title to decide what a page is about before deciding whether to cite it.

Fixing this raises your SEO health score because the title is weighted as a critical page-level signal — a page that has one is described accurately everywhere it appears.

How to fix it

  1. Add a <title> element inside <head> on every page that returns HTML. This is the whole fix for most pages.

  2. Write it for the specific page, not the site. The title should describe what is on this page. A template like Primary Topic | Brand works well and keeps the brand visible without spending the whole line on it.

  3. Put the distinguishing words first. If the title is truncated, the end is what gets cut, so lead with the term someone would actually search for.

  4. Aim for 50-60 characters. Shorter wastes available space, longer gets truncated. See issues #302 and #303.

  5. Make sure it is server-rendered. If your framework sets the title on the client after hydration, the raw HTML will still have no title. Move title generation into whatever produces the server response, or pre-render the page.

  6. Keep it unique per page. Two pages sharing a title are hard for search engines to tell apart — see issue #39.

Examples

1. No title element at all

Problem — the <head> has metadata but no title:

<head>
  <meta charset="utf-8" />
  <meta name="description" content="Wireless headphones with active noise cancelling." />
</head>

Fixed:

<head>
  <meta charset="utf-8" />
  <title>Wireless Noise-Cancelling Headphones | Acme Audio</title>
  <meta name="description" content="Wireless headphones with active noise cancelling." />
</head>

2. Title set by JavaScript after load

Problem — the server sends an empty shell and the title appears only after hydration. The crawler sees nothing:

<head>
  <title></title>
</head>
<script>
  document.title = 'Wireless Noise-Cancelling Headphones | Acme Audio'
</script>

Fixed — the title is in the server response:

<head>
  <title>Wireless Noise-Cancelling Headphones | Acme Audio</title>
</head>

3. Whitespace-only title

Problem — the element exists, so a naive check passes, but there is no text:

<title>   </title>

Fixed:

<title>Wireless Noise-Cancelling Headphones | Acme Audio</title>

How PixyScan detects this

  1. Fetches the raw HTML. PixyScan requests the page and captures the server's response after following any redirects.

  2. Does not execute JavaScript. Only the HTML the server sent is analysed. This is deliberate — it reproduces what a crawler sees on first contact.

  3. Looks for the title. The document's <head> is parsed and the <title> element is read.

  4. Decides. The issue is raised when there is no <title> element at all, or when the element exists but contains only whitespace. A title that is present but the wrong length is not reported here; it is reported under issue #302 or #303, so that a page with a short title is never described as having no title.

References