Meta description not showing in Google: why Google picks other text
Google swaps a meta description that doesn't fit the query. It never shows one missing from the raw HTML, stuck behind invalid head markup or blocked.
LLaunchScaler·Published ·8 min read
Google shows your meta description only when it decides the description summarises the page better, for that particular search, than text taken from the page itself; otherwise it builds the snippet from your content. If your description never appears for any query, the tag is usually broken or invisible to Google: missing from the served HTML, placed after an invalid element in the <head>, duplicated, or overridden by a nosnippet or max-snippet rule.
The two cases need different responses. A description Google chose not to use is a writing problem, and you can only improve the odds. A description Google cannot read is a technical problem, and you can fix it for certain. Rule out the technical causes first, because they are the ones you control.
Why does Google show different text than my meta description?
Google builds snippets for each search, not for each page. Its documentation says snippets are "primarily created from the page content itself" and are "designed to emphasize and preview the page content that best relates to a user's specific search," so the same page can show a different snippet for every query it ranks for.
The meta description is one candidate among many. Google uses it "if it might give users a more accurate description of the page than content taken directly from the page." For the page's main query, a good description often wins. For the long tail of other queries, a sentence from the body that contains the searched words usually wins instead.
That is why rewrites are the normal case, not a fault. Ahrefs studied 20,000 keywords and found Google rewrote the meta description 62.78% of the time, with long-tail keywords rewritten more often (65.62%) than high-volume ones (59.65%). Length made little difference in that study, but if yours runs long, meta description length gives the desktop and mobile budgets.
To see the description without a query shaping it, Yoast's help suggests a site:example.com search, which removes the specific search term from the picture.
Did Google choose other text, or can it not see your tag?
Questions, answered
What people ask about this
01
Why is my meta description not showing in Google?
Either Google chose other text because it matched the search better, or it cannot use your tag. Google builds snippets per query and uses the meta description only when it describes the page better than the page's own content. A tag missing from the served HTML, placed after invalid markup in the head, or overridden by nosnippet is never used.
Check whether the description ever appears. If it shows for a site: search or for the page's main query but not for others, Google is choosing per query and nothing is broken. If it never appears, or Google's snippet is clearly generic page text on every search, test the tag itself.
What you see
Likely cause
How to check
Your description on some searches, page text on others
Normal per-query snippets
Search the page's main query and a site: query
Never your description, on any search
The tag is missing from what Google reads
curl the URL and look for the tag
The tag is in your editor but not in the page source
Theme, plugin or template does not output it
View source, not DevTools Elements
The tag is in the source but after an <img>, <div> or <iframe> in the head
Google stopped reading the head early
Check what comes before the tag
Two or more description tags in the source
Theme and SEO plugin both output one
Count the tags
No snippet at all, only the title and URL
nosnippet or max-snippet:0
Check robots meta tags and the X-Robots-Tag header
Old description still showing after a change
Google has not recrawled yet
URL Inspection, crawl date
Is the meta description in the raw HTML?
Fetch the page the way a crawler first receives it and search for the tag. If it is not in the server's response, Google only sees it after rendering, and crawlers that do not run JavaScript never see it. Run this from a terminal:
One line printed means one tag in the raw HTML. No output means the tag is added by JavaScript, or not output at all. More than one line means duplicate tags.
Google does say "you can use JavaScript to set or change the meta description as well as the <title> element," because Googlebot renders pages. But rendering is queued: Google notes "it is not immediately obvious when a page is waiting for crawling and when it is waiting for rendering," and that "not all bots can run JavaScript." A description that exists only in the rendered DOM depends on that queue and on every script succeeding. The fix is to render it on the server.
This is the usual cause on single-page apps. React components that set head tags after mount, including older React Helmet setups, write the description into the browser's DOM but not into the HTML the server sends; React Helmet and SEO covers the server-rendered alternatives. The broader problem, where the whole page body is client-rendered, is in client-side rendering and SEO.
To see what Google itself received, open the URL in Search Console's URL Inspection tool, run Test live URL and open View tested page. The HTML tab shows the rendered HTML Google used.
Can invalid HTML in the head hide the meta description?
Yes. Google's documentation lists the only elements valid in the <head> (title, meta, link, script, style, base, noscript and template) and says that "once Google detects one of these invalid elements, it assumes the end of the <head> element and stops reading any further elements in the <head> element." Any meta tag after that point is ignored.
This is common. The HTTP Archive Web Almanac 2024 found invalid HTML in the <head> on 10.6% of desktop pages and 10.9% of mobile pages. The most common element breaking the head was <img>, in 29% of the desktop cases, and the chapter links its rise to older ways of installing third-party tools.
Browsers make it hard to spot. The browser's parser quietly moves the rest of the head into the body, and DevTools shows the repaired tree, so the page looks fine. Check the raw source instead:
Run curl -s https://example.com/page | sed -n '/<head/,/<\/head>/p' and read every element in order.
Find the first element that is not one of the eight valid ones. A tracking <img>, a <div> from a chat widget, an <iframe> from a tag manager fallback, or stray text are the usual finds.
Move it into the <body>, or at least below every meta and link tag you want read. Google says that if you must use an invalid element, place it "after the ones you want Google to see."
Re-check that the description, canonical and robots tags all come before any non-head element.
The same fault hides the canonical, robots and hreflang tags, which makes it worth fixing even if the description were the only symptom.
Do duplicate descriptions stop Google from using them?
They make Google less likely to use them. Google says "identical or similar descriptions on every page of a site aren't helpful when individual pages appear in search results," and recommends a unique description per page, with site-level wording only on the homepage and aggregation pages. A description shared across a template is the one Google replaces first.
There are two kinds of duplicate, and both are common:
The same description on many URLs, usually a site-wide default in the layout or CMS settings that every page inherits. Replace it with a per-page field, or generate each one from page-specific data.
Two description tags on the same URL, usually a theme that prints one and an SEO plugin that prints another. Yoast's help calls this having "more than one description meta tag" and suggests running a conflict check to find which feature outputs the extra one.
For WordPress sites using Yoast, its help lists the other reasons a description never reaches the page source: the theme's header.php must call wp_head() for Yoast's tags to be printed, the post type needs a default description template, or the individual post needs a description in the Yoast sidebar.
Do nosnippet or max-snippet block the description?
Yes. A robots rule overrides whatever description you wrote. Google defines nosnippet as "do not show a text snippet or video preview in the search results for this page," and max-snippet:[number] as the maximum number of characters to use, where max-snippet:0 equals nosnippet. Both can sit in a meta tag or an X-Robots-Tag HTTP header.
Look for nosnippet, max-snippet:0 or a small number such as max-snippet:50. Google adds that both rules apply to all forms of its results, including AI Overviews and AI Mode, which is why they sometimes appear on sites trying to limit AI use. If that was the goal, opting out of Google AI Overviews explains what each control does to ordinary snippets too. The data-nosnippet attribute excludes one section of the page instead of the whole snippet.
How do you get Google to use the new description?
Fix the technical cause, confirm the tag in the raw HTML, then ask Google to recrawl. Google says crawling "can take anywhere from a few days to a few weeks," and that requesting a crawl "does not guarantee that inclusion in search results will happen instantly or even at all."
Confirm exactly one description tag, in the raw HTML, before any invalid head element, with no nosnippet rule on the page.
Rewrite the description so its first sentence answers the page's main query, using the words people search.
In Search Console, open URL Inspection, run Test live URL, and click Request indexing.
Wait for the crawl. Requesting the same URL again does not speed it up, and Google applies a quota to individual URL requests.
Search the main query and a site: query again after the crawl date changes.
If the tag is correct and Google still shows page text, treat it as Google's per-query choice. Improve the page's opening paragraph too, since it is the text Google most often uses instead.
Check the description, head and robots tags in one pass
Most of these causes can be read from the page before Google recrawls it. Run the free scan on LaunchScaler with the URL, no account needed. Its search checks flag a page with no meta description, a description long enough to be cut off, invalid HTML that closes the <head> early and drops the tags below it, and primary content that only appears after JavaScript runs. Fix what it reports, then request indexing for the page.
02
How long does it take for Google to show a new meta description?
Google has to recrawl the page first, which can take anywhere from a few days to a few weeks. Requesting indexing in Search Console's URL Inspection tool prompts a recrawl, but it does not guarantee Google will use the new description.
03
Why is my Yoast meta description not showing?
Yoast's help lists the usual causes: a theme whose header.php does not call wp_head(), no description entered for the post and no default template, a second description tag from another plugin or the theme, or a nosnippet robots setting. If the tag is in the page source and correct, Google has simply chosen other text for that query.
04
Can I force Google to use my meta description?
No. Google says it primarily creates snippets from the page content and uses the meta description when it gives a more accurate summary. You raise the odds by writing a unique, specific description that answers the page's main query.
05
Does Google read a meta description added with JavaScript?
Google says you can use JavaScript to set or change the meta description, because it renders pages. Other crawlers may not run JavaScript, and rendering happens in a queue, so putting the tag in the server-rendered HTML is the reliable choice.
Browsers block http:// scripts, styles, iframes and fetch calls on HTTPS pages and upgrade images and media. How to find every insecure URL and fix it.
Set metadataBase to the production domain, use opengraph-image, keep page openGraph objects from dropping the image, and test outside Vercel protection.
Most missing OG images are fetch failures: a relative URL, a blocked crawler, a login wall or tags added by JavaScript. Check each, then clear the cache.