416 Range Not Satisfiable
The Range header asked for bytes that lie outside the resource, for example bytes 5000 to 6000 of a 2KB file.
At a glance
- Status code
- 416 Range Not Satisfiable
- Class
- 4xx, client error, the request itself is the problem
- Defined in
- RFC 9110
- Cacheable by default
- yes
- Response body
- Optional, with a Content-Range giving the real size.
In detail
The server understood the range request and none of the requested ranges overlap the resource.
Send Content-Range: bytes */TOTAL so the client learns the actual size and can recompute its range.
In a resumed download this normally means the local partial file is larger than the remote resource, usually because the remote file changed. Start again.
Examples
HTTP/1.1 416 Range Not Satisfiable
Content-Range: bytes */2048
Content-Length: 0Things that catch people out
- A zero-length resource makes every range unsatisfiable, so an empty file plus a resume attempt always produces 416.
- Servers are allowed to ignore Range entirely and answer 200 with the whole body, so 416 is not guaranteed even for a nonsense range.
Try it: HTTP Request Builder
Build a request with any method, headers and body, send it, and read the status line the server returns.
HTTP Request Builder
LOCAL · Browser-OnlyBuild and test HTTP requests with custom headers and body
Authentication
Headers
Generate Code
curl -X GET 'https://api.example.com/endpoint' \
-H 'Content-Type: application/json'Showing a sample URL. Enter your endpoint above to update the snippet.
Related HTTP status codes
All http status codes →206 Partial Content
The server is returning part of the resource because the request carried a Range header. This is what makes resumable downloads and video seeking work.
200 OK
The request succeeded. What the body contains depends on the method: a GET returns the resource, a POST returns the result of the action.
400 Bad Request
The server refused the request because it was malformed. The client must change something before retrying, because repeating the same bytes will fail.
417 Expectation Failed
The server cannot meet the requirement in the Expect header, which in practice always means Expect: 100-continue.
418 I'm a Teapot
A joke code from the Hyper Text Coffee Pot Control Protocol. It is not part of HTTP and should never be returned by a real service.
421 Misdirected Request
The request reached a server that cannot produce a response for the requested authority, usually a connection reuse problem under HTTP/2.
Tools for this
- HTTP Request Builder Free online HTTP request builder - build and test HTTP requests with custom headers and body
- HTTP Headers Checker Free online HTTP headers checker - view HTTP response headers for any URL