# HTTP 416 Range Not Satisfiable — Meaning, Causes & Fixes

> The requested byte range lies outside the resource.

416 answers a `Range` request that can't be fulfilled — usually because it starts past the end of the file. The server should include `Content-Range: bytes */<size>` so the client learns the real length.

- Class: 4xx Client Error
- Retry: No — change the request first
- Cacheable by default: no
- Defined in: [RFC 9110 §15.5.17 — 416 Range Not Satisfiable](https://www.rfc-editor.org/rfc/rfc9110.html#section-15.5.17)
- Also known as: Requested Range Not Satisfiable

## Example response

```http
HTTP/1.1 416 Range Not Satisfiable
Content-Range: bytes */146515
Content-Type: application/json
Content-Length: 33

{"error":"Range Not Satisfiable"}
```

## Common causes

- Resuming a download of a file that has since shrunk or been replaced.
- Off-by-one range arithmetic in a custom downloader.
- Requesting a range of an empty file.

## How to fix it

1. Request the file again without a `Range` header.
2. Send `If-Range` with the ETag, so a changed file restarts from scratch instead of failing.
3. Read `Content-Range: bytes */<size>` from the 416 to learn the actual length.

## FAQ

### Why does resuming my download fail with 416?

The partial file is already as long as the server's file or longer, usually because the file changed. Delete the partial download and start over.

## Related status codes

- [206 Partial Content](https://www.devkult.com/http/206.md)
- [200 OK](https://www.devkult.com/http/200.md)
- [412 Precondition Failed](https://www.devkult.com/http/412.md)

Open the interactive page: https://www.devkult.com/http/416