206 Partial Content

Only part of the resource is returned.

When to use it

Answering a Range request, for video streaming or resumable downloads.

Good to know

Servers send 206 only when the client asks with a Range header, such as Range: bytes=0-1023, and the server supports ranges, advertised with Accept-Ranges: bytes. The response carries Content-Range: bytes 0-1023/146515 with the total size. Safari and iOS require range support for video: if your server ignores Range and returns 200, MP4 playback often fails outright.

Requests past the end of the file get 416. Several ranges in one request come back as multipart/byteranges. Ranges apply to the encoded bytes, so servers usually skip gzip for media. Behind a CDN, check that partial requests are cached and served correctly, not passed to the origin every time. Test with curl -r 0-99 -i, and resumable downloads with curl -C - -O.

Success (2xx)

2xx codes mean success: the server received, understood and accepted the request.

What it looks like

HTTP/1.1 206 Partial Content

How to send it

Node.js / Expressres.status(206).end()
Python / Flaskreturn '', 206
nginxreturn 206;

How to check it

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

Open HTTP Status Codes