416 Range Not Satisfiable
4xx client errorformerly “Requested Range Not Satisfiable”
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 — only with explicit Cache-Control |
| Response body | Allowed |
| Defined in | RFC 9110 §15.5.17 — 416 Range Not Satisfiable |
Example response
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
- Request the file again without a
Rangeheader. - Send
If-Rangewith the ETag, so a changed file restarts from scratch instead of failing. - Read
Content-Range: bytes */<size>from the 416 to learn the actual length.
Check what a URL returns
Print just the status line from the command line, or check a whole list of URLs at once, with their response headers, in the HTTP Status Checker.
curl -sI https://example.com/your-path | head -n 1
Frequently asked questions
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.
Headers used with 416
Related status codes