HTML Meta Tags for SEO- A Complete Guide


meta tag seo

Only a handful of HTML meta tags still matter for SEO. Google uses the title and meta description to build search snippets (and often rewrites both), the robots tag to decide whether a page is indexed, and canonical / social tags to pick a URL and control how shares look. The old keywords meta tag is unused. A default WordPress install still does not output a unique description per post — that is why people still land on this guide.

This is the 2026 refresh of that guide. Same topic, same URL, updated against how search and WordPress actually work now: which tags to write, which to skip, where they live in Yoast / Rank Math / SEOPress, and how to find the posts that still have empty titles or descriptions across a whole site.

What are meta tags?

A meta tag is an HTML element in the <head> that describes the page to browsers and crawlers. Visitors do not see it on the page. Search engines, social networks, and accessibility tools do.

View any page, right-click, choose View Page Source, and look near the top. You will see a mix of true <meta> tags, a <title>, and often a <link rel="canonical">. People call all of that “meta tags.” Strictly, only <meta> is a meta tag. Title and canonical are different elements that do the same job of describing the page, so they belong in this guide.

Example of a description, which is a real meta tag:

<meta name="description" content="Which HTML meta tags Google still uses for snippets, indexing, and sharing — and which to skip." />

Core WordPress still does not invent a unique description for every post. The site tagline in Settings → General is one string for the whole site. That is the Codex point, and it is still true: if you want per-post metadata, you add a plugin (or write it into the theme yourself).

HTML source showing title, description, and other head tags

What still matters

Put effort here. Everything else in the head is either a share/snippet helper, a technical default, or leftover from 2010.

ElementRanking signal?What it actually does
<title>Yes — a real on-page relevance signal, and the default search titleNames the page. Google may rewrite it.
meta descriptionNoPreferred snippet text when it matches the query. Improves clicks when it is specific.
meta robotsNo (it is a directive)index / noindex, snippet controls. A mistaken noindex hides the page.
rel=canonicalNo (it is a hint)Points crawlers at the URL you want indexed when copies exist.
Open Graph / TwitterNoTitle, description, and image when the URL is shared.
JSON-LD schemaNot a ranking boost by itselfEligible rich results when the markup matches the content.
meta keywordsNo — Google has ignored it since 2009Skip it. Do not spend time on it.
H1Yes as on-page heading, not as a meta tagVisible heading. Not in the <head>. Covered here only because the old version of this post mixed it in.

If you only do three things: unique titles, unique descriptions that match the page, and no accidental noindex.

Title tag

Write a unique title that names the page in plain language. Put the distinctive part first. Keep it short enough that it is unlikely to truncate. Do not stuff keywords.

Syntax:

<title>HTML Meta Tags for SEO: What Still Matters | NetoTraffic</title>

The title is what browsers show in the tab, and what Google usually uses as the blue (or dark-mode) link in results — the title link. Google is also willing to replace it with an on-page heading, a brand name, or other text if it thinks your title is stuffed, truncated, or a poor match for the query.

Title tag shown in a browser tab

Title tag as it appears in search results

Length

There is no official character cap. Display is pixel-based. A practical target is about 50–60 characters (roughly 500–600 pixels). Older “70 characters or the Page Title Pixel Meter” advice is outdated — Google changed the display width years ago and rewrites titles often anyway.

Write the useful phrase first. If it runs long, the start is what people still see.

What to put in it

  • Describe this page, not the whole site.
  • Match the search intent: a how-to title for a how-to page, a product title for a product page.
  • One primary topic. Repeating the same keyword three times is how you get a rewrite.
  • Brand name at the end is the usual pattern: Page topic | Brand. Put the brand first only if people search the brand.
  • Write for humans. Stop words (“the”, “for”, “how”) are fine. Special characters such as |, :, or a number are fine. Clickbait that does not match the page is not.

Don’t

  • Reuse the same title on every post.
  • Leave the WordPress default Post title — Site name if the post title is vague (“Update”, “Tips”, the product name with no modifier).
  • Treat title tags as a place to dump every variant of a keyword.

In WordPress, set this in Yoast, Rank Math, or SEOPress on the post. That field writes the SEO title; it does not have to match the H1. For a published article whose title and snippet have gone stale, paste the live copy into the Meta/SEO Re-optimizer — it returns a refreshed title, meta description, and H2 outline without drafting a new post.

