Select Language:
If you’re experiencing problems with your video loading or streaming on your website, the main cause is often related to a setting called Response Headers Policy, specifically the ETag header. When this header is set to “Remove,” it creates an invalid ETag value, which messes up how browsers and servers communicate during video playback.
Here’s what typically happens: When a user first visits a page, their browser fetches the video metadata and receives an ETag value set as “Remove.” On subsequent requests, the browser sends an If-Range header with the ETag “Remove” along with a range request to load part of the video. But since “Remove” isn’t a valid ETag, the server can’t verify if the video has changed. As a result, instead of sending just the needed part (which would be a 206 Partial Content response), the server sends the entire file with a 200 OK status. This toggling causes the video to load slowly, use more bandwidth, and deliver a poor experience.
To fix this problem, you need to remove the custom ETag override from your Response Headers Policy in CloudFront. The ETag header is important because it helps browsers and servers verify whether the content has changed. It supports range requests, caching, and conditional requests—all essential for smooth video streaming.
Follow these steps to correct the issue:
1. Open the CloudFront console and go to Policies, then Response Headers.
2. Find your Response Headers Policy and click to edit it.
3. Look for the setting that adds or modifies the ETag header, especially any that set it to “Remove.”
4. Remove or disable this header modification.
5. Save your changes and wait until the new setup is deployed.
6. If your videos are cached, consider creating an invalidation for the objects (like entering /*) so that the new headers take effect immediately.
After making this correction, verify everything is working properly. Your server responses should now look like this:
“HTTP/1.1 206 Partial Content
ETag: “your-valid-md5-hash”
Content-Range: bytes x-y/z”
This means the Range Requests are functioning correctly, and the video streams smoothly.
Why keep the ETag from your storage provider like S3? Because S3 generates ETags as MD5 hashes of your file content, which are reliable for validation. Single-part uploads produce an MD5 hash of the entire file, while multipart uploads create a combined hash based on parts. Maintaining these ETags ensures content integrity, helps browsers cache correctly, and supports proper range requests for your videos.
If you absolutely need to modify some headers while keeping ETags, just avoid overriding or removing the ETag header in your response policy. Let the origin—like S3—manage it naturally.
Remember, range requests are especially crucial for streaming videos. They let browsers load only necessary parts, seek to different points, and buffer seamlessly. When ETags are invalid, this flow breaks, leading to more bandwidth use, slower loading times, and a frustrating user experience.
Finally, after fixing the headers, it’s helpful to run some quick commands to test your setup:
– To check if range requests work correctly, run:
curl -I ‘https://your-distribution.cloudfront.net/video.mp4’ -H ‘Range: bytes=0-1000’ -H ‘If-Range: “your-valid-md5-hash”‘
You should see a response with “HTTP/1.1 206 Partial Content.”
– To confirm the ETag value, run:
curl -I ‘https://your-distribution.cloudfront.net/video.mp4’ | grep -i etag
It should show your proper hash, not “Remove.”
By removing the invalid ETag setting, your video streaming will become faster, more reliable, and less costly in bandwidth. This small change makes a big difference for a smooth multimedia experience on your site.




