---
title: "Missing title tag - Serpwise"
description: "Without a title element, search engines may generate a title from page text. Learn how to detect missing titles and write a clear, descriptive replacement."
url: "https://serpwise.ai/learn/missing-title-tag/"
source: "https://serpwise.ai/learn/missing-title-tag/"
---
[← Back to Learn](/learn/)

Page Metadata Warning

# Missing title tag

Without a title element, search engines may generate a title from page text. Learn how to detect missing titles and write a clear, descriptive replacement.

`<title>` names the page in the browser tab and is an important source for the title link shown in search. Social previews usually use Open Graph metadata instead. When the title is missing, Google may generate one from headings, prominent text, anchor text, or other page signals.

A generated title can be useful, but it gives the site less control over how the page is introduced. A concise, descriptive title is the clearest input you can provide.

## How to detect it

```
curl -s https://example.com/some/page \
  | grep -oE '<title>[^<]*</title>'
```

Empty output means missing. A `<title></title>` with no content is just as bad.

Google Search Console does not report missing titles directly. Crawl the HTML to find missing elements, then review important live results to see when Google selected a different title link.

## What a good title looks like

There is no fixed character limit. Write a concise title that describes the page, distinguishes it from other pages, and still makes sense if a search result shortens it.

Pattern: `Primary topic - Brand name` for content pages. `Primary topic | Brand` is equivalent. The separator doesn’t matter much.

Put the most specific page topic early so readers can identify the result quickly. Do this for clarity, not to meet a keyword-density formula.

Examples:

- Bad: `Home` → tells the reader nothing.
- Bad: `Welcome to Acme - The Best Software Company in the World` → generic marketing language, no clear page topic.
- Good: `Project management for engineering teams - Acme`.

## The fix

### Universal HTML

```
<head>
	<title>Project management for engineering teams - Acme</title>
</head>
```

Exactly one `<title>` per page, inside `<head>`, before any large block of `<script>` that could delay parsing.

### WordPress (Yoast / Rank Math)

Both plugins auto-generate titles using template variables: `%%title%% %%sep%% %%sitename%%`. Verify the template:

- **Yoast** → Search Appearance → Content types → set the title template for posts, pages, products.
- **Rank Math** → Titles & Meta → Posts/Pages → title format.

Override per-page in the post editor’s Yoast/Rank Math meta box.

If the template emits an empty title for any content type, that’s the bug to fix. The most common cause: a “title” custom field someone added but never populated.

### Shopify

Shopify ships titles via `{{ page_title }}` in `theme.liquid`:

```
<title>{{ page_title }}{% if current_tags %} - tagged "{{ current_tags | join: ', ' }}"{% endif %}{% if current_page != 1 %} - Page {{ current_page }}{% endif %}{% unless page_title contains shop.name %} - {{ shop.name }}{% endunless %}</title>
```

If pages have no title, check Online Store → Pages → individual page → SEO section → Page title.

### Next.js (App Router)

Use the metadata API:

```
// app/products/[slug]/page.tsx
export async function generateMetadata({
	params,
}: {
	params: { slug: string };
}): Promise<Metadata> {
	const product = await getProduct(params.slug);
	return {
		title: `${product.name} - Acme`,
	};
}
```

For a default template, set it in the root layout:

```
// app/layout.tsx
export const metadata: Metadata = {
	title: {
		default: "Acme - Project management for engineering teams",
		template: "%s - Acme",
	},
};
```

The `template` uses `%s` as a placeholder; child pages override `title` with just the page-specific portion.

### Static HTML

For multi-page static sites, generate titles at build time from a per-page front-matter field. Treat empty titles as a build error, not a warning.

## Pitfalls

**Don’t duplicate `<title>` across templates.** A theme that emits a title and a plugin that also emits a title gives you two titles. Google picks one - usually the wrong one. View source to confirm one tag per page.

**Don’t use the same title on every page.** Sitewide titles like “Acme - The Project Management Platform” on every URL cluster all pages into one signal. See the [duplicate titles guide](/learn/duplicate-title-tags).

**Don’t keyword-stuff.** “Project management software project management tool project planning software” is worse than a single clear phrase. Google rewrites obvious stuffing.

**Don’t lead with the brand on content pages.** “Acme - Project management for engineering teams” wastes the most-read pixels on a word the reader already saw next to your URL. Lead with the topic.

## Fix at the edge with Serpwise

When titles are missing from a section of the site you don’t fully control - a third-party blog under `/blog/`, a hosted help center, a CMS template behind a vendor lock - fixing the template can take weeks.

Serpwise can inject `<title>` based on URL patterns and page content: “for every `/products/*` URL, set the title to the first `<h1>` text + `- Acme`.” Apply across thousands of URLs in minutes; the proper template fix lands on its own schedule.

[See pricing](/pricing) or run a [free AI visibility audit](/audit).

From diagnosis to deployment

## Find the issue. Ship the fix.

Use Learn to understand the problem, then run Serpwise against your own site to see what can be approved and deployed.

[Run free audit](/audit/) [Book a demo](/demo/)