Skip to content
Technical SEO 8 min read By Lewis Jones Editorial policy

Page Indexed Without Content: What It Means

What "Page indexed without content" means in Search Console, the causes from cloaking to JavaScript-only pages, and how a crawl finds empty pages first.

Part of Technical SEO Guide: Crawl, Index, Speed

Key takeaways

  • "Page indexed without content" means Google could fetch the URL and put it in the index, but could not read any content from it
  • The usual causes are content that exists only after JavaScript runs, a page served differently to bots than to browsers, an unsupported file type, or an empty template
  • It is a warning rather than an error, but a page with no readable content cannot rank for anything, so it needs fixing
  • Google's advice is to inspect the page and compare what Googlebot sees with what a browser shows
  • A crawl that fetches raw HTML and renders a sample shows which pages depend on JavaScript for their content

"Page indexed without content" is the odd one out in the Page indexing report. The page is in the index, which sounds like success, and yet Google is warning you about it. The warning is that the page it indexed is empty: Google fetched the URL and could read nothing useful from it. A page indexed with no content cannot rank for anything, so this status is a problem wearing a green label. This post covers the causes, how to see the page the way Google saw it, and how to find every page on the site that is empty to a crawler before Google reports it.

What "Page indexed without content" means

Google's definition, from its Page indexing report documentation:

"This page appears in the Google index, but for some reason Google could not read the content."

Google's advice under it is to inspect the page and check for cloaking or an unsupported format. The report lists the status as a warning, because indexing succeeded. Treat it as an error, because a page in the index with no text is a page that will never be shown for a query.

Note

This post is one of a series on the Page indexing report. Search console indexing issues covers every status and which ones to act on.

The usual causes

Google does not say why it could not read the page. These are the causes that account for most of them.

JavaScript-only content that did not render

A page whose HTML is a shell and whose content is built by JavaScript depends on Google's renderer running that JavaScript successfully. Rendering happens in a second pass, after the initial fetch, and can fail for a page whose scripts are slow, error out, are blocked by robots.txt, or rely on a request that Googlebot does not make. If rendering fails, Google is left with the shell: a title, perhaps, and nothing else. The URL is indexed from the shell, and the content never arrives.

This is the most common cause on sites built as single-page applications without server-side rendering or pre-rendering, and it is the one a crawl can find in advance. JavaScript SEO audit covers how to tell how much of a page's content depends on scripts.

Different content for bots and browsers

If the server inspects the user-agent and serves crawlers a different response from the one visitors get, Google indexes what it received. Sometimes that is a deliberate "lite" version with the content missing. Sometimes it is an anti-bot interstitial, a cookie-consent wall or a JavaScript challenge page that returns 200 with no real content. Google's documentation names cloaking as the first thing to check for this status, and the test is to compare the live-tested HTML in URL Inspection with the page in a browser.

An empty or broken template

A page that returns 200 with a valid layout and no body: a product whose data failed to load, an archive with no entries, a listing whose filter returned nothing, a CMS page saved with an empty content field. The server did nothing wrong, and there is nothing on the page.

An unsupported or mislabelled file type

Google indexes HTML and a set of document formats. A URL that returns something else, a binary with a text content-type, a PDF served as HTML, an image with a .html extension, can be fetched and indexed with no readable content.

Content inside an iframe or behind an interaction

Text loaded in an iframe from another origin, or revealed only after a click, tab or scroll event, may not be attributed to the page. Google's renderer does not click.

A page that is mostly media

A page consisting of a video embed or an image gallery with no text, headings or captions gives Google nothing to index as content even when everything loads correctly.

How to see what Google saw

  1. Run a live test in URL Inspection and open the "View tested page" panel. It shows the HTML Google fetched, a screenshot of the rendered page, and a list of resources that could not be loaded.
  2. Read the HTML first. If the main content is in the raw HTML, the problem is downstream, in rendering or in the index. If the HTML is a shell with an empty <div id="app">, the content depends on JavaScript.
  3. Look at the screenshot. A blank or partial render with content in the raw HTML suggests a blocked stylesheet or script. A blank render with a shell HTML confirms rendering failed.
  4. Check the "more info" list for resources blocked by robots.txt or that failed to load. A blocked script is a common reason a render returns nothing.
  5. Request the page as a bot from outside a browser and compare the response with what the browser gets. A different response is cloaking, deliberate or not.

