Meta description differs in raw HTML and after JavaScript

In brief

Your raw HTML meta description is not the one rendered after JavaScript: Google bases the snippet on the raw version and AI systems only read that one. You need to render the meta description server-side so it is correct in the raw HTML.

WarningP3 — Quality

What is it?

The meta description in the raw HTML differs from the one rendered by JavaScript.

Why it hurts SEO and AI

Google often bases the results snippet on the raw version; AI systems read only that one. The description you optimized is probably never seen by the machines.

When it is NOT a problem

  • The raw meta description is already correct and JavaScript just reproduces it: no useful gap to fix.
  • The page is not meant for search (app screen, technical page): the snippet barely matters.
  • The gap comes down to punctuation or a space, without changing the meaning: cosmetic.
Before
<!-- Raw HTML returned by the server -->
<meta name="description" content="">
<!-- after JavaScript -->
<meta name="description" content="Our selection of trail running shoes tested in the field.">
After
<!-- Raw HTML returned by the server -->
<meta name="description" content="Our selection of trail running shoes tested in the field.">

On the left, the raw HTML has an empty description and Google builds a snippet at random. On the right, the intended description is present in the server response.

How to fix it

  1. View the page's real source (Ctrl+U) and read the meta description tag as it arrives from the server.
  2. Find the client script that injects or replaces the description after load.
  3. Move the meta description definition into server-side rendering (SSR head).
  4. Re-crawl the page to confirm the raw description is now the correct one.

This scan checks what is missing from the raw HTML but appears in the JavaScript render

Is this issue on your site?

Is the description Google reads the one you wrote? Enter a URL: Seogard compares the raw HTML meta description with the JavaScript-rendered one. Free, no credit card.

  • No credit card
  • Result in ~30 s

What you get back

The description read by Google and AI systems is the one you actually wrote, not a phantom text (Google remains free to rewrite the displayed snippet based on the query).

Seogard catches this regression automatically — through its SSR checker.

Frequently asked questions

Google often rewrites the snippet anyway, is this really useful?

Google stays free to rewrite the snippet based on the query, but it starts from your raw meta: an empty or phantom description gives it less to work with, and AI systems only have that version.

Which version of the description does Google use?

It relies first on the meta present in the raw HTML; the one injected later in JavaScript may never be taken into account.

Related rules

Updated July 10, 2026