Meta description

Write a unique one- or two-sentence summary of this page. Aim for about 150–160 characters. Google does not rank pages by this tag. It often uses it as the snippet when the text matches the query — and it will replace yours with a page excerpt when it does not.

Syntax:

<meta name="description" content="Unique titles, descriptions, and robots tags still matter. Keywords do not. Here is how to set them in WordPress and find empty ones site-wide." />

That is the Codex’s other remaining point: Google may use the description as a snippet. An empty tag means Google always writes the snippet from the body. A duplicate tag means several URLs look identical in the results. A vague tag (“Welcome to our blog”) wastes the one line people read before they click.

How to write it

  • Say what the page is, then why it is worth opening. Specific beats clever.
  • Include the query naturally if it fits. Do not list keywords.
  • Match the page. If the description promises a downloadable template and the page has none, Google will swap the snippet and people who still click will bounce.
  • Product and category pages need a different sentence than blog posts. Do not inherit one site-wide template that only changes the product name if the rest of the sentence is filler.

Don’t

  • Leave it blank on purpose “so Google can write a better one.” You lose the default. Google can still override you; you should still supply a good candidate.
  • Copy the first paragraph of the post and call it done if that paragraph is an anecdote.
  • Use the same description on paginated archives, tag archives, and the posts inside them.

Empty descriptions are the most common library-level miss. Yoast and Rank Math only show the post you have open. If you want a count of every published URL with no description (or a title that is too long / too short), run the free NetoTraffic Content Suite scan — it is a site-wide audit, not a second SEO sidebar.

Meta robots

Leave indexable pages on the default (index, follow). Use noindex on thank-you pages, internal search, thin filters, and anything else you do not want in the results. Check this before you debug “why isn’t this ranking?”

Syntax:

<meta name="robots" content="index, follow" />
<meta name="robots" content="noindex, follow" />

Common directives:

  • index / noindex — may this URL appear in search results?
  • follow / nofollow — should crawlers use the links on this page? (Page-level. Individual links use rel="nofollow", sponsored, or ugc.)
  • noarchive — do not show a cached link.
  • nosnippet / max-snippet / max-image-preview — how much text or image Google may show in the result.
  • notranslate — do not offer a translation.

The default is index, follow. You do not need to print that tag. You do need to make sure a plugin, “hide this from search,” or a leftover staging setting has not printed noindex on the whole site.

Example of a URL that appears in Google search results

To confirm a URL is indexed, search site:yourdomain.com/exact-path/ or use URL Inspection in Search Console. If the HTML says noindex, fixing titles will not help.

WordPress: this lives in the SEO plugin’s robots / advanced tab per post, and in Settings for archives (categories, tags, author, date). noindex on author archives is often correct. noindex on every post is a disaster.

Canonical tag

Each indexable page should point canonical at itself (the URL you want in the index). Use a different canonical only when two URLs really are the same document.

This is a link tag, not a meta tag:

<link rel="canonical" href="https://netotraffic.com/on-page-seo/meta-tag-seo/" />

Search engines treat it as a strong hint: when HTTP vs HTTPS, www vs non-www, tracking parameters, or printer views duplicate a page, rank the canonical URL and consolidate signals there. See Google’s notes on duplicate URLs.

When you need it:

  • The same article is reachable with query strings (?utm_source=, sort orders, session IDs).
  • HTTP still resolves and is not redirected.
  • A partner republishes your article — they should canonical back to you (syndication).
  • You merged two posts: keep one live, 301 the other, and do not leave both canonical to themselves.

When you do not: a new post that is simply about the same topic as another post. That is overlap, not a duplicate URL. Canonical will not fix keyword cannibalization. Differentiate, merge, or redirect.

WordPress SEO plugins output a self-canonical on posts by default. Do not also hardcode one in header.php or you will ship two, and they will eventually disagree.

Keywords tag — skip it

Do not add <meta name="keywords">. Google has said it does not use this tag for ranking since 2009. Stuffing it was the abuse that killed it. Putting a clean list in there does not help, and a spammy list can only look bad.

The original version of this post already said that. It is still true. Bing does not give you a reason to maintain the tag either. If a client insists, it is a political problem, not an SEO one — do not build a process around it.