How to fix it

  • Serve the content in the HTML. Server-side rendering, static generation or pre-rendering puts the content in the initial response, where no renderer can fail to find it. This is the durable fix for JavaScript-only pages.
  • Unblock the resources the page needs. If robots.txt disallows the scripts or stylesheets, allow them. The blocked by robots.txt post covers the resource case.
  • Serve the same page to everyone. Remove user-agent-based variations in content. Let bot protection pass verified search engine crawlers through rather than serving them a challenge page. The blocked due to access forbidden (403) post covers what to do when protection refuses Google outright.
  • Fix or remove empty pages. A listing with no entries should either have entries, return a 404, or be noindexed until it has content. The excluded by noindex tag status is the correct home for a placeholder page.
  • Serve correct content types. A PDF is application/pdf; an image is its image type. Do not label binaries as HTML.
  • Add text to media pages. A heading, a paragraph and captions give Google something to index and give visitors context.

After fixing, request indexing. The status clears when Google has refetched and rendered the page with content in it.

Heads up

Before changing anything, check the last crawl date. A page that was empty during a deploy, an outage or a data-load failure and is fine now will carry the status until Google recrawls it. If the live test shows the content, request indexing and move on.

Where this status sits among the others

It is the only warning in the report where the page is in the index but useless there. A page that Google could not fetch at all shows under server error (5xx) in Search Console or a 4xx status. A page Google fetched, read, and declined to index shows as crawled currently not indexed. This one is the gap between those: fetched, indexed, and empty.

Finding empty pages with a crawl

Search Console reports this status one URL at a time, after Google has indexed the empty page. A crawl of your own site can find pages whose content depends on JavaScript, or whose HTML has no real text, before Google does.

Crawl Cove fetches the raw HTML of every page and renders a deterministic sample of them, plus every page whose raw HTML carried no structured data, so the comparison between the two is available for the pages most likely to differ. The content-depends-on-js check reports pages whose main content is present only after rendering, which is the JavaScript-only case that produces this status when Google's render fails. The thin-content check flags indexable pages under a word-count floor, and reports near-empty pages, those under about 60 words, at a higher severity, which catches the empty-template and media-only cases regardless of why the page is empty. The heading-h1 check catches pages with no heading at all, a quick sign of a shell. And because the crawler switches to a browser user-agent when a site refuses its own, a site that serves crawlers a challenge page shows up as a crawl that could not proceed, not as a hundred empty pages reported as content.

The Live Index Status panel calls Google's URL Inspection API for any page and shows the coverage state and last crawl date, so you can confirm a fixed page has been refetched. Run a full SEO audit to see every page whose content is missing or JavaScript-dependent, in one list.

Wrap-up

"Page indexed without content" is Google indexing a page it could not read. The usual culprit is content that only exists after JavaScript runs and did not run for Google, followed by servers that show bots something different from browsers, and templates that simply returned nothing. Compare the live-tested HTML and screenshot with the page in a browser, put the content in the HTML where no renderer can lose it, and serve the same page to everyone. A crawl that reads raw HTML and renders a sample finds these pages before Google files them under a warning you were not expecting.

Frequently asked questions

What does "Page indexed without content" mean in Search Console?
Google's definition is that the page appears in the Google index, but for some reason Google could not read the content. Google reached the URL and indexed it, but the page it saw was effectively empty, so it has nothing to rank the page for.
Is "Page indexed without content" an error?
Search Console lists it as a warning. The page is in the index, so it is not an indexing failure, but it is indexed as an empty page, which is no better for rankings than not being indexed at all.
Why can Google not read my page's content?
The most common reasons are content rendered entirely by JavaScript that failed or timed out, a server that sends bots a different response from browsers, a file format Google cannot parse, or a template that returns an empty body.
Does cloaking cause this status?
It can. Google's documentation names cloaking as something to check: if the server shows Googlebot a different page from what visitors see, Google may index the version it got, which can be empty. Serve the same content to crawlers and visitors.
How do I check what Google sees?
Run a live test in URL Inspection and open the tested page's HTML and screenshot. If the rendered page is blank or missing the main content, the problem is in rendering or delivery, not in the index.

Audit your site the easy way

Crawl Cove finds these issues on your machine. Try the SEO Crawler and the On-Page SEO Checker or see every feature.

Download Crawl Cove