# HTTP resource not retrievable. The HTTP status from the remote server was: 500.

> Canonical HTML version: https://rocketvalidator.com/html-validation/http-resource-not-retrievable-the-http-status-from-the-remote-server-was-500
> Attribution: Rocket Validator (https://rocketvalidator.com)
> License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

A resource linked in your HTML (such as a stylesheet, script, or image) returned a **500 Internal Server Error** when the W3C validator tried to fetch it.

This is not an HTML syntax error — it's a server-side problem. The W3C validator attempts to retrieve external resources referenced in your document to perform additional checks. When it encounters a `500` status code, it means the remote server failed to process the request. This could be caused by a misconfigured server, a broken backend script, a temporarily unavailable resource, or a URL that only works with specific headers (like cookies or authentication) that the validator doesn't send.

Common culprits include `<link>` elements pointing to CSS files, `<script>` elements loading JavaScript, or even resources referenced in `<img>` or `<source>` tags.

To fix this, verify that the URL is correct and publicly accessible. Open it directly in your browser or test it with a tool like `curl`. If the resource is on your own server, check your server logs for the cause of the 500 error. If it's a third-party resource, consider hosting a local copy or using a CDN alternative.

## HTML Examples

### Before — referencing an unreachable resource

```html
<link rel="stylesheet" href="https://example.com/broken-endpoint/styles.css">
<script src="https://example.com/broken-endpoint/app.js"></script>
```

### After — using a valid, accessible URL

```html
<link rel="stylesheet" href="https://example.com/css/styles.css">
<script src="https://example.com/js/app.js"></script>
```

If the resource is temporarily down and outside your control, the validator warning will resolve itself once the remote server is fixed. You can safely treat this as a warning rather than a blocking error in that case.