Keywords belong in the visible title, headings, and body, used the way a person would write. That is a different job from this tag.

Open Graph and X (Twitter) cards

Set a share title, a share description, and a dedicated image so Facebook, LinkedIn, Slack, and X do not grab a random paragraph and a tiny logo.

These tags are not ranking factors. They control the preview card. If you skip them, networks fall back to the HTML title, the meta description, and whatever image they find first.

Open Graph (Facebook, LinkedIn, most apps)

<meta property="og:title" content="HTML Meta Tags for SEO: What Still Matters" />
<meta property="og:description" content="Which tags Google still uses — and how to set them in WordPress." />
<meta property="og:url" content="https://netotraffic.com/on-page-seo/meta-tag-seo/" />
<meta property="og:type" content="article" />
<meta property="og:image" content="https://netotraffic.com/wp-content/uploads/2016/04/meta-tag.jpg" />

Use a real image URL (absolute, https, large enough — 1200×630 is the usual target). og:title can differ from the SEO title; the share does not have to be the SERP line.

Facebook Open Graph fields for title, type, image, URL, and description

X / Twitter cards

<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="HTML Meta Tags for SEO: What Still Matters" />
<meta name="twitter:description" content="Title, description, robots, canonical — what to write and what to skip." />
<meta name="twitter:image" content="https://netotraffic.com/wp-content/uploads/2016/04/meta-tag.jpg" />

summary_large_image is the usual card for articles. If OG is complete and Twitter tags are missing, X often reuses OG. Setting both avoids surprises.

Google+ is gone. Do not add publisher markup “for Google+.” Schema for rich results is JSON-LD, in the next section.

Debug with Meta Sharing Debugger and X Card Validator after you change an image — networks cache aggressively.

JSON-LD is not a meta tag — still use it when it fits

Structured data is a <script type="application/ld+json"> block (or microdata on visible HTML). It is not a meta tag. It is how you become eligible for rich results: FAQ, HowTo, Article, Product, Review, and so on. Google will not show a rich result just because the JSON is valid; the page has to match.

The old Structured Data Testing Tool is retired. Use Google’s Rich Results Test and the Schema Markup Validator.

Example of review rich results in search

Do not fake reviews or FAQ markup that is not on the page. For a longer walkthrough of snippets and markup, see how to increase organic traffic. For titles and descriptions that nobody clicks, the CTR section in ranking without links is still the right next read — rewrite the snippet before you assume you need more backlinks.

Other tags worth knowing

hreflang

If you publish the same content in more than one language or country, hreflang tells Google which version to show. It is <link rel="alternate" hreflang="…">, not a meta tag. Self-referencing hreflang on every variant, plus an x-default, is the usual pattern. Skip it on a single-language site.

charset and viewport

These are not ranking toys. They are page defaults:

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

WordPress themes already output them. Do not add a second charset. Do not remove viewport; mobile-unfriendly pages still have a bad time in search.

http-equiv content-language

Prefer a real lang attribute on <html> (<html lang="en">) and hreflang for language versions. Bing’s old “meta language information” reports are not a reason to maintain http-equiv="content-language" by hand.

H1 — visible heading, not metadata

The H1 is on the page. Search engines weight headings. Use one clear H1 that matches the topic. Extra H2–H6s outline the rest. Do not treat H1 as a second title tag you can stuff because “there is no character limit.” Write the heading a person would scan.

WordPress: what the Codex got right, and what to do now

The Codex article on meta tags still holds on the mechanics:

  • A default WordPress install does not output unique description (or keywords) per post.
  • Putting one description in header.php makes every URL look the same.
  • bloginfo('description') is the site tagline, not the post excerpt.
  • Per-post metadata belongs in a plugin (or custom fields you actually maintain).
  • Keywords are not a Google ranking input. Descriptions can become snippets. Content still matters more than any tag.

What has changed since that Codex page was written: nobody should be pasting a 12-line generic keywords block into header.php. Use an SEO plugin for titles, descriptions, robots, canonical, and Open Graph. Yoast SEO, Rank Math, and SEOPress all do that job in the editor. All in One SEO does too; this site’s audit plugin can read AIOSEO but only writes Yoast / Rank Math / SEOPress fields.

