HTTP 416 Range Not Satisfiable
The client asked for a byte range (Range: bytes=…) that lies outside the file — usually a resumed download of a file that changed or is already complete.
Meaning
Download managers, video players and resumable uploads use Range headers to fetch parts of a file. If the requested start is beyond the file’s size — the file shrank, was replaced, or the download is already finished — the server answers 416 with Content-Range: bytes */size.
Common causes
- Resuming a download of a file that was replaced or truncated
- Partial local file already complete or larger than the remote file
- Wrong range math in custom code (off-by-one, end beyond size)
- CDN cached a different version than the origin
⚡ Quick fix
- Delete the partial file and download again
- Request a range within Content-Length
- Purge the CDN cache if versions differ
Detailed fix by platform
curl
- bash
curl -I https://example.com/file.zip # check Content-Length curl -C - -O https://example.com/file.zip # resume correctly (or rm the partial file)
wget
rm file.zip && wget https://example.com/file.zip
How to diagnose
- Sizes — Local partial size vs remote Content-Length
- Header — Range sent vs Content-Range returned
- Version — ETag/Last-Modified changed?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
Most viewed in HTTP
Other ways to find it
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
Report a correction or suggest an improvement
Last updated 7 Oct 2026