Content without JavaScript
Agents read the HTML your server sends and do not run JavaScript. Whatever is not in that HTML does not exist to them.
- Category
- Content accessibility
- Standard
- Established
What it checks
The extension fetches the page’s HTML as the server sends it and measures the
visible text in it, ignoring scripts and styles. It also looks for an <h1>.
If the raw HTML has at least 500 characters of text, the page has enough
server-rendered content and the result depends only on whether an <h1> is
present.
If the raw HTML has less than that, a short page is not automatically a problem. The extension compares the raw text with the text on the rendered page in your browser. The page counts as depending on JavaScript when the rendered page has at least 500 characters and more than twice the text of the raw HTML.
Results
| Status | When |
|---|---|
| Pass | The raw HTML has at least 500 characters of text and an <h1> |
| Warn | The raw HTML has at least 500 characters of text but no <h1> |
| Warn | The page has little text either way, raw or rendered |
| Fail | The rendered page has at least 500 characters and more than twice the raw HTML’s text |
| Unmeasured | The HTML could not be fetched, or the raw HTML is thin and the rendered page could not be read to compare it |
How to fix
Render the page’s content on the server, so it is in the HTML response rather than added by scripts after load. Most frameworks support this through server-side rendering or static generation (for example Next.js, Nuxt, Astro, or SvelteKit with SSR or prerendering turned on).
Give the page a single <h1> that names what it is about, and enough text for
an agent to tell what the page is for. An <h1> and a few hundred characters is
a reasonable minimum.
You can see what an agent sees by fetching the page without a browser:
curl -s https://example.com/page | less
If the content you expect is missing from that output, agents cannot read it either.