error code 416

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 |