What HTTP 206 means
When a client sends a Range header, the server can return just that part of the file with 206 and a Content-Range header. This is how video seeking, resumable downloads (curl -C -, wget -c) and parallel download managers work. Servers advertise support with Accept-Ranges: bytes.
Using 206 correctly
- If a range is impossible, like starting past the end of the file, the server returns 416 instead.
Retrying
Not applicable: this isn’t an error.
Example response
HTTP/1.1 206 Partial Content
Date: Wed, 21 Oct 2026 10:30:00 GMT
Content-Range: bytes 0-1023/146515
Content-Length: 1024
Accept-Ranges: bytes
How to return 206
res.status(206).json(result);
@app.post("/items", status_code=206)
def create_item(item: Item):
return item
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusPartialContent)
json.NewEncoder(w).Encode(result)
Related status codes
- 416 Range Not Satisfiable : The byte range in the Range header can’t be served.
- 200 OK : The request succeeded and the response contains the result.
- 304 Not Modified : Tells the client its cached copy is still valid, so no body is sent.
Other 2xx status codes
200 OK · 201 Created · 202 Accepted · 203 Non-Authoritative Information · 204 No Content · 205 Reset Content · 207 Multi-Status
See the full list of HTTP status codes.
Sources
Spotted a mistake? Email hello@devtoolsmith.com and we’ll fix it.
Frequently asked questions
What does HTTP 206 Partial Content mean?
HTTP 206 Partial Content means the server is returning only the byte range the client asked for. When a client sends a Range header, the server can return just that part of the file with 206 and a Content-Range header. This is how video seeking, resumable downloads (curl -C -, wget -c) and parallel download managers work. Servers advertise support with Accept-Ranges: bytes.