206 Partial Content and HTTP range requests

206 Partial Content means the server is sending only the byte range the client asked for, as used by video players and resumable downloads.

Check a URL’s status code

206 Partial Content means the server is sending only part of a file because the client asked for a specific byte range. It’s how video players seek, download managers resume, and PDF viewers fetch one part of a document at a time.

Definition

RFC 9110, section 15.3.7 says the server is “successfully fulfilling a range request” by transferring one or more parts of the representation. The client sends a Range header; the server answers with Content-Range describing which bytes it sent, or with a multipart/byteranges body for several ranges. Servers advertise support with Accept-Ranges: bytes, and a range that can’t be served gets 416 Range Not Satisfiable.

GET /media/intro.mp4 HTTP/1.1
Host: www.example.com
Range: bytes=0-1048575

HTTP/1.1 206 Partial Content
Content-Type: video/mp4
Content-Range: bytes 0-1048575/48211533
Content-Length: 1048576
Accept-Ranges: bytes

Where range support matters

  • Video and audio: players request ranges to start quickly and to seek. Safari in particular expects range support for video files.
  • Large downloads that should resume after a dropped connection.
  • PDFs opened in a browser viewer.

Apache and Nginx handle ranges for static files out of the box. Problems usually come from application code that streams files without reading Range, or from proxies that strip it.

SEO impact

A 206 is the normal answer to a range request, so it isn’t an error. The risk is the reverse: a server or cache that sends 206 and a fragment to a request without a Range header. A crawler fetching your HTML then gets a truncated page. A plain GET for a page should return 200 with the complete document. Google’s status code documentation doesn’t discuss 206, so don’t count on special handling. (Don’t confuse it with 304 Not Modified, which sends no body at all because the client’s cached copy is still current.)

How to check

The HTTP header checker shows whether a file advertises Accept-Ranges: bytes, and the HTTP status checker confirms that a normal request returns 200. To test a range yourself:

curl -s -o /dev/null -w "%{http_code}\n" -r 0-1023 https://www.example.com/media/intro.mp4
206

Frequently asked questions

Is 206 Partial Content an error?

No. It’s a success response to a range request, used for video streaming, resumable downloads and PDF viewers.

Why does my video not play or seek in Safari?

A common cause is a server or script that ignores the Range header and always sends the whole file with 200. Make sure media files are served with range support so the server can answer 206.

Can a 206 response hurt SEO?

Only if a server sends 206 and a partial page to a normal request without a Range header, so crawlers get truncated HTML. Regular page requests should get 200 and the full document.