Meta Tags Done Right — Title, Description, Canonical, Robots
Four tags every page has — and almost everyone maintains badly
Title, meta description, canonical, robots meta. Four short tags in the <head> that together decide whether a page makes it into the index, which variant wins, how it looks in search, and whether it gets clicked. In practice you still see the same patterns everywhere: title tags Google has long since rewritten, descriptions nobody refreshes, canonicals that contradict themselves, and noindex tags left in templates by accident.
This article sorts the four tags out cleanly: what they do, what Google actually uses them for, where they get ignored, and which pitfalls are so common they almost feel like a market on their own. After reading, you’ll know which tags you must maintain, which you can leave alone, and how to spot when something in the setup is broken.
Core mechanics — who does what
Title tag
<title> in the <head>. The title has two jobs at once: it’s the primary snippet element in search (the blue clickable line) and it’s a ranking factor. Google weighs the topical match between title and query relatively heavily — the title is one of the few signals coming directly from the document instead of from links or user behavior.
Important: Google rewrites titles regularly. Studies from 2021–2024 show rewrite rates between 30% and 60% of served snippets. This happens mainly with overlong titles, keyword stuffing, pure brand titles without topical signal, and titles that don’t match the visible H1. If you see a rewritten version in Search Console’s queries report, that’s not a bug — it’s a hint that your own title would have performed worse for that query.
Meta description
<meta name="description" content="…">. The description is not a ranking factor. It’s only used as a snippet suggestion below the title — and not even reliably. For roughly half of all queries Google generates the snippet dynamically from the page body, depending on the query. So your description is mostly a default Google falls back to when it doesn’t find a better excerpt.
That doesn’t mean it’s irrelevant. Where it does show up, it influences click-through rate. It tends to survive on brand and long-tail queries; on mid- and short-head queries it often gets replaced. A hand-written description makes sense for the ten to fifty most important pages — the rest can run on a template or stay empty. Empty doesn’t hurt.
Canonical tag
<link rel="canonical" href="…"> in the <head>. The canonical tells Google: if you consider this page and another one essentially the same, please put this one in the index. It solves the duplicate-content problem caused by URL parameters (tracking, sorting, filters), www vs. non-www, trailing-slash variants, and pagination.
Four points are widely misunderstood:
- Canonical is a hint, not a command. Google can ignore it if signals contradict (e.g., when the canonical URL receives no internal links but the duplicates do). A “Google-selected canonical differs” warning in Search Console is the typical symptom.
- Self-canonical is normal and correct. Even a page without duplicates should self-canonical — that wipes out tracking-parameter and crawler-variant noise in one stroke.
- Never point to a 301 target or a 404. Canonical chains are a well-known anti-pattern. Always point to the final URL returning 200 OK.
- Not for pagination. Pages 2/3/4 should not canonicalize to page 1 — that pulls their content out of the index. Correct is self-canonical per pagination page.
Robots meta tag
<meta name="robots" content="…">. The strongest lever in indexing behavior. Common values:
index, follow(default — doesn’t need to be set).noindex— page may be crawled but should not appear in the index. Classic for filter pages, tag aggregators with thin content, internal search-result pages, login areas.nofollow— links on the page get no weight. Applies to the whole page. Rarely useful —nofollowis more of a per-link attribute.noindex, follow— don’t index the page but follow its links. Used to be the standard for tag pages; John Mueller has stated Google effectively treats it likenoindex, nofollowover time, because the page leaves the index anyway and its link power decays with it. Still common in practice — the difference is small.
Robots meta works on HTML pages. For non-HTML (PDFs, images) X-Robots-Tag as an HTTP header is the equivalent.
Pitfalls — where setups fail repeatedly
Title too long or unfocused
Google renders 50 to 65 characters in search depending on layout. Anything longer gets truncated (”…”) or rewritten. Working with 95-character titles means letting Google choose. Cleaner: core keyword within the first 50 characters, brand at the end, separated by — or |.
Equally typical: the title and the visible H1 are wildly different. Google often reads that as a mismatch and replaces the title with the H1 — sometimes with worse results. Title and H1 may vary (H1 freer, title compact with brand), but the core message has to match.
Same description on every page or empty
If 200 pages share an identical description (often the template default), Google treats it as missing and generates one anyway. Leaving it empty is actually more consistent — and makes it clearer that the snippet comes dynamically. Hand-written descriptions pay off on pages where CTR maps to revenue: landing pages, service pages, top blog posts.
Canonical pointing at the wrong variant
Classic in multi-domain or HTTPS-migration setups: all canonicals still point at the old http://www. variant although the site runs on https://. Google sometimes follows the canonical, sometimes doesn’t — the result is an indexing mess that only shows up if you check Search Console regularly. Run an audit, every single canonical URL must return 200 and match the intended live URL.
Another typical mistake: cross-domain canonical to a foreign domain even though the content is editorially different. This happens in multi-brand shops and regularly causes one brand not to rank — Google indexes the canonicalized domain instead.
noindex accidentally still active
The most dramatic mistake on the list: a staging version goes live with <meta name="robots" content="noindex"> carried over from the template. Three weeks later somebody notices visibility is in free fall. Fix: remove the tag, submit the sitemap, use Search Console “Inspect URL” → “Request indexing”. Full recovery takes weeks, sometimes months.
Countermeasure: a pre-live check in the deploy workflow that tests every production page for an unintended noindex. On every build, not “sometimes”.
Multiple <title> or robots tags per page
Templates, CMS plugins, and layout layers often emit conflicting tags. If your main layout sets a title and the plugin sets another, browsers pick by order, crawlers sometimes by heuristic. Clean: exactly one <title>, exactly one <meta name="robots">. View-source and a crawler audit (Screaming Frog, Sitebulb) surface duplicates immediately.
Levers — maintaining the four tags as a system
Title system, not title lottery
Define a title template per page type:
- Blog article:
<Article title> — <Brand> - Service page:
<Service> | <USP hook> — <Brand>(e.g., “SEO consulting | strategy and execution — Brand”) - Glossary/lexicon:
<Term>: <short hook> — <Brand> - Home:
<Brand> — <one-liner>
Important: core keyword sits up front, brand at the end. Templates cover the long tail automatically; the most important ten to thirty pages get hand-written titles. This split scales better than “every page manually”. Templates only work as long as their inputs are clean — Brand — Brand as the result is also a lottery prize.
Description system with priority classes
Three classes cover most sites:
- Class A (hand-written): home, every service page, every revenue landing page, the top 30 blog posts. Written once, with a clear hook and a call hint (“Compare now”, “Explained in 5 minutes”). 140–155 characters.
- Class B (templated): blog posts, glossary, lexicon entries. Template from the first paragraph or a lead field. Acceptable.
- Class C (empty/automatic): filter pages, tag aggregators, pagination. Don’t set description, let Google generate. Saves maintenance.
Sites that keep class A under ten pages can sustain it for years. Sites that define five hundred “important” pages don’t maintain any of them in the long run.
Canonical rules in the build
Canonical is better set by convention in the layout than per page by hand. Three rules that fit almost any site:
- Self-canonical everywhere, generated from the current URL minus tracking parameters (
utm_*,gclid,fbclid). - Pagination self-canonical — no canonicalization to page 1.
- Language variants separate — DE page canonicalizes to the DE URL, EN to the EN URL. The link between languages runs via
hreflang, notcanonical.
In modern frameworks (Astro, Next.js, Hugo) that’s three lines of logic in the layout. Built once cleanly, rarely touched again.
Robots meta defensive, not active
Robots meta often gets used as a “what else can we exclude?” tool. Cleaner is the opposite logic: default to index, follow (i.e., no tag), and only use noindex where there’s a real reason:
- Login, account, order-status pages
- Internal search-result pages
- Filter combinations with thin-content risk
- Tag aggregators with fewer than ten attached items
Everything else stays in the index. Excluding too much “to be safe” silently costs visibility — noindex pages don’t show up in standard audit tools, because they’re correctly out of the index.
Reference table — what Google does with each
| Tag | Ranking factor | Snippet use | Indexing effect | Often ignored when |
|---|---|---|---|---|
| title | yes | primary title of the snippet | indirect (via CTR) | too long, keyword-stuffed, mismatched with H1 |
| meta description | no | snippet default, frequently overridden | none | same description across many pages, empty, irrelevant to query |
| link rel=canonical | no | none | strong (index selection) | contradicting signals (sitemap points elsewhere, internal links don’t follow it, canonical points at 3xx/4xx) |
| meta robots noindex | no | none | hard (page out of index) | almost never — noindex is binding |
Practice — three setups walked through
Setup 1: Mid-sized blog, no clear system
Inventory: 80 articles, titles follow no pattern, some with brand, some without, descriptions partially CMS-auto-generated (often awkward openings). Visibility okay, CTR below industry benchmarks.
Approach: define a template rule for all blog titles (<Article> — <Brand>), run through all 80 articles once manually, optimize each to 50–60 characters. Sort descriptions into two classes — top 20 hand-written, the rest from the lead paragraph. Effort: two to three working days. Expected: CTR gain of one to three percentage points within four to eight weeks, often more on the hand-written top pages.
Setup 2: Shop with parameter chaos
Inventory: product lists with URL parameters for sort, filter, tracking. Search Console reports hundreds of “Duplicate without user-selected canonical” and “Google-selected canonical differs”. Crawl budget is sunk into filter variants.
Approach: set canonical per product list to the unparameterized base URL. Filter combinations that should not become landing pages also get noindex. Tracking parameters (utm_*, gclid) get absorbed via canonical. Clean up the sitemap — no parameter URLs in it. After four to eight weeks: crawl budget redistributes to indexable pages, Search Console reports calm down. Same logic applies to print versions, AMP leftovers, and PDF duplicates.
Setup 3: Relaunch, new URL structure
Inventory: full relaunch, 600 old URLs mapping to 400 new ones, canonicals and redirect setup fresh. Risk: Google follows either the redirect or the canonical — if they contradict, it’s a gamble.
Approach: strict 301 redirect from old to new URL. On the new page, self-canonical to itself (not back to the old URL). No canonical chain layered on top of the redirect chain. Sitemap only with the new URLs. Submit “Change of Address” in Search Console. Check the indexing report daily for the first four weeks — a page accidentally canonicalized back to its old URL loses rankings silently.
Read Search Console regularly
The “Pages” report in Google Search Console reliably surfaces canonical issues, noindex problems, and title-detection trouble — “Google-selected canonical differs”, “Indexed, though blocked by robots.txt”, “Duplicate without user-selected canonical”. Two minutes a week catches roughly 80 percent of real indexing problems early.
FAQ
- Title on topical updates, otherwise leave it. Description on noticeably weak CTR (Search Console comparing ranking vs. CTR per query). Seasonal tweaks for campaign landing pages are the exception, not the rule.
- No. noindex belongs in the meta tag (or as an X-Robots-Tag header). Robots.txt controls crawling, not indexing — a page blocked in robots.txt can still be indexed if other pages link to it. It then shows up without a snippet ("Indexed, though blocked by robots.txt").
- hreflang defines language variants, canonical defines the canonical version within one language. Each language variant is self-canonical; all language variants link to each other via hreflang. Cross-language canonical is always wrong.
- Check first whether the rewritten version actually performs worse — often it doesn't. If yes: shorten the title (under 60 characters), core keyword to the front, reduce brand, align with the H1. If Google keeps rewriting, the signal usually is: the written version doesn't match the query.
- No. <meta name="keywords"> was publicly ruled out as a ranking signal by Google in 2009 and has been pure effort with no effect ever since. Other search engines ignore it as well or weight it marginally at best.
How often should I update titles and descriptions?
Should I also put noindex in robots.txt?
How do hreflang and canonical relate?
What if Google rewrites my title?
Do I need meta keywords?
Conclusion
The four tags are tools with different hardness: title and description steer visibility and click; canonical and robots meta steer indexing. Keeping all four clean wins nothing spectacular — keeping them sloppy measurably costs reach and crawl budget.
The clean order for most sites: set robots meta defensively first (don’t exclude too eagerly), then centralize canonical rules in the layout (self-canonical, parameter-stripped, language-aware), then define a title template per page type, then hand-write the top thirty descriptions. Everything else runs on a template — and that’s intent, not laziness. Sites that try to maintain every page by hand maintain none of them long-term.
All of this lives inside a larger content architecture with topic clusters: clarify the topical structure first, tags second. The other way around you fix symptoms on pages whose job isn’t defined yet.
Entdecke mehr
Canonical Tag
The canonical tag (`rel="canonical"`) is an HTML element telling search engines the preferred URL for a page — central to avoiding duplicate-content issues.
LexikonMeta Tags Done Right — Title, Description, Canonical, Robots and Friends
Title, description, canonical, robots, hreflang and Open Graph woven together — how HTML head tags become real ranking and click levers.
NewsAI Overviews now appear in 48% of SERPs — organic CTR collapses by 61%
AI Overviews appear on 48% of Google SERPs. Organic CTR underneath drops by 61%. What publishers and brands should do right now.