The plugin sidebar solves the post you have open. It does not tell you that 40 published posts have no description, that five titles are clones, or that a staging noindex leaked onto a live template. That is a library problem.

NetoTraffic Content Suite (the current name; it used to be called Content Health) is the free WordPress plugin for that scan. One run over the local database: missing or weak meta descriptions, title-tag length issues, thin and stale URLs, orphans, alt text, heading structure, and overlapping topics. You get a Content Health score and a fix-first shortlist. No account for the audit. If you later paste a netotraffic.com API key, optional AI can write descriptions and titles into the SEO plugin you already use — not a competing custom field — with undo.

That is the practical answer to the Codex’s “use a plugin” section in 2026: one plugin to write tags on the post (Yoast / Rank Math / SEOPress), and a site-wide audit when you want to see every empty one at once.

Tools to write and check metadata

You do not need a stack of Chrome extensions. Use the editor, one audit, and Google’s own testers.

  • Write or refresh one article — SEO plugin fields on the post. For an already-published URL, the Meta/SEO Re-optimizer in the AI SEO Content Toolkit returns a new title, meta description, and outline. Credits are the same balance as traffic orders. It does not auto-publish; you paste.
  • Find every empty or weak tagContent Suite site-wide scan. Free. Local database. Optional AI only if you add a key.
  • Confirm what Google sees — Search Console URL Inspection, Rich Results Test.
  • Confirm shares — Meta Sharing Debugger, X Card Validator.
  • View source — still the fastest way to see whether two plugins are printing two titles.

If you are deciding whether to audit the library or generate a new draft first, that split is written up as Content Suite vs the writing toolkit on the product page (audit finds the backlog; the toolkit clears a chosen URL).

Checklist

  • Unique <title> on every indexable URL. Distinctive words first. Brand at the end unless the query is the brand.
  • Unique meta description that actually summarizes this page. Empty is worse than a plain sentence.
  • No site-wide noindex. noindex only on URLs you truly want out of the index.
  • Self-canonical on the live URL. One canonical, from the SEO plugin, not a second copy in the theme.
  • No keywords meta tag.
  • OG + Twitter image that is large enough and relevant. Featured image is fine if it is not a logo on a blank canvas.
  • JSON-LD only for types the page really contains.
  • WordPress: SEO plugin for per-post tags; Content Suite when you want a site-wide missing-meta list; Re-optimizer when one live article needs a new title and snippet.

The infographic below is from the first version of this guide. The tag names still match. Ignore any “70-character title” or pixel-meter note on it — display width and title rewrites have moved on.

Infographic summarizing HTML meta tags for SEO

Common questions

Does WordPress add meta tags automatically?

No unique per-post description or keywords. Core prints a title (post title plus site name, depending on the theme). Unique descriptions, robots, canonical, and Open Graph come from an SEO plugin or custom theme code. That is unchanged from the Codex.

Do meta tags still matter for Google?

Title: yes. Description: for snippets and clicks, not as a ranking score. Robots and canonical: yes, as directives/hints. Keywords: no.

Is the H1 a meta tag?

No. It is a visible heading. Keep one clear H1. It is not a substitute for the title tag, and stuffing it does not replace a missing description.

Should I still use meta keywords for Bing?

No. Do not maintain the tag. If a page ranks on Bing, it is not because of that element.

Why did Google change my title in the results?

It thought another heading or a more specific phrase matched the query better, or that your title was stuffed, boilerplate, or truncated. Write a clearer title; you cannot force the old string to display.

How do I find every WordPress post with no meta description?

Do not open them one by one. Run the free Content Suite audit and open the missing-meta card. Fix in the SEO plugin, or use optional AI into those same fields if you paste a key.

What is the fastest way to refresh title and description on one old article?

Paste it into the Meta/SEO Re-optimizer, then copy the new title and description into Rank Math / Yoast / SEOPress. Keep the URL. Update the post date only if the body changed enough to deserve it.

Can two plugins print meta tags at once?

Yes, and Google will see a mess. One SEO plugin. Disable “meta injection” on leftover plugins. View source and search for <title> and name="description" — each should appear once.

0
    0
    Your Cart
    Your cart is emptyReturn to Shop
    Scroll to Top