> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hadoseo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Understanding Render Status

> Learn what render status codes mean and how to fix rendering issues

Every page in your Hado SEO dashboard has a **render status** that shows whether the page was successfully pre-rendered for search engine bots. When a page has rendering issues, the status helps you diagnose and fix the problem.

## Render Status Codes

<AccordionGroup>
  <Accordion title="200 - OK" icon="circle-check">
    The page was successfully rendered. Search engines and social bots will see the full content.

    No action needed.
  </Accordion>

  <Accordion title="204 - Empty Page" icon="circle-xmark">
    The page rendered but has no meaningful content. This may indicate a loading state that never resolves, a blank page, or content behind authentication.

    **Common causes:**

    * A loading spinner or skeleton screen that never resolves
    * The page requires authentication and shows a blank page to unauthenticated users
    * The page renders but produces empty or near-empty HTML
    * A client-side redirect that the renderer can't follow

    **How to fix:**

    1. Open the page in an incognito window to see what unauthenticated users see
    2. Check if the page relies on user interaction to display content
    3. Ensure loading states resolve to actual content within 12 seconds
    4. If the page requires login, make the content accessible without authentication
    5. After fixing, click **Re-render** in the page details to refresh

    See also: [Race Conditions Causing Bad Pre-renders](/guides/troubleshooting/bad-pre-renders)
  </Accordion>

  <Accordion title="404 - Not Found" icon="circle-xmark">
    The renderer could not find this page. The page returned a 404 error when the renderer tried to load it.

    **Common causes:**

    * The page was deleted or renamed in your app
    * The URL in your sitemap is outdated
    * The page requires authentication (bots can't log in)
    * A typo in the sitemap URL

    **How to fix:**

    1. Verify the page exists by visiting it in your browser
    2. If the page was removed, remove it from your sitemap
    3. If the page moved, update your sitemap with the new URL
    4. If the page requires login, make the content accessible without authentication
    5. After fixing, click **Re-render** in the page details to refresh

    <Info>
      Hado SEO caches 404 status for 30 days to avoid repeatedly attempting to render pages that don't exist. Triggering a re-render clears this cache.
    </Info>
  </Accordion>

  <Accordion title="408 - Timeout" icon="clock">
    The page took too long to render. Hado SEO waits up to 30 seconds for the renderer to complete, and the renderer itself allows 12 seconds for the page to become ready.

    **Common causes:**

    * Slow API calls during page load
    * Large JavaScript bundles taking too long to parse
    * Infinite loading states or unresolved promises
    * External resources (fonts, images, scripts) timing out

    **How to fix:**

    1. Check your page load time in Chrome DevTools (Performance tab)
    2. Optimize slow API calls - fetch only what's needed for initial render
    3. Defer non-essential data loading (comments, recommendations)
    4. Ensure loading states resolve within 12 seconds
    5. The system will automatically retry - timeouts are often transient

    <Tip>
      Timeouts are retryable. Search engine bots receive a `503` response with a `Retry-After` header, telling them to come back later. This is the correct signal to send when content is temporarily unavailable.
    </Tip>
  </Accordion>

  <Accordion title="502 - Render Failed" icon="triangle-exclamation">
    The page could not be rendered due to JavaScript errors or empty content.

    **Common causes:**

    * JavaScript runtime errors (broken imports, missing variables)
    * Missing environment variables in production
    * Uncaught exceptions during render
    * Code-split chunks failing to load after a deployment

    **How to fix:**

    1. Open the page in your browser and check the console for errors
    2. Look for broken imports or missing modules
    3. Verify all required environment variables are set
    4. Add error boundaries to catch and display errors gracefully
    5. After fixing, click **Re-render** in the page details

    See also: [Race Conditions Causing Bad Pre-renders](/guides/troubleshooting/bad-pre-renders)
  </Accordion>

  <Accordion title="504 - Persistent Timeout" icon="hourglass">
    The page consistently fails to render within the time limit. This is similar to a 408 timeout but indicates the issue is persistent rather than transient.

    **Common causes:**

    * Infinite re-render loops in your component
    * Unresolvable loading states (e.g., waiting for user interaction)
    * Extremely heavy pages that consistently exceed render limits
    * External API that is consistently slow or down

    **How to fix:**

    1. Review your page's loading behavior - does it ever finish loading?
    2. Check for infinite `useEffect` loops or recursive state updates
    3. Ensure all loading states have a timeout or fallback
    4. Test with [SEO Bot Crawler Test](https://hadoseo.com/free-seo-bot-crawler-test) to see what the renderer sees
  </Accordion>

  <Accordion title="500 - Internal Error" icon="bug">
    An unexpected error occurred in the rendering service. This is typically a transient issue and not caused by your page.

    **What to do:**

    * The system will automatically retry
    * If the error persists for more than a few hours, contact [support@hadoseo.com](mailto:support@hadoseo.com)
    * No action needed on your end in most cases
  </Accordion>

  <Accordion title="Pending (no status)" icon="hourglass-start">
    The page has been discovered (via sitemap or manual add) but has not been rendered yet. This is normal for newly added pages.

    **What to expect:**

    * New pages are automatically queued for rendering
    * Rendering typically completes within a few minutes
    * If a page stays pending for more than an hour, try triggering a manual re-render
  </Accordion>
</AccordionGroup>

## Viewing Render Status

### In the Pages Table

The **Render** column in your Pages table shows a color-coded badge for each page:

| Badge                    | Meaning                           |
| ------------------------ | --------------------------------- |
| Green **200**            | Successfully rendered             |
| Yellow **404**           | Page not found                    |
| Red **204**              | Empty page, no meaningful content |
| Orange **408** / **504** | Render timed out                  |
| Red **500** / **502**    | Render failed or internal error   |
| Dash (—)                 | Pending, not yet rendered         |

Use the **Render Status** filter dropdown above the table to show only pages with a specific status: OK (200), Not Found (404), Empty (204), Errors (5xx), Timeout, or Pending. This is helpful for finding all pages with rendering issues.

### In Page Details

Click any page to open the details panel. If the page has a render error, you'll see an alert at the top with:

* The specific error status and description
* Resolution guidance for that error type
* A **Re-render** button to retry immediately
* Technical details (expandable) showing the exact error message

## Fixing Render Issues

The general workflow for fixing render issues:

<Steps>
  <Step title="Identify the problem">
    Filter the Pages table by render status to find pages with issues. Click a page to see the specific error.
  </Step>

  <Step title="Fix the root cause">
    Follow the resolution guidance for the specific status code. Most issues are in your application code.
  </Step>

  <Step title="Re-render the page">
    Click **Re-render** in the page details, or use **Batch Recrawl** for multiple pages.
  </Step>

  <Step title="Verify the fix">
    After re-rendering, check that the status changes to 200. Use [SEO Bot Crawler Test](https://hadoseo.com/free-seo-bot-crawler-test) to verify the rendered output.
  </Step>
</Steps>

## Impact on Search Engines

Render status directly affects what search engine bots see:

| Render Status | HTTP Response to Bots       | SEO Impact                                              |
| ------------- | --------------------------- | ------------------------------------------------------- |
| 200           | 200 with full HTML          | Page is indexed normally                                |
| 204           | 200 with empty/minimal HTML | Page may be indexed with thin content, harming rankings |
| 404           | 404 Not Found               | Page is removed from index                              |
| 408           | 503 Service Unavailable     | Bot retries later, no penalty                           |
| 502/504       | 502 Bad Gateway             | Bot retries later, may affect ranking if persistent     |
| 500           | 500 Internal Error          | Bot retries later                                       |

<Warning>
  Pages with persistent 204, 404, or 502 errors will not be indexed correctly by search engines. Fix these issues promptly to maintain your SEO performance.
</Warning>

<CardGroup cols={2}>
  <Card title="Bad Pre-renders" icon="image" href="/guides/troubleshooting/bad-pre-renders">
    Fix loading states and race conditions
  </Card>

  <Card title="SEO Bot Crawler Test" icon="magnifying-glass" href="https://hadoseo.com/free-seo-bot-crawler-test">
    See what bots see on your page
  </Card>
</CardGroup>
