Measured in your browserWe advise on speed. We practice it.Loaded just now · real numbers from this visit, not a lab score.
Page loaded
First byte
DOM ready
First paint
Largest paint
DNS lookup
TLS handshake
Transferred
Saved by compression
Requests

Standard HLS and DASH sit twenty-plus seconds behind reality — three six-second segments of buffer plus packaging and delivery — which is fine for a concert and fatal for sports betting, auctions or anything watched next to a social feed. The low-latency variants get glass-to-glass down to two-to-five seconds while keeping HTTP delivery and CDN scale. The catch is that they only work when the entire chain cooperates, and a chain that half-cooperates delivers standard latency with extra fragility. Here is what actually changes, what your CDN must do, and when the honest answer is “don’t.”

Decide you actually need it

Latency has a price list. Twenty-to-thirty seconds is standard delivery, robust and cheap. Five-to-ten seconds is achievable with plain short segments — two-second segments and trimmed player buffers — no new protocol machinery at all, and for many “low latency” requirements this is the right answer. Two-to-five seconds is LL-HLS/LL-DASH territory, bought with the operational complexity this guide covers. Under one second is WebRTC-class real-time transport — a different architecture with different scaling economics, not a tuning of HTTP streaming. Write down the number the product genuinely needs and who will notice if it slips: interaction with the stream (betting, bidding, watch-alongs) justifies the middle tier; “it would be nice” does not, because every second of latency removed also removes a second of buffer that used to absorb network trouble.

What LL-HLS and LL-DASH actually change

Both variants attack the same physics — you cannot fetch a segment until it exists — by publishing media in sub-segment pieces as it is produced. LL-HLS splits each segment into parts of a few hundred milliseconds (advertised with EXT-X-PART), lets the server announce the next part before it exists via preload hints, and replaces playlist polling with blocking reloads: the player asks for a playlist version that is not out yet and the server holds the request until it is. Delta playlist updates and rendition reports trim the remaining request overhead. LL-DASH reaches the same place with chunked CMAF: segments are produced and transferred as a stream of small chunks over chunked transfer encoding, and the player reads the live edge as bytes arrive. Notably, LL-HLS’s original HTTP/2 push requirement is long gone (removed in the 2023 authoring-spec revision), so both run over ordinary H1.1/H2/H3 delivery — which is exactly why CDN behaviour, next, becomes the deciding factor. Background reading with the tag-level detail sits in our LL-HLS explainer.

What the CDN must do (and often does not)

Three behaviours are non-negotiable, and each one defaults wrong on a generic configuration. The edge must pass through chunked transfers as bytes arrive — an edge that buffers a full response before forwarding adds back the latency the packager just removed. It must handle blocking playlist requests correctly: those are long-held requests distinguished by query parameters (_HLS_msn, _HLS_part), so the cache key must include exactly those parameters and the platform must tolerate thousands of held-open connections collapsing onto one origin fetch. And it must collapse requests for parts while they stream: at part sizes of a few hundred milliseconds, per-object request rates are several times standard HLS, and without collapse-while-streaming the origin melts precisely at peak. Major platforms document LL-HLS support explicitly — take the documentation as an invitation to test, not a guarantee: prove pass-through, blocking behaviour and part hit ratios (they should sit above the mid-nineties once warm) on a staging stream before committing an event to it.

Player, packager and the settings that matter

The packager sets part duration — commonly 200 milliseconds to one second; shorter cuts latency and multiplies request rate, and encoder keyframe cadence must align with segment boundaries or the ladder cannot switch cleanly. The player must actually implement the low-latency mode: modern hls.js, Shaka and Apple’s native player all do, but each has hold-back tunables (how far behind the true live edge to sit — honour the server-advertised values before customizing) and needs playback-rate adjustment enabled so it can drift back to the edge after a wobble instead of stalling. Leave the non-LL fallback intact: the same playlists serve legacy players at standard latency, which is both your compatibility story and your incident escape hatch. And keep the ladder modest — with two seconds of buffer there is no room for optimistic up-switching; stable rungs beat pretty ones, for the reasons laid out in fighting rebuffering.

Rollout, measurement and the fallback

Roll out as an overlay, not a cutover: run the LL variant on a canary audience while the same event serves standard latency to everyone else, and compare the pair on stall ratio, startup and actual measured glass-to-glass (timestamp burned into the picture, read at the player — the only honest latency measurement). Expect to trade a little stability for the latency and decide the trade explicitly per content type. Keep a rehearsed switch back to standard delivery — one config change or one manifest swap — because low-latency failure modes (a buffering middlebox, a part-cache misconfiguration) surface under real audiences, and the fallback that saves the event is the one from the plain live setup in live streaming delivery. Teams that regret low latency are almost always teams that shipped it everywhere at once; teams that stage it per event, with the escape hatch tested, keep the two-second wow without the 2 a.m. pages.

Get the free assessmentMore analysis