Prerender.io status codes explained
Every HTTP status code Prerender.io returns is a signal about whether AI crawlers and search engines can reach your pages, and what to fix if they cannot.
TL;DR
Prerender.io returns standard HTTP status codes to AI crawlers and search engines (Googlebot, Bingbot, GPTBot, ClaudeBot, Perplexity, and others) based on what happens during rendering. 200 means the page is cached and serving correctly. 4xx codes mean crawlers can't access the page (auth, firewalls, missing content). 5xx codes mean rendering itself failed. 3xx codes mean the page redirects. Use the table below to look up any code you see in your dashboard, then work through "Blocked" issues first, "Server errors" second, and "Accessible" page improvements last.
Why this matters
Status codes determine whether AI crawlers and search engines can reach, index, and cite your pages. A page returning 403 is invisible to crawlers. A page returning 504 repeatedly will eventually drop from indexes and AI-generated answers. Monitoring status codes in your Prerender.io dashboard is the fastest way to catch visibility problems before they affect your AI & Search rankings.
Overview
When you use Prerender.io, the service returns HTTP status codes to AI crawlers and search engines based on how your prerendered content is served. These codes tell you whether crawlers can access your pages and directly affect how your site is crawled, indexed, and surfaced in AI answers and search results.
This guide explains what each status code means in the context of Prerender.io, how it affects crawler access, and what you should do next.
Status codes reference
| Category | Code | What it means | Impact | What to do |
|---|---|---|---|---|
| Accessible | 200 | Page loaded, cached, and served successfully. | Crawlable, but SEO may still be weak. | Improve content, metadata, and internal linking. |
| Blocked | 401 | Requires authentication (page is behind an auth wall). | Crawlers cannot access the page. | Remove authentication for pages that should be crawlable, or explicitly allow crawler access. |
| 403 | Access is forbidden. | Crawlers blocked by your server, firewall, or CDN. | Check firewall and bot-protection rules. Allowlist Prerender.io's IP addresses and User-Agents. See Why Am I Seeing 403 or 404 Errors After Integrating Prerender? | |
| 409 | Request conflict (often a bot-protection signature). | Likely blocked by security rules. | Review and relax bot-filtering rules for Prerender.io traffic. | |
| 422 | Request rejected (bot challenge failure). | Prerender.io fails the validation challenge. | Disable CAPTCHA or JavaScript challenges on routes Prerender.io needs to reach. | |
| 429 | Too many requests (trial render limit reached). | Requests rejected due to plan quota. | Upgrade your plan. If you are on a paid plan and still see 429s, check firewalls, proxies, or rate-limiting rules in front of your origin. | |
| Not found | 404 | Page not found. URL no longer exists or is unreachable. | Crawlers receive a dead-end. | If the URL still exists, check how it was rewritten in CDN Analytics and confirm it doesn't match an Ignored URL filter. |
| 410 | Page permanently removed. | Crawlers stop revisiting. | Confirm the page should be gone, or set up a 301 redirect to the replacement. | |
| Server errors | 500 | Internal server error at your origin. | Unstable access; crawler may retry. | Check backend logs and resolve the underlying error. |
| 502 | Bad gateway. Invalid response from origin or upstream service. |
Invalid response from your origin or an upstream service. | Check proxies, load balancers, and any services in front of your origin. | |
| 503 | Service unavailable. Server overloaded or down. | Your server is overloaded or down. | Improve availability and capacity; review autoscaling settings. | |
| 504 | Gateway timeout. Rendering failed or timed out. |
Page not served to crawlers. (firewall, rate limit, slow JS). | Optimise response time, fix blocking JavaScript errors, and review the rendering timeout. See the 504 deep-dive section below. | |
| 520 | Unknown origin error (Cloudflare). | Unexpected server or CDN issue. | Check origin logs and Cloudflare error pages for context. | |
| 521 | Origin server is down (Cloudflare). | Your origin isn't reachable. | Restart the origin server or fix the connection issue. | |
| 525 | SSL handshake failed (Cloudflare). | HTTPS connection couldn't be established with your origin. | Fix your SSL/TLS configuration on the origin server. | |
| 530 | Site blocked or frozen (Cloudflare). | Hosting or CDN-level restriction is in effect. | Review your hosting provider and CDN settings to find what's blocking traffic. | |
| Redirects | 301 | Permanent redirect. | Crawler reaches the destination indirectly. | Confirm the destination URL is correct and Prerender.io-enabled. |
| 302 | Temporary redirect. | Crawler reaches the destination indirectly. | If the redirect is actually permanent, switch to 301. | |
| 307 | Temporary redirect (method-preserving). | Same as 302 but the HTTP method is preserved. | Verify the redirect intent; usually 301 or 302 is what you want for crawlable content. | |
| 308 | Permanent redirect (not followed by Prerender.io). | Prerender.io returns the 308 to the crawler instead of fetching the destination. | Make sure the destination URL is also integrated with Prerender.io so the crawler can reach the final page. | |
| Malformed | 400 | Bad request. | The request format is invalid (malformed or unsupported). | Check how requests are being constructed by your integration or proxy. |
What to prioritise
- Fix Blocked issues first. Crawlers cannot reach these pages at all.
- Resolve Server errors next. Rendering is failing or unstable.
- Improve Accessible pages last. Pages are reachable but content, metadata, or internal linking may need work.
504 Gateway Timeout deep-dive
A 504 happens when rendering the page fails because of a timeout or a server-side issue during the render. This is the most common error code that needs deeper debugging, which is why it gets its own section.
Common causes
- Page renders blank, returning empty HTML like
<html><head></head><body></body></html>. - JavaScript errors block rendering before content appears.
- Errors during rendering (failed API calls, script crashes).
- Rendering takes longer than the configured timeout.
How to resolve 504s
- Open the page in a regular (non-headless) browser and confirm it renders properly.
- Check the browser console for JavaScript errors that block content from appearing.
- Make sure your page does not return an empty skeleton for crawlers. Pre-load essential content during SSR or hydration.
- Review the Rendering Timeout setting under Advanced Settings in your dashboard. The default is 20 seconds, and you can configure it up to 60 seconds.
Crawlers often retry after a 504, but persistent failures still delay or block proper indexing. Treat repeat 504s on the same URL as a rendering issue to debug, not a transient error.
ℹ️ 504s are common and often tied to rendering failures rather than access blocks. Because they need deeper debugging (JavaScript issues, slow API calls), the steps above go beyond the table's general guidance.
Best practices for keeping status codes clean
- Review crawler visit logs. Use your Prerender.io dashboard to see status codes for specific URLs.
- Verify your integration. Ensure correct forwarding and a valid Prerender.io token with proper headers.
- Use a consistent token. Use the same valid Prerender.io token across all environments (dev, staging, production).
- Avoid interaction-dependent content. Make sure your page does not rely on user interaction (scroll, click) to display the content crawlers need for indexing.
- Check redirect chains. For pages with frequent redirects, ensure final destinations are also integrated with Prerender.io.
- Pre-load content for crawlers. Watch for blank or delayed responses from the server. Pre-load essential content during SSR or hydration so crawlers receive a useful snapshot. See Best practices for crawler-ready pages for detailed guidance.
Related articles
- Why Am I Seeing 403 or 404 Errors After Integrating Prerender?
- Why is Prerender.io returning empty or partially rendered pages?
- What should I do if I get a "Prerender integration not detected" error in the Domain Manager?
- How do I find URLs that failed to cache?
💬 Still need help?
If you are seeing the same status code across many URLs and the fixes in the table are not resolving the issue, our support team can dig in with you. Include the full URL, the status code, and which crawler is affected. → Contact us at
→ Contact us at support@prerender.io