206 Partial Content
The server is delivering only part of the resource in response to a Range header, typically for large file or media downloads.
Defined in RFC 9110 §15.3.7
What 206 means
HTTP 206 Partial Content is returned when a client asks for only part of a resource using a Range header and the server honors that request instead of sending the whole thing. It is the backbone of resumable downloads and media streaming: a video player can request just the next chunk of a file, a download manager can resume an interrupted transfer from the last byte it received, and a PDF viewer can fetch only the pages currently in view. The response includes a Content-Range header describing which bytes were returned and out of what total size, along with the partial payload itself.
For a range request to succeed with 206, the server must support byte-range requests on that resource, typically advertised in advance via an Accept-Ranges: bytes header on the full response, and the resource must not have changed between the original download and the resumed one. Servers validate this with conditional headers like If-Range, comparing an ETag or Last-Modified value; if the resource changed, they should return the full 200 response instead of a now-inconsistent partial one. A client can also request multiple non-contiguous ranges in one request, in which case the server returns a multipart/byteranges response body.
CDNs, static file servers, and object storage services widely support range requests for large files, since they let clients parallelize downloads across multiple ranges or resume after a network interruption without re-transferring already-received bytes. Media streaming in particular relies heavily on 206, since browsers issue range requests as users seek through a video or audio track rather than downloading the entire file up front. Misconfigured servers that ignore Range headers and always return 200 with the full body silently break resumable downloads and seeking.
Common causes
- A client sent a Range header requesting specific bytes of a resource, and the server supports partial delivery for it.
- A media player is seeking within an audio or video file and requests only the bytes needed for that position.
- A download manager is resuming an interrupted transfer and requests the remaining bytes after the last one it already saved.
- A download accelerator splits a large file into multiple concurrent range requests to speed up the transfer.
How to fix a 206
If you are the client (browser user or API caller)
- Send an Accept-Ranges-aware Range header only after confirming the server supports partial content for that resource, typically via a prior HEAD request.
- Include an If-Range conditional header with the ETag or Last-Modified value from the original download to avoid stitching together bytes from two different resource versions.
- Handle both 206 and a fallback 200 response gracefully, since some servers ignore Range headers entirely and return the full resource.
If you run the server
- Advertise range support with Accept-Ranges: bytes on full responses for resources that can be safely served in parts.
- Return an accurate Content-Range header on every 206 response, and honor If-Range so a changed resource falls back to a full 200 instead of a broken partial response.
- Support multipart/byteranges responses for clients requesting multiple discontiguous ranges in a single request.
- Configure CDNs and object storage in front of large media or downloadable files to pass Range headers through instead of always serving full responses.
Example
GET /videos/lecture-01.mp4 HTTP/1.1
Host: media.example.com
Range: bytes=1000000-1999999
HTTP/1.1 206 Partial Content
Content-Range: bytes 1000000-1999999/52428800
Content-Length: 1000000
Accept-Ranges: bytes
Content-Type: video/mp4Try it live
Our free status responder returns a real HTTP 206 you can point tests, monitors or a browser at.
GET https://mcp.httpstatus.com/status/206