Skip to content
← All articles

Title and Meta Description Tags: How to Write and Check Them

In short. The title tag is the document heading: it is a ranking signal, it labels the browser tab, and it usually becomes the clickable headline in search results. The meta description does not affect ranking directly — it is the text under the link, and its only job is clicks. Search engines rewrite both whenever they see fit. Your job is to supply a unique, query-relevant, untruncated version for every page.

Diagram showing the title tag from the head section flowing into the browser tab, the search result headline and ranking signals, while the meta description flows only into snippet text
Where the title tag goes, and where the meta description goes

What the title and meta description actually are, and why they differ

Both tags live inside <head> and are invisible on the page itself, yet they do different jobs. Confusing them causes about half of all meta-tag mistakes.

title — the document heading

The <title> element is required by the HTML specification: a document without it is formally invalid. It has three roles:

  • Ranking. It is one of the few text elements where words carry extra weight. Not a magic switch, but a direct statement of what the page is about.
  • Browser tabs and bookmarks. The first 25–40 characters are all a person sees in a narrow tab. Hence the rule: meaning goes first.
  • Search result headline. The blue clickable line usually comes from the title — but it is under no obligation to match it.

meta description — snippet copy

The <meta name="description" content="…"> tag is the caption below your link in search results. It has no direct ranking effect; both Google and Yandex have stated this plainly for years. The indirect effect is real and goes through behaviour: a good description raises your share of clicks, and click behaviour is itself a signal.

The practical takeaway: write the title for the query and the algorithm, and the description for a human choosing between ten blue links. Two different jobs — and putting identical text in both solves neither.

How long should a title and description be? Count pixels, not characters

Search engines truncate by rendered width in a specific font, not by character count. A capitalised "W" is far wider than a lowercase "i", so 60 characters in caps get cut earlier than 70 lowercase ones. That leads to two caveats without which any number is misleading:

  • Truncation points move. Search engines redesign result pages regularly, and "canonical" numbers go stale.
  • Width depends on device and query: mobile shows more lines but each is narrower, and for long queries the engine sometimes displays a longer fragment.

Working reference points are ranges, not exact values:

ElementApproximate widthRoughly in characters (Latin)What to do
title, desktoparound 550–600 pxroughly 55–65fit the core idea into the first 45–50 characters
title, mobileusually narrower than desktoproughly 50–60keep the brand at the end — it is expendable
description, desktoparound 900–1000 pxroughly 150–170put the point in the first sentence
description, mobilemore lines, each narrowerroughly 120–140 visibledo not rely on a second sentence

The better way to check length is not a character counter but the rendered result: look at how your listing appears for the target query. If the ellipsis eats your brand name, that is fine. If it eats the meaning, rewrite.

Do not stretch text to the upper limit. A precise 40-character title beats one padded to 70 where the last 20 characters are filler added "for length".

How to write a title: the formula and the anti-patterns

A formula that holds up in practice:

[primary query] + [qualifier or benefit] + [brand]

The rules that follow from it:

  • Primary keyword near the start. Not literally the first word at any cost, but within the first third of the line.
  • One page, one primary query. Secondary variants belong in the h1, subheadings and body text.
  • The qualifier is what decides the click. Location, turnaround, price "from", format ("online", "in 5 minutes", "PDF"), volume ("12 templates").
  • Brand at the end, behind a separator. Dash, pipe or colon — any of them, as long as it is consistent site-wide. On the home page the brand may lead.
  • Human language. A person reads the title in the results, not a parser.

Anti-patterns

  • Listing cities. "Windows in Boston, Austin, Denver, Seattle" dilutes relevance for every one of those queries and reads as spam. Locations belong on separate pages.
  • Keyword stuffing. "Buy windows cheap windows pvc windows price windows buy" is over-optimisation, and the engine will almost certainly rewrite such a headline.
  • The same title on every page. The most expensive mistake: pages compete with each other and the engine has nothing to tell them apart by.
  • "Home", "Catalog", "Page 2". Zero meaning, zero click appeal.
  • CMS defaults. "My Site", "Home", "Untitled Document" sitting in the index signals an abandoned project.
  • ALL CAPS and emoji. Caps eat width; emoji are usually stripped on display.

Writing a description people actually click

The description does not rank, so its only metric is click-through. What genuinely moves it:

  • Specifics instead of promises. "Quote in 3 minutes from your measurements" beats "best prices and top quality".
  • Numbers. Deadlines, counts, ranges, update year. Digits catch the eye inside a wall of text.
  • Difference from the neighbours. Open the results page and write what the first five entries do not say.
  • Words from the query. Matches get bolded — a free visual accent. Naturally, though, not stuffed.
  • An action at the end. "Check your domain", "Download the template", "Compare plans" — no exclamation marks.
  • Nothing the page cannot deliver. A mismatch means a bounce and a wasted click.

