HTTP Status Code 416 = “Range Not Satisfiable”
The server cannot provide the requested portion of a file because the requested byte range is invalid or outside the file size.
Common cause
The client sends a Range header requesting bytes that do not exist.
Example:
http id=”s8m2qx”
Range: bytes=10000-20000
but the file is only:
text id=”g7p1kv”
5000 bytes
The server responds:
http id=”t4d9wc”
HTTP/1.1 416 Range Not Satisfiable
Common use cases of Range requests
Range headers are used for:
- Video/audio streaming
- Download resume
- Partial file downloads
- Large file transfers
- Media players Example
Client request
http id=”y5r8ne”
GET /movie.mp4 HTTP/1.1
Range: bytes=9999999-10000000
Server response
http id=”u1f3ab”
HTTP/1.1 416 Range Not Satisfiable
Content-Range: bytes */5000000
The file size is only 5,000,000 bytes.
Fixes
For users
- Refresh download
- Restart video playback
- Clear browser cache
- Retry with stable internet
For developers
- Validate byte ranges before serving files
- Return correct
Content-Range - Handle empty/corrupt files
- Check download manager behavior Node.js example
js id=”v6k2yt”
if (start >= fileSize) {
res.status(416).send(‘Requested range not satisfiable’);
}
PHP example
php id=”w3q8mn”
header(“HTTP/1.1 416 Range Not Satisfiable”);
Related headers
| Header | Purpose |
| | — |
| Range | Request partial content |
| Content-Range | Returned byte range |
| Accept-Ranges | Server supports ranges |
Related HTTP status codes
| Code | Meaning |
| — | |
| 200 | OK |
| 206 | Partial Content |
| 400 | Bad Request |
| 404 | Not Found |
| 413 | Payload Too Large |
| 416 | Range Not Satisfiable |