416 🌐 HTTP

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.

Seen on: REST API

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

  1. Delete the partial file and download again
  2. Request a range within Content-Length
  3. Purge the CDN cache if versions differ

Detailed fix by platform

curl

  1. 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

  1. rm file.zip && wget https://example.com/file.zip

How to diagnose

  1. Sizes — Local partial size vs remote Content-Length
  2. Header — Range sent vs Content-Range returned
  3. 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:

🧠 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.