Listings and product pages: generate from a template

Hand-written descriptions for tens of thousands of catalogue pages are impossible and unnecessary. The working approach is a template with field substitution and empty-value guards:

  • Build the template from data you already trust: name, category, key attribute, availability, price range.
  • If a field is empty, switch off that branch of the template entirely instead of shipping "price from " with a hole in it.
  • Trim the result on a word boundary, not on a character.
  • Important pages — home, top categories, landing pages — still get hand-written copy.

An empty description is better than a bad one, but worse than a templated one. With no tag, the engine assembles a fragment from page text — sometimes well, sometimes from a breadcrumb trail and a chunk of the navigation menu.

Diagram of the headline formula — primary query, qualifier and brand — next to a list of anti-patterns such as listing cities, keyword stuffing and identical headings
The title formula and the usual anti-patterns

Why search engines rewrite your title and description

Both Google and Yandex regularly display something other than what your tags say. That is neither a bug nor a penalty. Typical reasons:

  • The headline is too long, too short, or does not answer the specific query.
  • The title is stuffed, repetitive, lists locations, or is an obvious CMS template.
  • The title is identical across a group of pages, so the engine takes distinguishing text from the page itself — h1, breadcrumbs, product name.
  • The query is narrow and the page contains a more precise passage, so the snippet is built from that passage.
  • For descriptions: the tag is empty, duplicated site-wide, or contains none of the query words.

Fighting the rewrite is pointless — there is no reliable way to forbid it. What works instead:

  • Make the title unique and meaningful, so there is nothing left to improve on.
  • Remove noise: repeated prefixes, internal labels, the brand crammed into every line.
  • Give the page a clear h1 and an opening paragraph the engine would be happy to show in place of your description.
  • Look at what the engine substitutes: it is often a hint about which query it considers primary for that page.

Google and Yandex in brief

Google is the more aggressive rewriter, frequently swapping in the h1 or anchor text pointing at the page; this is documented officially in the guides on how title links are generated and on snippets. Yandex more often assembles the description from page text when the tag does not match the query, and is noticeably sensitive to stuffed headlines. The practical conclusion is the same either way: a relevant, unique title and a human description satisfy both engines, and tuning separately "for Google" or "for Yandex" does not pay for itself.

title, h1 and description: how they should differ

Three texts, three jobs. Copying one into another devalues all three.

ElementWho sees itJobLength
titlesearch results, browser tab, default share textcarry the query and a reason to clickshorter, includes the brand
h1the visitor who already opened the pageconfirm they landed where they intendedslightly longer and more natural, no brand
descriptionsearch results onlyremove the last objection before the clickone or two sentences

A good habit: make the h1 a fuller phrasing of the same idea as the title, minus the brand and minus the "cheap, buy now" language. An exact title/h1 match is not an error, but it is a wasted chance to capture a second phrasing of the query.

Title and description templates by page type

Page typeTitle templateDescription templateWhat to avoid
Home Brand — what you do, for whom, where One sentence on the offer, one on what makes it different, then an action "Home", "Welcome", a bare brand name with no explanation
Category / listing Category + qualifier + count or "prices" + brand What is in the selection, parameter range, delivery or lead times Duplicates across filter URLs, "Product catalog", listing every subcategory
Product page Name + key attribute + SKU where useful + brand Attribute-driven template: purpose, key spec, availability, warranty Identical text on every product, the word "buy" five times
Article / blog The reader's core question + format ("guide", "checklist") What the reader will learn and be able to do afterwards Clickbait with no payoff, a section name instead of a topic
Contact Contact + brand + city Address, hours and contact channels in one line "Contacts" with no brand, a duplicate of the About page
Location / branch page Service in location + qualifier + brand Local specifics: address, service radius, local turnaround One text with the place name swapped across hundreds of pages
Pagination and filters Base title + page marker or filter value Usually unnecessary — let the engine assemble it A full duplicate of page one, indexing every filter combination

One caveat about pagination and filters: meta tags do not fix duplication if those URLs should never be indexed in the first place. That belongs at the level of robots.txt and canonical tags, not phrasing.

A correct head block, annotated

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <title>SSL Certificate Checker — Chain and Expiry | Enterno</title>
  <meta name="description" content="Check any domain certificate: expiry date, chain completeness, supported protocols and common errors. Results in seconds, no sign-up required.">

  <link rel="canonical" href="https://example.com/ssl/">

  <meta property="og:type" content="website">
  <meta property="og:url" content="https://example.com/ssl/">
  <meta property="og:title" content="SSL Certificate Checker">
  <meta property="og:description" content="Expiry, chain, protocols and common errors — in seconds.">
  <meta property="og:image" content="https://example.com/assets/og/ssl.png">
