HTTP 206 Partial Content
The server is delivering only part of the resource because the client sent a Range header — used for video streaming, resumable downloads, and progressive loading.
Check a URL for HTTP 206
Paste any URL to see whether it currently returns 206. Runs a live HTTP probe and follows redirects.
TL;DR
A 206 means the server sent only the chunk of a file you asked for — used for streaming video, resuming a download, or progressively loading a large file. It is normal and expected for media content. The fix-it list is empty unless your CDN or origin is returning 206 for things that should be a full 200 response.
What does HTTP 206 mean?
HTTP 206 Partial Content is a success response (it's not an error) that tells the client "here is the slice of the file you asked for." It is triggered when the request includes a Range header like Range: bytes=0-1023, asking for a specific byte range instead of the whole resource. The server replies with 206, a Content-Range header describing the slice that was returned, and just that slice in the body. This is how YouTube, Netflix, Spotify, and modern browsers stream video and audio without downloading the entire file upfront.
Common Causes
- •<video> or <audio> element seeking inside a media file
- •Resumable downloads (curl --continue-at, wget -c, browser download manager)
- •PDF.js loading only the pages currently in view
- •CDN edge serving large file slices in parallel
- •Mobile app downloading large assets in chunks to survive a flaky network
- •BitTorrent-style HTTP clients fetching segments of a large file
How to Fix It
- 1.A 206 on a media file or large download is correct — no action needed
- 2.If a small HTML page or API endpoint returns 206 unexpectedly, check whether a misbehaving client is sending Range headers it shouldn't
- 3.If videos won't seek in Safari or iOS, your server probably isn't honouring Range requests — enable byte-range support on Nginx (default), Apache (mod_dir + AcceptRanges), or your CDN
- 4.For S3 / Cloudflare R2 / Backblaze B2, byte-range support is on by default — confirm your origin isn't stripping the Range or Accept-Ranges headers
- 5.If a download client repeatedly re-fetches the whole file instead of resuming, your server is probably returning 200 instead of 206 — check the Accept-Ranges: bytes response header is present
SEO Impact
No direct SEO impact. 206 is a success response for byte-range requests on media files — Googlebot doesn't make range requests when crawling HTML, so you'll never see 206 on indexable pages. If your video sitemap pages serve media that needs to be played by Googlebot Video, byte-range support is required (Google can't index a video the player can't seek through).
Monitor HTTP 206 with LemWatch
LemWatch reports the final status code on monitored URLs, so a healthy media endpoint will register as 200/206 depending on whether the check sent a Range header. We can also probe video endpoints with explicit Range requests to verify byte-range support is working — critical for sites that depend on video playback.
History & Context
Range requests were introduced in HTTP/1.1 (RFC 2616, 1999) and refined in RFC 7233 (2014). They became essential when HTML5 video and audio shipped — every modern browser uses range requests to seek inside a media file without re-downloading it. They are also how tools like curl --continue-at and wget --continue resume interrupted downloads.
Real-World Examples
YouTube and Netflix
Every video frame you scrub to is fetched via a range request — the player asks for the byte range corresponding to that timestamp, the CDN returns 206 with just that slice.
Safari on iOS
Apple's media stack requires byte-range support to play <video> elements at all. A server that returns 200 with the whole file (no Accept-Ranges header) will fail to play in Safari.
Cloud storage downloads
AWS S3, Cloudflare R2, and Google Cloud Storage all return 206 by default for any request with a Range header — enabling resumable uploads/downloads and parallel multi-part downloads.
A range request and its 206 response
http
# Client asks for the first 1024 bytes of a video file:
GET /video.mp4 HTTP/1.1
Host: cdn.example.com
Range: bytes=0-1023
# Server responds with 206 and just that slice:
HTTP/1.1 206 Partial Content
Content-Type: video/mp4
Content-Range: bytes 0-1023/15728640
Content-Length: 1024
Accept-Ranges: bytes
<binary bytes 0–1023 of video.mp4>Frequently Asked Questions about HTTP 206
What does HTTP 206 mean?
HTTP 206 Partial Content means the server returned only the slice of the resource that the client asked for via a Range header, not the whole thing. It is a success response, not an error.
Why am I seeing a 206 status code?
Because the client (a browser, video player, or download manager) sent a Range header asking for a specific byte range of the file. This is how streaming video, audio scrubbing, and resumable downloads work — the file is fetched in slices, each slice returns 206.
Is HTTP 206 an error?
No. 206 is in the 2xx success range. It means "here is the partial content you asked for" — the request succeeded.
When should a server return 206 instead of 200?
Whenever the request includes a Range header that the server can honour. If the server ignores the Range and returns the entire file, it should use 200; if it returns just the requested bytes, it should use 206 with a Content-Range header.
How do I enable 206 / byte-range responses on my server?
Nginx supports byte-range responses by default. Apache needs mod_dir and a server config that doesn't strip the Accept-Ranges header. S3, Cloudflare R2, and most CDNs handle this automatically. The key signal: your origin must send Accept-Ranges: bytes in its responses, and not strip Range headers from requests.
Why won't my video play in Safari?
Almost always because your server isn't returning 206 for range requests on the video file. Safari and iOS WebKit require byte-range support to play <video> — they'll refuse to play a video served via a single 200 response.
What is the difference between 206 and 416?
206 means "here is the byte range you asked for." 416 Range Not Satisfiable means "the byte range you asked for falls outside the size of the file." 416 is the error counterpart of 206.
Related Status Codes
Free Website Tools
Check your site for common issues that cause HTTP errors: