416 Range Not Satisfiable: what it means and what to do
A 416 is about partial downloads. Clients often request a file in pieces using a Range header, which is how video players seek, how download managers resume, and how PDF viewers fetch one page at a time. The official definition in RFC 9110 is that none of the ranges in the request could be satisfied, because they fall outside the resource or do not make sense against its current size. The server answers 416 and includes a Content-Range header stating how big the resource actually is.
If you are just visiting a site or downloading
- Restart the download from scratch. The most common 416 is a resumed download asking for bytes beyond the end of a file that changed, or that already finished. Deleting the partial file and starting over clears it.
- Let the player reload the video or audio. Streaming players request byte ranges constantly. A refresh makes the player ask for the current ranges instead of stale ones.
- Clear the browser cache for the site. A cached record of an older, different-sized version of the file can make the browser request ranges that no longer exist.
- Skip the download manager once. If a direct browser download succeeds, the manager's resume data was the problem.
If it is your site or your server
- Check whether the file changed under active downloads. Replacing a file with a different-sized version while clients hold ranges into the old one produces a burst of 416s. Versioned filenames prevent it.
- Verify your range handling. Servers and frameworks must parse Range correctly and answer with the special unspecified-length Content-Range on a 416. Broken implementations answer 416 to valid ranges.
- Look at CDN caching. A cache holding a truncated or stale copy can hand out ranges that disagree with the origin's file.
Visitors: delete the partial download and start fresh. Owners: a 416 spike right after a deploy usually means a file was swapped while people were mid-download.
Common questions
Why does a video stop with a 416 error? Players fetch video in byte ranges. If the player's information about the file's size is stale, or the file was replaced on the server, the player asks for ranges that do not exist and the server answers 416. Reloading the page resets the player's picture of the file.
Is a 416 a sign the file is corrupt? Not usually. It means the requested ranges and the resource's actual size disagree. The file itself is typically fine, which is why a fresh download succeeds.
Related errors