
Your meta description is being injected by JavaScript and is missing from the raw HTML, so move it server-side into the initial HTML response to guarantee Google sees it on the first crawl.
What "Only in Rendered HTML" Means
Every page has two versions of its HTML. The raw HTML is what the server sends back the instant a crawler requests the URL, before any scripts run. This is exactly what you see when you use "View Source" in your browser. The rendered HTML is the final state of the page after the browser has downloaded, parsed and executed all the JavaScript and built the live DOM. This is what you see when you open developer tools and "Inspect" an element.
This audit issue fires when your meta description tag is absent from the raw HTML and only appears in the rendered DOM after JavaScript has run. In other words, the server sends a page with no meta description, and a script adds it later inside the visitor's browser. A crawler that reads only the raw response, or that has not yet rendered the page, will see no meta description at all.
Why It Is Risky
Google does not index JavaScript pages in a single step. It uses a process often described as two-wave indexing. In the first wave, Googlebot fetches and processes the raw HTML immediately. Anything present in that raw response, such as the title, canonical, robots tag and meta description, is available right away. Rendering happens in a second, separate wave: the page is placed in a queue and handed to the Web Rendering Service, which runs the JavaScript using a headless version of Chromium.
The gap between those two waves is not guaranteed to be short. Rendering is deferred until resources are available, and for lower-priority pages that wait can stretch from minutes to days. This is the core of the render budget concern: Google has finite rendering capacity, and it does not spend it equally across every URL. If your meta description lives only in the rendered output, it simply does not exist for Google during the entire window before that second wave completes. During that period the page may be indexed with no description, or with one Google fabricates from on-page text, which is rarely what you want for snippet control.
How Google Renders
When Googlebot finally renders a page, it loads the URL in an evergreen, headless Chromium instance, executes the JavaScript, waits for network activity to settle, and then captures the resulting DOM. At that point any JavaScript-injected meta description is finally visible. The problem is never that Google cannot render. It is that rendering is delayed, deferred, or in edge cases skipped if scripts fail, time out or are blocked by robots.txt. Relying on that second wave for something as fundamental as your meta description introduces avoidable fragility.
How to Diagnose
The fastest manual check is to compare the two HTML states yourself. Open the page and use View Source (the raw HTML) and search for name="description". Then open developer tools and Inspect the <head> (the rendered DOM) and search again. If the tag is missing from View Source but present in Inspect, it is being added by JavaScript.
For an authoritative view of what Google itself sees, use the URL Inspection tool in Google Search Console. Run a live test and open the rendered HTML and screenshot. Crawlers such as Screaming Frog and Sitebulb automate this comparison at scale. In Screaming Frog, enable JavaScript rendering under Config then Spider then Rendering, and compare the "HTML Meta Description" column (raw) against the "Rendered HTML Meta Description" column (post-JavaScript). A value that appears only in the rendered column is exactly this issue.
RAW HTML (View Source) - meta description MISSING:
<head>
<title>Best Running Shoes</title>
</head>
RENDERED DOM (Inspect) - injected by JavaScript:
<head>
<title>Best Running Shoes</title>
<meta name="description" content="Compare top running shoes...">
</head>How to Fix It
The fix is to ensure the meta description is present in the raw HTML response, before any JavaScript executes. The mechanism depends on your stack, but the goal is identical: server-render the tag.
If you run a framework such as Next.js, Nuxt or similar, enable server-side rendering (SSR) or static generation so the head tags are produced on the server. If you run a traditional CMS or your own backend, write the meta description into the template that generates the HTML document, rather than setting it through a client-side script. If a full SSR migration is not feasible in the short term, prerendering (serving a fully rendered HTML snapshot to crawlers) is an accepted interim approach. The end state you are aiming for looks like this in the raw response:
<!-- Server-rendered, present in the raw HTML -->
<head>
<title>Best Running Shoes</title>
<meta name="description"
content="Compare top running shoes for road and trail,
with sizing and price guidance.">
</head>After deploying, re-run View Source and confirm the tag is now in the raw HTML, then validate with the URL Inspection live test.
Common Mistakes
The most frequent mistake is treating "Google can render JavaScript" as "Google will render it instantly and reliably." It can, but the timing and budget are outside your control, so critical metadata should never depend on it. A related trap is using a client-side library or tag manager to set the meta description; this almost always injects the tag after the raw response has already been sent and crawled. Another is fixing the visible page content but forgetting that the head tags need the same server-side treatment. Finally, teams sometimes verify only in a rendering-aware tool and never check View Source, which hides the problem because the rendered view always looks correct.
FAQ
A: Rendering happens in a separate, deferred wave that can be delayed by minutes to days depending on render budget. Until that wave completes, a JavaScript-only meta description does not exist for Google, leaving the page without snippet control in the meantime.
A: Use View Source and search for name="description". If it is there, it is in the raw HTML and server-side. If it appears only when you Inspect the live DOM, it is being injected by JavaScript.
A: Yes. Prerendering serves a fully rendered HTML snapshot to crawlers so the meta description is in the initial response. It is a valid interim solution when a full server-side rendering migration is not immediately possible.
Need a full technical audit?
SEO ProCheck runs deep crawls that catch issues like this across your whole site.
Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.
About SEO ProCheck
Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.
Work With Me
Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.







