Official Instance
Describe the bug
In short it's a piped-proxy issue with how it interprets the length of the video in bytes for the headers.
I have solved this on my fork's image: logicalkarma/piped-proxy.
Write-up from Claude:
Since handle_range_response_correction uses the upstream response's Content-Length as total_size, any range request with a non-zero start byte produces a malformed Content-Range header. The upstream Content-Length reflects the size of the returned chunk, not the full file, so the synthesized header has end < start and the wrong denominator. Curl ignores the header mismatch, and Librewolf typically dodges the bug because its eager-prefetch behavior issues a single open-ended range from byte 0 and never seeks past the buffer. Vanilla Firefox and Chromium both hit it on seek-past-buffer in itag-18 (360p progressive) playback, presenting as an indefinite "loading" spinner; in Chromium, DevTools shows the response aborting after ~700 bytes. The fix is to use the clen query parameter (canonical full file size) instead of the upstream Content-Length.
To Reproduce
- Find a video that fallbacks to itag-18 (no configurable resolution - 360p)
- Go somewhere towards the end of the video.
- Player loads indefinitely
Expected behavior
- Find a video that fallbacks to itag-18 (no configurable resolution - 360p)
- Go somewhere towards the end of the video.
- Player moves to the expected time and plays
Logs/Errors
No response
Browser, and OS with Version.
Anything that does not cache the entire video. All browsers except some privacy centric ones which avoid this bug unintentionally (Ironwolf, Librewolf).
Additional context
No response
Official Instance
Describe the bug
In short it's a piped-proxy issue with how it interprets the length of the video in bytes for the headers.
I have solved this on my fork's image: logicalkarma/piped-proxy.
Write-up from Claude:
Since handle_range_response_correction uses the upstream response's Content-Length as total_size, any range request with a non-zero start byte produces a malformed Content-Range header. The upstream Content-Length reflects the size of the returned chunk, not the full file, so the synthesized header has end < start and the wrong denominator. Curl ignores the header mismatch, and Librewolf typically dodges the bug because its eager-prefetch behavior issues a single open-ended range from byte 0 and never seeks past the buffer. Vanilla Firefox and Chromium both hit it on seek-past-buffer in itag-18 (360p progressive) playback, presenting as an indefinite "loading" spinner; in Chromium, DevTools shows the response aborting after ~700 bytes. The fix is to use the clen query parameter (canonical full file size) instead of the upstream Content-Length.
To Reproduce
Expected behavior
Logs/Errors
No response
Browser, and OS with Version.
Anything that does not cache the entire video. All browsers except some privacy centric ones which avoid this bug unintentionally (Ironwolf, Librewolf).
Additional context
No response