Which Meta Tags Actually Matter, and Which Ones to Stop Shipping
Open the head of almost any site and you will find meta tags nobody has questioned in a decade. A keywords tag that no search engine has used since the 2000s. A revisit-after tag that never had a consumer. A rating tag copied from a template in 2011. They are harmless in isolation, but they crowd the head, they mislead the next developer who assumes they do something, and they are a reliable sign that the metadata was pasted rather than chosen.
This page is the opinionated reference I wanted when I started building the generators on this site: a verdict on each common tag, why it earns that verdict, and what to do instead. Where a claim can be traced to a primary source, I link it. Where a tag is merely conventional rather than specified, I say that too.
The verdict table
Every tag below is one you will find in real production heads today. The verdict column is the short answer; the reasoning follows.
| Tag | Verdict | Why |
|---|---|---|
| charset | Ship it, first | Prevents character corruption. Must appear in the first 1024 bytes of the document. |
| viewport | Ship it | Without it, mobile browsers render at a desktop width and shrink the result. |
| title element | Ship it | The single most important piece of on-page metadata for both search and browser tabs. |
| description | Ship it | Google may use it for the result snippet. It is not a ranking factor, but it drives clicks. |
| canonical (link) | Ship it when duplicates exist | Tells search engines which URL is authoritative, consolidating signals. |
| robots | Ship it deliberately | Page-level index control. Powerful and easy to get wrong. |
| og:title / og:image / og:url / og:type | Ship it | Controls how shared links render. Required by the Open Graph protocol. |
| Twitter card tags | Ship the summary tags only | Largely falls back to Open Graph; only add what differs. |
| theme-color | Optional polish | Tints browser UI on supported devices. Harmless, cosmetic. |
| keywords | Stop shipping | Google confirmed it does not use this tag for ranking. It only advertises your target terms to competitors. |
| revisit-after | Stop shipping | No major crawler has ever supported it. Crawl frequency is decided by the crawler. |
| author / generator / rating | Stop shipping (mostly) | No search behaviour attached. Use a visible byline for authorship instead. |
| refresh | Avoid | Hurts accessibility and back-button behaviour. Use a server-side 301 redirect. |
The tags worth getting right
Description: written for a human, sized for a snippet
Google's own documentation is explicit that it may use your description for the snippet, and equally explicit that it may ignore it and generate one from the page when that better matches the query. That has a practical consequence most guides skip: a description is not a lever you pull for ranking, it is ad copy for a listing you do not fully control. Write it as a promise about what the page delivers, keep it near 150 to 160 characters so it is unlikely to be truncated, and make it different on every page. A site where every page shares one description is a stronger negative signal than having no description at all.
Canonical: the tag that quietly costs you traffic
Canonical is the tag I see broken most often, and the failure is almost always the same: a template hardcodes the homepage as canonical on every page, which tells Google that your entire site is one page. If you take one thing from this reference, make it this. Check a few inner pages and confirm the canonical URL matches the page you are actually on. It should be absolute, it should be the version you want indexed, and a page is allowed to be its own canonical.
Robots: powerful, and unforgiving
The robots meta tag controls indexing at the page level, and a stray noindex left over from a staging environment is one of the most common ways a site vanishes from search after a launch. It is worth a deliberate check on release day rather than a template default you never revisit. Note also that robots.txt and the robots meta tag do different jobs: robots.txt asks a crawler not to fetch a URL, while the meta tag asks a search engine not to index a page it has fetched. Blocking a page in robots.txt can actually prevent a crawler from ever seeing the noindex you put on it.
Open Graph: four required properties, one common mistake
The Open Graph protocol defines four basic required properties: title, type, image, and url. The mistake I see constantly is a relative image path. The protocol requires absolute URLs, and a relative one produces a preview card with a blank image, which is exactly the outcome the tags exist to prevent. Because platforms cache previews aggressively, fix it before you share the link widely, not after.
A head that has earned its place
Strip the folklore and a genuinely complete head for a typical content page is short. Charset first, then viewport, a unique title and description, a self-referencing canonical, and the Open Graph set with an absolute image URL. That is it. Everything else on this page is either situational or should be deleted.
The reason to care is not that the obsolete tags cost you ranking, because they do not. It is that a head full of inherited noise makes the tags that do matter harder to audit, and the ones that matter are the ones that fail silently. Nobody files a bug when a canonical is wrong. The traffic just never arrives.
If you want to generate the tags described here, the meta tag generator and the Open Graph generator on this site output exactly this set, and the meta tags guide walks through each field in more detail.
Sources: Google Search Central: meta tags Google supports; Google Search Central: control your snippets; Google Search Central: robots meta tag; Google Search Central: consolidate duplicate URLs; MDN Web Docs: standard metadata names; The Open Graph protocol.