</head>

What matters here:

  • Every tag sits inside <head>, before any content block.
  • The charset is declared first; otherwise non-Latin characters in the title can arrive mangled.
  • The canonical URL is absolute and uses the same scheme as the live address. Mixing http and https here is a common source of duplicates — see the breakdown of how HTTPS affects SEO.
  • The og tags mirror the meaning but need not match word for word: social platforms display in a different context.

How to view the title and description — yours and a competitor's

One page, in the browser

  • Page source: Ctrl+U (or Cmd+Alt+U on macOS) opens view-source:; search for description.
  • DevTools: the Elements panel, head node. Key difference: DevTools shows the DOM after scripts run, while view-source shows the raw HTML the server sent. If the tags are injected by JavaScript, this is exactly where you will see the gap.
  • Quick glance: the browser tab label is the title, truncated to tab width.

From the command line

# title and description of a single page
curl -sL -A "Mozilla/5.0" https://example.com/ \
  | grep -iEo '<title>[^<]*</title>|<meta[^>]+name="description"[^>]*>'

# title text only, portable variant with sed
curl -sL https://example.com/ \
  | tr -d '\n' \
  | sed -n 's/.*<[Tt][Ii][Tt][Ll][Ee]>\(.*\)<\/[Tt][Ii][Tt][Ll][Ee]>.*/\1/p'

# title length in characters (not pixels, but enough to spot the giants)
curl -sL https://example.com/ \
  | tr -d '\n' \
  | sed -n 's/.*<title>\(.*\)<\/title>.*/\1/p' \
  | wc -m

# walk a list of URLs
while read -r u; do
  t=$(curl -sL --max-time 15 "$u" | tr -d '\n' \
      | sed -n 's/.*<title>\(.*\)<\/title>.*/\1/p')
  printf '%s\t%s\n' "$u" "$t"
done < urls.txt

The -L flag is mandatory: without it you get the empty body of a redirect instead of the final page. If the site serves different content per User-Agent, pass a realistic one with -A. Status codes and response headers are easier to inspect separately — curl -sI or the HTTP header checker.

At scale — with a crawler

Beyond a couple of dozen pages, manual checking is pointless. You need a full crawl exported as a table of "URL — title — description — length — h1", then a hunt for duplicates and blanks:

# duplicate titles in a crawler export (CSV, ';' separated: url;title;description)
awk -F';' 'NF>1 {c[$2]++; u[$2]=u[$2]" "$1}
           END {for (t in c) if (c[t] > 1) printf "%d\t%s\n", c[t], t}' meta.csv \
  | sort -rn | head -20

# pages with an empty description
awk -F';' '$3 == "" {print $1}' meta.csv | head -40

# suspiciously long titles (rough character threshold)
awk -F';' 'length($2) > 75 {printf "%d\t%s\n", length($2), $1}' meta.csv | sort -rn

A competitor's tags

No magic here: someone else's tags are read exactly the same ways — page source, curl, crawler. The useful move is not to copy their phrasing but to collect the headlines of the top ten results for your query into one list and look for what every one of them repeats (that is the mandatory part of the meaning) and what none of them says (that is your differentiator). While you are there, note how many of them show their own title versus a rewritten one.

Diagram of four ways to inspect meta tags: page source, developer tools panel, a command line request and a full crawl exported to a table
Four ways to inspect meta tags, from one page to a whole site

Common technical mistakes

  • Duplicate titles. One headline across hundreds of pages. Found by grouping repeats in a crawl export — see the command above.
  • Missing or empty description. Not fatal, but you have handed control of the snippet to the engine.
  • Tag outside head. A <meta name="description"> that ends up in <body> — common when inserted through a visual editor or a widget — is ignored.
  • Typographic quotes in attributes. Text pasted from a word processor arrives with curly quotes: <meta name=“description” content=“…”>. A parser does not treat a curly quote as an attribute delimiter, so the tag breaks entirely and sometimes swallows the ones after it. Attributes accept straight quotes only; curly quotes inside the description text are perfectly fine.
  • An unclosed quote or a stray > inside content. Same effect: part of the head turns into garbage.
  • CMS default headings. "Home page", "Untitled", "New post" sitting in the index.
  • Different titles on / and /index.php. A classic on sites where the home page answers on two addresses: two pages, same content, different headline. Fixed with a redirect and a canonical, not by rewriting tags.
  • Two title or two description tags on one page. Usually a clash between the theme and an SEO module. The engine takes the first one, but predictability suffers.
  • Tags injected only by script. Unreliable: if rendering is slow or fails, the page can be indexed with the original empty heading.
  • Line breaks and stray whitespace inside content. Not critical, but it breaks automated comparison and inflates the length.
  • A title longer than one and a half lines. Not a markup error, but a guaranteed ellipsis in the results.

