HTTP 416 Range Not Satisfiable

The Range header asks for bytes that do not exist — typically an offset past the end of the resource.

Defined in RFC 9110 §15.5.17 — 416 Range Not Satisfiable · MDN reference

Where you meet HTTP 416 in production

Resumable downloads restarting from an offset past the end of a file, usually after the file was replaced by a shorter one.

Why you would test it

The edge case of resumable transfers. A client that resumes from a stale offset lands here, and should restart rather than retry.

What your client should do about a 416

Re-read the current length from the Content-Range header on the 416 response, then either restart the transfer or request a valid range. Retrying the same range is guaranteed to fail again.

416 versus the codes it gets confused with

Endpoints that return 416

1 endpoint in this playground answers with 416. Every one is free, needs no signup, and can be called from the browser or with curl.

Questions about HTTP 416

What does the 416 response tell me?
A compliant server includes Content-Range: bytes */<length>, which is the current size — exactly what you need to correct the request.
Can a server ignore Range and send 200?
Yes, and it is legal. Clients must handle a full-body response to a ranged request.

Other client error codes

All HTTP status codes · All 39 mock REST APIs · Getting started guide

Last updated