The two columns
- Without JavaScript (AI crawlers): the HTML your server sends. The crawlers of AI assistants (for example ChatGPT's, Claude's and Perplexity's) and some search engines read only this.
- After JavaScript (Google): the same page after its scripts ran in SEOmise's renderer. Google renders pages before indexing them.
Each column shows the number of words, the title and the meta description. When the page already has its text in the HTML, it is not rendered again and the second column says so. When rendering is not available for the audit, the column says it was not rendered.
How the page is built
- Server-rendered: the text is in the HTML.
- Server-rendered, then hydrated by JavaScript: the text is in the HTML, and a framework (Next.js, Nuxt, Astro, Gatsby, SvelteKit) adds interactivity.
- Client-rendered only: the text appears only after JavaScript runs (by default when 80% or more of it is missing without JavaScript).
- Pre-rendered or static: the text is in the HTML and there is little script.
Built with
SEOmise names the AI site builder, site builder or framework only from markers in your page, each taken from the tool's own public source: for example a page published on lovable.app, bolt.host, base44.app or replit.app, Next.js page data, a /_nuxt/ file, an Astro or WordPress generator tag. If nothing matches, it says Not identified. A React or Vite app is never called AI-built just for being React.
The finding "Text only visible with JavaScript"
The grade uses the page after JavaScript, as Google sees it. The AI-crawler view is a separate finding in the audit's AI search section: it warns from 20% of the text and fails from 50%, and the page loses up to 12 points, in proportion to the share. SEOmise can change these numbers.
How to fix it
Put the text in the HTML your server sends:
- AI builders (Lovable, Bolt, Base44, Replit) and React or Vite apps: ask the builder's chat to pre-render every public page to static HTML at build time and publish again; or add a pre-rendering step to your own build, use your host's pre-rendering for crawlers, or move the public pages to a framework that renders on the server.
- Next.js and v0: keep page content in Server Components and fetch it on the server.
- Nuxt: remove
ssr: false; load text withuseFetchoruseAsyncData. - Astro: avoid
client:onlyfor text. - SvelteKit: remove
ssr = false, or setprerender = true. - WordPress, Shopify, Wix and other site builders: move text out of widgets and embeds into the platform's own text blocks.
Then check: open the page's source (Ctrl+U) and search for a sentence of your text, and scan again.
Not what you needed? Ask Mise or contact support.