Why is Prerender.io returning empty or partially rendered pages?
Six common causes, from detection timing to geo-blocking, and how to fix each one.
TL;DR
When Prerender.io returns an empty or partially rendered page to AI crawlers and search engines, the most common causes are: the page is grabbed before it finishes rendering, the render exceeds the 20-second timeout, a JavaScript error blocks rendering, a CDN blocks Prerender.io's user agent, the page needs browser capabilities Prerender.io's headless browser does not support, or your site is geo-blocked from Prerender.io's region. Each cause has a specific fix below.
How to read this guide
Each section below covers one cause, the signal that points to it, and what to do. Work through them in order. If you find a match, follow the fix and re-test before moving on. If you reach the end and the issue persists, the support team can help diagnose your specific case.
ℹ️ If you would rather have an interactive walk-through, ask Nexus, your AI integration assistant, inside your Prerender.io dashboard. Describe what you are seeing and Nexus will help you narrow down the cause.
Cause 1: Prerender.io cannot detect when the page is ready
Prerender.io uses built-in logic to detect when a page has finished rendering. Some websites use custom loading flows or constant background polling that confuse this detection, so Prerender.io grabs the page too early and returns partial or empty HTML to the crawler.
If you think your site fits this pattern, you can take over the readiness signal yourself by setting the window.prerenderReady flag.
Add this script as high in your <head> as possible, ideally right after the opening <head> tag:
<script>
window.prerenderReady = false;
</script>
Then, in your application code, set the variable to true only when the page has fully rendered and is safe for Prerender.io to capture. This usually goes in an async callback that runs late in your page lifecycle.
When Prerender.io detects window.prerenderReady = false on page load, it waits for the value to turn true before grabbing the rendered content. After the flag flips, Prerender.io waits a short moment to ensure all in-flight calls finish, then saves the page.
⚠️ The value must be the boolean false, not undefined. If the variable is missing or undefined, Prerender.io falls back to its default detection logic and may grab the page early.
Cause 2: the page takes longer than 20 seconds to render
Prerender.io has a 20-second default render timeout. If your page does not finish rendering within that window, Prerender.io captures whatever state it has and caches that partially rendered page.
To check whether this is your issue, open your Prerender.io dashboard and review the Response Time column in your crawl stats and recache stats.

URLs with response times close to or above 20 seconds are likely timing out. The dashboard highlights problematic URLs in red to make them easier to spot.

There is no single fix for slow renders, because the cause depends on your application. Common improvements: better client-side caching, fewer blocking scripts in the initial paint, moving heavy work behind the readiness flag in Cause 1, and putting a CDN in front of slow asset requests.
Cause 3: a JavaScript error blocks rendering
We often see sites that load fine in a desktop browser but throw an unexpected JavaScript error when Prerender.io fetches them. Prerender.io uses a customised headless Chrome that runs from several data-centre locations and IP ranges, so errors that depend on user agent, geography, or specific browser features can surface in Prerender.io but never appear in your local testing.
To investigate, open the affected URL in your Prerender.io dashboard and check the render log for the error message. Reproduce the error locally by running a headless Chrome instance with the same user agent string (see the full list) and from a different IP range if possible.
Cause 4: a CDN is blocking Prerender.io's user agent
Some CDNs block requests from non-standard user agents by default. If your site loads JavaScript bundles, fonts, or images from a CDN that is blocking Prerender.io, your page may render with critical assets missing, or fail entirely.
This is most common when your asset CDN is separate from your origin CDN, because the asset CDN may have different bot rules.
To check: look at the failed render's resource log in your Prerender.io dashboard. Blocked requests to a third-party CDN will appear as 403 or 401 errors. Add Prerender.io's user agent to the CDN's allow list, or whitelist Prerender.io's IP ranges. See Prerender.io user agents for the current list.
Cause 5: your page needs browser capabilities that Prerender.io does not support
Prerender.io's headless browsers run without a GPU, so pages that depend on WebGL, hardware-accelerated canvas, or other GPU-bound features may not render correctly.
If your site uses WebGL for critical above-the-fold content, you have two options: provide a non-WebGL fallback that crawlers can read, or use the window.prerenderReady flag from Cause 1 to delay capture until a static fallback has loaded.
Cause 6: your site is geo-blocked from Prerender.io's data centres
Prerender.io's data centres are distributed globally. If your site is geo-blocked, for example only available from the US, Prerender.io may attempt to render from a region your site rejects, and the render will fail.
You can ask the Prerender.io support team to pin your account so all renders come from a specific region. Use this form to describe your situation and request a regional pin.
ℹ️ Reviewer flag: the previous version of this article mentioned an upcoming EU-only option. Confirm with product whether EU-only pinning is now available before publishing this section.
Still seeing empty or partial pages?
If you have worked through all six causes and the issue persists, see What to do if some elements are not loaded on the page for additional diagnostic steps.
Related articles
- How do I verify my Prerender.io integration is working correctly?
- What to do if some pages are not getting cached
- How to see what URLs fail to cache
- Best practices
💬 Still need help? If empty or partially rendered pages persist after working through the six causes above, our support team can help diagnose your specific case. → Contact us at support@prerender.io