If a page does not appear in search at all, the problem is almost never the title wording — check indexing and accessibility first; that has its own breakdown: why your site is not in search results.

meta keywords is dead

The <meta name="keywords"> tag was meant as an honest author-supplied topic list. It was stuffed immediately, and no major search engine has used it for ranking in a very long time. Practical advice: leave it empty. Keeping it filled is actively unhelpful — a neatly curated keyword list is a ready-made map of your semantics for any competitor who opens the page source.

Open Graph is a separate system

The og:title, og:description and og:image tags are defined by the Open Graph protocol and drive link previews in messengers and social feeds. Key facts:

  • Search results do not take text from og:description. Different channels: og is for sharing, meta description is for the snippet.
  • If og:title and og:description are absent, platforms usually fall back to <title> and <meta name="description">. So it "works anyway" — but with no control over the image or the length.
  • Social length limits are their own and tighter than search: a long og title gets clipped inside the card.
  • Setup is covered separately: Open Graph — configuring link previews.

A third layer is structured data. It does not replace the title and description, but it adds ratings, prices, breadcrumbs and other enhancements to the snippet. How that works is covered in the pieces on structured data and on validating Schema.org markup.

How to check

Work from "the whole site" down to "one page":

  • Bulk audit of meta tags and structure. Crawl the site and export titles, descriptions, h1s, lengths and repeats — site SEO audit. That is where your lists of duplicates, blanks and overlong headlines come from.
  • Queries behind the title. Before phrasing a headline you need to know how people actually ask: collecting and weighing queries — keyword research.
  • Raw response headers. Confirm you are looking at the page itself and not a redirect or an error: HTTP header check. It also shows the charset and the status code.
  • Social preview. How the link renders when shared, and why og tags are separate from the meta description — see the Open Graph guide.
  • Order of work. If meta tags are part of a larger clean-up, follow the SEO audit checklist: indexing and accessibility come before phrasing.
Diagram of a search result row with headline, URL and description, next to three sources — the title tag, the meta description and page text — that the engine assembles the snippet from
What a snippet is assembled from, and which parts you control

Frequently asked questions

Does the meta description affect ranking?

Not directly, and both major search engines have confirmed that. It matters indirectly through click-through: a result people click more often earns better behavioural signals. So optimise the description for humans, not for algorithms.

What if the search engine still shows its own headline?

First find out what it is showing. If it substitutes the h1 or a product name, your title was judged less relevant to the query. Strip out stuffing, repetition and a bloated brand suffix, and add the phrasing from the query. There is no guaranteed way to block the substitution, and that is reasonable: the engine picks per query, and a page has many queries.

Do paginated pages need distinct titles?

Exact duplicates are bad. Adding a page marker to the base headline is enough. More often, though, the right fix is at the indexing level: if paginated pages should not appear in results, no title will help them.

How many characters should a title and description have?

Characters are a rough proxy for pixels. Aim at roughly 55–65 characters for a title and 150–170 for a description, but verify against real search results: wide letters and caps get cut earlier. The rule that always holds is to put the substance in the first half of the line.

Can the same text serve as title, h1 and description?

Technically yes, practically it is a loss. Three fields are three chances to capture different phrasings and different objections. Full duplication also raises the odds that the snippet gets assembled for you.

Should I fill in meta keywords?

No. It does not improve ranking, and it shows competitors your semantics. If the tag is already on every page, removing it is not urgent — but maintaining it is pointless.

Checklist

  • Every indexable page has its own title, and no title repeats across the site.
  • The primary query sits in the first third of the title; the brand is at the end behind a consistent separator.
  • Title length stays around 55–65 characters, with the substance in the first 45–50.
  • No city lists, no caps, no repeated keywords, no headings like "Home".
  • The description is filled on every meaningful page; catalogue pages use a template with empty-field guards.
  • Descriptions carry specifics, numbers and query words — and no promises the page cannot keep.
  • Title, h1 and description use different phrasings.
  • Both tags live inside head, quotes are straight, charset is declared first.
  • Exactly one title and one description per page, served by the server rather than only by a script.
  • The home page answers on a single address; the canonical is absolute and matches the live scheme.
  • meta keywords is left empty; og tags are configured separately from the description.

Check your website right now

Audit your site's SEO →
More articles: SEO
SEO
Website Migration Checklist: Avoid SEO and Downtime Pitfalls
16.03.2026 · 401 views
SEO
Sitemap XML: Structure, Limits, Generation and Validation
16.03.2026 · 362 views
SEO
robots.txt Guide: Syntax, Rules, Testing and Ready-Made Files
16.03.2026 · 337 views
SEO
Subdomain vs Subdirectory for SEO: Which Structure Wins?
16.03.2026 · 302 views