
Key takeaways
• Edge fixes network time, not buffer time. Low latency live streaming is bounded by your encoder GOP and your player buffer. Moving delivery to a point of presence near the viewer saves tens of milliseconds of round trip — real, but not the seconds you are chasing.
• Build the budget before you buy anything. Capture, encode, ingest, package, deliver, buffer, render — put a millisecond number on each line, then attack the biggest one. Most teams buy edge capacity to fix a player-buffer problem.
• LL-HLS is cheap to reach and expensive to run. Cutting six-second segments into 200 ms parts — the trick behind LL-HLS, or Low-Latency HTTP Live Streaming — multiplies HTTP requests roughly 30×. On a per-request CDN that line item shows up in the invoice before the latency win shows up in the player.
• WebRTC wins below a few thousand concurrent viewers. Past that, forwarding CPU on your own SFU — the selective forwarding unit that relays WebRTC streams — costs more than CDN bytes, and the hybrid SFU-to-CDN topology wins on both price and reach.
• Sub-second at scale is a solved problem. On Worldcast Live we shipped 0.4–0.5 s glass-to-glass for 10,000 simultaneous concert viewers. The architecture is in this playbook.
Why Fora Soft wrote this playbook
Every low latency live streaming project we inherit has the same shape: someone bought an edge CDN, the sales deck promised sub-three-second delivery, and the stopwatch says nine. The money is spent, the launch date is fixed, and nobody in the room can say which component ate the six seconds. That gap between the invoice and the stopwatch is what this playbook is for.
Fora Soft is a software development company that has been building video and real-time communication software since 2005 — 250+ projects, 50 in-house engineers, more than 1,000 person-years of engineering, and a 100% job success score on Upwork. Latency is the thread running through most of it. On Worldcast Live we held 0.4–0.5 s glass-to-glass while 10,000 people watched the same concert. On Tyxit, a Swiss startup for remote musical collaboration, we worked under 30 ms of audio latency — musicians played synchronously between the Montreux Jazz Festival and Jazz à Vienne stages in 2022. On TradeCaster, 46,000+ traders watch live desktop streams where a two-second delay is a losing position.
Most guides on this topic are published by companies that sell edge capacity, so they end with the same conclusion. We sell engineering time, which means our incentive is the opposite: if edge is the wrong answer for your workload, we would rather say so on page four than discover it in week nine. Everything below is written the way we brief a new streaming client — budgets first, physics second, vendors last.
Not sure which component owns your six seconds?
Send us your pipeline. We will map the latency budget line by line and tell you which fix is worth paying for — free, 30 minutes, no deck.
What low latency actually means in 2026
Low latency live streaming means glass-to-glass delivery under about five seconds, and the industry now treats anything under one second as a separate tier called real time. Glass-to-glass is the interval between light hitting the camera sensor and the same frame lighting up a viewer’s screen. It is the only number worth arguing about, because it is the one your audience experiences.
Two measurements get mixed up constantly. Glass-to-glass covers the whole chain. Wall-clock offset measures how far the live edge of your stream trails real time, which excludes the camera and the display. Vendors quote whichever is smaller. Ask which one you are being sold, in writing, before you sign.
| Tier | Glass-to-glass | What it buys you | Typical stack |
|---|---|---|---|
| Real time | Under 500 ms | Two-way conversation, remote instrument control, live auction bidding | WebRTC, MoQ |
| Ultra low latency | 0.5–2 s | Sports betting, live shopping with a chat that still feels connected | WebRTC over edge, SRT contribution |
| Low latency | 2–5 s | Sport ahead of the neighbour’s TV, live classes, town halls | LL-HLS, LL-DASH over CMAF |
| Reduced latency | 5–12 s | Most consumer OTT, concerts, keynotes | Tuned HLS with 2 s segments |
| Standard | 15–30 s | VOD-style events where nobody is comparing notes | HLS or DASH with 6–10 s segments |
The tiers are not a quality ladder. They are a cost ladder. Every step down multiplies request volume, shrinks your encoder’s look-ahead window, and narrows the set of devices that can play your stream at all. Picking a tier tighter than your product needs is the most common way to burn a streaming budget.
Reach for the real-time tier when: the viewer sends something back that has to land inside the same breath — a bid, a note, a camera pan, a “wait, say that again”. ITU-T Recommendation G.114 calls anything under 150 ms one way transparent to a listener and treats 400 ms as the outer edge of what is acceptable for network planning at all. If nobody talks back, you are paying for latency you cannot use.
The latency budget: where the milliseconds go
A latency budget is a line-item allocation of milliseconds across the seven stages between camera and eyeball, and it is the single most useful artefact in a streaming project. Build it before the architecture discussion, not after. Ninety percent of the arguments about edge, protocol and vendor evaporate once the numbers are on one page.
Here is the budget for a 1080p30 event stream in three configurations we have shipped. Numbers are field ranges from our own instrumentation, not vendor claims.
| Stage | Standard HLS | LL-HLS (200 ms parts) | WebRTC | What controls it |
|---|---|---|---|---|
| Capture and camera pipeline | 30–60 ms | 30–60 ms | 20–40 ms | Sensor readout, capture card, OS buffer |
| Encode | 300–600 ms | 150–400 ms | 20–50 ms | GOP (group of pictures) length, look-ahead, B-frames, preset |
| Contribution to origin | 150–400 ms | 150–400 ms | n/a | SRT or RIST ARQ buffer, usually 2× RTT |
| Packaging | 6,000–10,000 ms | 200–400 ms | 0 ms | Segment duration versus CMAF chunk duration |
| Origin to edge to player | 40–120 ms | 20–120 ms | 20–80 ms | Physical distance, peering, TLS handshakes |
| Player buffer | 12,000–18,000 ms | 600–900 ms | 60–200 ms | Segments or parts held before playback starts |
| Decode and render | 50–100 ms | 50–100 ms | 30–60 ms | Device class, hardware decode path |
| Total glass-to-glass | 18.6–29.3 s | 1.2–2.4 s | 0.15–0.43 s |

Figure 1. The same event, three pipelines. Packaging and player buffer own the seconds; everything else is rounding error.
Read the table column by column and the whole topic collapses into one observation. In the standard HLS column, packaging plus player buffer is 18–28 of the 29 seconds. In the LL-HLS column the same two lines are 0.8–1.3 of the 2.4 seconds. Network time never exceeds 120 ms in any column. That is the number an edge CDN can move.
Do the arithmetic on your own stream before anyone quotes you a price. Take the segment duration your packager emits, multiply by the number of segments your player buffers (three is the Apple-recommended default for standard HLS), and you have the floor of your current latency. A 6-second segment with a three-segment buffer floors you at 18 seconds no matter which CDN carries the bytes.
Reach for a latency budget when: your measured glass-to-glass is more than 1.5× your target and you cannot name the stage responsible. Thirty minutes with a spreadsheet beats three weeks of vendor demos.
What edge computing fixes, and what it cannot
Edge computing removes network round trip and origin load. It does not remove encoder time, packaging time or player buffer time, which is where 55% to 97% of live streaming latency actually sits, depending on the pipeline. That sentence is the whole section, and it contradicts roughly every edge marketing page on the internet.
Work the numbers. A viewer in Chicago pulling from a single origin in Frankfurt sees around 100–110 ms of round trip; the same viewer hitting a Chicago point of presence sees 5–15 ms. Real saving: roughly 95 ms. Against an 1,800 ms LL-HLS budget that is 5%. Against a 300 ms WebRTC budget it is 30% — which is why edge matters enormously for real-time workloads and only modestly for segmented ones.

Figure 2. Edge collapses the network bar and offloads the origin. The packaging and buffer bars do not move unless you change the packaging and the buffer.
So why does edge still matter for segmented delivery? Three reasons that have nothing to do with the latency number. First, cache offload: one origin cannot serve 100,000 simultaneous part requests, and the failure mode is not slowness, it is a stalled stream for everyone. Second, TLS termination: a new viewer pays a full handshake before the first byte, and at the edge that round trip is 15 ms instead of 110 ms. Third — the one that moves latency — packaging at the edge, which we get to next.
The honest framing to take into a vendor call: edge is an availability and cost decision that pays a small latency dividend, except for WebRTC and MoQ where it is a latency decision outright.
Three edge layers: cache, package, compute
“Edge” means three different things — an edge cache that stores segments near the viewer, edge packaging that cuts CMAF chunks at the point of presence, and edge compute that runs your code there — and only the second one reliably moves the latency number. Naming them separately is the fastest way to make a vendor conversation productive.
Layer 1 — edge cache
The classic CDN point of presence. It stores segments, parts and manifests and serves them from a location near the viewer. It cuts round trip, absorbs origin fan-out, and does nothing at all to your buffer. Cheapest to adopt: usually a DNS change and a cache-key policy. Watch the manifest TTL — a low-latency manifest cached for two seconds quietly adds two seconds.
Layer 2 — edge packaging
The packager runs at the point of presence. You push one mezzanine feed per region; the edge cuts CMAF (Common Media Application Format) chunks, writes the parts and rewrites the playlist locally. This removes a full origin round trip from the path of every part and eliminates the origin as a throughput bottleneck. It is the only edge layer that reliably moves the latency number for segmented streaming. The two mechanisms are not the same: LL-HLS ships each part as its own addressable resource and leans on blocking playlist reloads, while LL-DASH streams a still-open segment with HTTP chunked transfer encoding. Either way the packager has to sit near the viewer for the trick to pay off.
Layer 3 — edge compute
Serverless functions at the point of presence: token validation, manifest personalisation, geo steering, server-side ad insertion, A/B routing. This moves decision logic off the origin round trip. The trap is cold starts — a 200–900 ms cold start on the manifest path costs more than the origin hop you removed. Keep edge functions off the critical playback path unless they are warm and measured.
| Layer | Latency effect | Cost shape | Adopt when |
|---|---|---|---|
| Edge cache | −20 to −90 ms network | Per GB and per request | Always, once you have viewers outside one metro |
| Edge packaging | −1 segment or −1 part round trip; removes origin ceiling | Per region compute, roughly $200–900/mo per PoP | You are chasing sub-3 s and already run LL-HLS |
| Edge compute | Neutral at best; negative if cold | Per million invocations | Auth, personalisation or ad logic, kept off the playback path |
Reach for edge packaging when: you already emit CMAF chunks, your measured latency is 3–5 s, and the residual is origin round trip rather than player buffer. If your buffer is still holding three segments, fix that first — it is free.
Want the edge layer that actually moves your number?
We will look at your manifest, your cache keys and your player config and tell you which of the three layers is worth buying for your workload.
Protocol picker: WebRTC, LL-HLS, LL-DASH and MoQ
WebRTC (Web Real-Time Communication) is the fastest and the hardest to scale; LL-HLS is the slowest of the low-latency options and the easiest to run at millions of viewers; Media over QUIC (MoQ) is the interesting third path that is still a draft. Everything else is a variation on those three trade-offs.
| Protocol | Glass-to-glass | Scale ceiling | DRM | Connected TV | Where it breaks |
|---|---|---|---|---|---|
| WebRTC | 0.2–0.8 s | Thousands per SFU cluster; CPU-bound | No standard DRM path | Patchy; needs a native shim | Cost per viewer stays flat — no cache amortisation |
| LL-HLS | 2–4 s | Effectively unlimited via CDN | Widevine, FairPlay, PlayReady | Good on recent firmware | Request volume and per-request billing |
| LL-DASH / LL-CMAF | 2–5 s | Effectively unlimited via CDN | Widevine, PlayReady | Good on Android TV, weak on Apple | No native Safari path without a fallback |
| SRT (contribution) | 1–2 s first mile | Point to point | n/a | n/a | Not a delivery protocol — ingest only |
| RTMP (contribution) | 3–5 s | Point to point | n/a | n/a | Flash-era codec constraints; still the default in OBS |
| Media over QUIC | ≈0.4 s reported | Relay fan-out, CDN-like | Early | Not yet | Still a draft; production use is early-adopter territory |
| Standard HLS / DASH | 15–30 s | Unlimited | Full | Universal | Latency, obviously — but it never breaks |
One 2026 detail worth knowing: Media over QUIC is real enough to demo and not yet real enough to bet a launch on. The transport document sits at draft-ietf-moq-transport-19, standards track, revised on 6 July 2026. Multiple vendors ran an interoperability demo at NAB 2026 and Cloudflare operates relays, with production reports clustering around 400 ms. It is not an RFC. Anyone telling you MoQ is production-ready in 2026 is selling something.
The other detail that changes architectures: WHIP, standardised as RFC 9725 in 2025, gives WebRTC an HTTP-shaped ingest, and its counterpart WHEP does the same for egress. That pair is what lets WebRTC ride edge infrastructure that was built for HTTP, which used to be the reason you could not put WebRTC behind a CDN. We wrote up the ingest side separately in our WHIP and WHEP versus RTMP guide.
Reach for LL-HLS when: you need DRM, connected-TV reach and a viewer count you cannot predict, and 2–4 seconds is inside your product’s tolerance. That describes most sports, most education and most events.
Reach for WebRTC when: the viewer talks back, or the stream is worthless past one second — auctions, trading, remote production, telehealth, esports coaching. Accept that per-viewer cost will not amortise the way CDN bytes do.
Four edge streaming architectures worth knowing
Four topologies cover almost everything shipped in production: central origin plus CDN, edge CDN with LL-HLS, edge SFU for WebRTC, and hybrid SFU-to-CDN. Each has a distinct cost shape and a distinct failure mode.

Figure 3. Four topologies with the measurement points named. Instrument the marked hops or you will be guessing when latency drifts.
1. Central origin plus CDN
One origin packages, a CDN distributes. Simple, cheap, 15–30 s of latency, and it never surprises you. Still the right answer for keynote replays, church services and anything where nobody is comparing notes on a second screen. Failure mode: origin saturation during a spike, which stalls everyone at once.
2. Edge CDN with LL-HLS or LL-CMAF
The packager emits 200–500 ms CMAF chunks; the edge serves each part as its own addressable resource and honours blocking playlist reloads. Lands at 2–4 s with full DRM and connected-TV support. Failure mode: an edge that caches the media playlist or ignores blocking reloads, which silently returns you to standard HLS latency while the invoice still says low latency.
3. Edge SFU for WebRTC
Selective forwarding units in several regions, viewers connect to the nearest one, streams are forwarded rather than transcoded. Sub-second, two-way capable, and CPU-bound: a forwarding core handles a fixed number of outbound streams regardless of how many people want the same content. Failure mode: cost that scales linearly with audience, forever.
4. Hybrid SFU to CDN
The interactive core (presenters, callers, bidders) rides an SFU; the passive audience gets a WHEP or LL-HLS feed off a CDN. Presenters see each other in 200 ms, the crowd sees the show in 2 s, and the bill scales with bytes instead of cores. This is the topology we reach for most often. Sprii, a Danish live-commerce platform that has moved €365M+ in sales across 72,000+ live events, runs exactly this split.
Reach for hybrid SFU to CDN when: fewer than 50 people need to be heard and more than 5,000 need to watch. That ratio describes live shopping, town halls, auctions, and every classroom bigger than a seminar.
Vendor and pricing reality in 2026
Published list prices, checked July 2026. Treat them as the ceiling: committed-volume contracts routinely land 40–80% below list, and the spread between the cheapest and most expensive credible option is roughly 8×.
| Vendor | Model | List price (2026) | Latency you can expect | Fit |
|---|---|---|---|---|
| Cloudflare Stream | All-in per minute | $1 per 1,000 min delivered, $5 per 1,000 min stored; ingress and encoding free | HLS/DASH on the default path; sub-second only on their WebRTC beta | Fastest path to a working live stream with no infrastructure |
| AWS CloudFront + MediaLive | Per GB plus per request | From ~$0.085/GB first 10 TB, ~$0.01 per 10,000 HTTPS requests | 2–4 s tuned | Already on AWS, need fine control |
| Bunny CDN | Per GB | From $0.01/GB in Europe and North America | 2–5 s, depends on your packager | Cost-driven, willing to run your own origin |
| Self-hosted SFU (LiveKit, mediasoup, Janus) | Per server | Bare metal from ~$150–250/mo per forwarding node | 0.2–0.8 s | Interactive workloads, predictable concurrency |
| Managed WebRTC platforms | Per participant minute | Typically $0.001–0.004 per participant minute | 0.2–0.5 s | Small interactive audiences, no infra team |
Two traps in that table. The per-minute models look expensive next to $0.01/GB until you add up packaging, storage, player licensing and the engineer who keeps it alive — then they usually win below a few hundred thousand viewer-minutes a month. And the per-request line on hyperscaler CDNs is the one that ambushes LL-HLS deployments, which is the next section.
Prices above come from the vendors’ own pages: Cloudflare Stream pricing, Amazon CloudFront pricing and Bunny CDN pricing. Check them before you quote anyone — CDN price lists move two or three times a year.
Cost math at one million viewer-minutes
At one million viewer-minutes of 1080p at 5 Mbps, you are moving 37.5 TB, and the delivery bill runs from about $375 to about $3,790 depending on which CDN carries it and how low your latency goes. Here is the arithmetic in full, because every vendor comparison you will read hides it.
Start with bytes per viewer-minute. A 5 Mbps stream is 5 ÷ 8 = 0.625 MB per second, and 0.625 × 60 = 37.5 MB per viewer-minute. One million viewer-minutes is therefore 37,500,000 MB, or 37,500 GB.
| Line item | Standard HLS (6 s segments) | LL-HLS (200 ms parts) | WebRTC via SFU |
|---|---|---|---|
| Bytes delivered | 37,500 GB | 37,500 GB | 37,500 GB |
| Byte charge, CloudFront first-tier list ($0.085/GB) | $3,187 | $3,187 | n/a |
| Byte charge, Bunny list ($0.01/GB) | $375 | $375 | n/a |
| Media requests | 10M segments + 10M manifest reloads | 300M parts + 300M blocking reloads | 0 (peer connections) |
| Request charge, CloudFront ($0.01 / 10,000) | $20 | $600 | $0 |
| Request charge, per-GB-only CDN | $0 | $0 | $0 |
| Forwarding compute | $0 | $0 | ≈250 cores for a 60-min event |
| Total on CloudFront list | $3,207 | $3,787 | see breakeven below |
| Total on Bunny list | $375 | $375 | see breakeven below |
One caveat on that table: we apply CloudFront’s first-tier rate across all 37.5 TB. Their published volume tiers bring the real list figure closer to $3,050, and a committed contract lands lower again. We use the first tier because it is the number you can verify in five seconds, and because nobody negotiates their first invoice.

Figure 4. Same bytes, different request counts. The low-latency premium is the request column, not the byte column.
The request line is the one nobody publishes. Standard HLS at 6-second segments needs 60 ÷ 6 = 10 media requests per viewer-minute. LL-HLS at 200 ms parts needs 60 ÷ 0.2 = 300, plus a blocking playlist reload for each. That is a 30× jump in request volume for the same bytes, and on a CDN that bills per request it adds roughly 18% to a CloudFront-list delivery bill. On a per-GB-only CDN it costs nothing, which is why the cheap CDN gets cheaper the lower your latency goes.
We deliberately do not publish a build price for a streaming platform here. Scope swings the number by an order of magnitude, and a wrong figure in a blog post costs more trust than it earns clicks. If you want a real estimate, book 30 minutes and we will scope it against your actual requirements.
WebRTC versus CDN: where the breakeven sits
Below roughly 2,000–5,000 concurrent viewers a self-run SFU is cheaper and simpler than a CDN; above that, forwarding CPU overtakes CDN bytes and the crossover is decisive. The number moves with your bitrate and your utilisation, so here is how to compute your own.
A WebRTC SFU forwards, it does not transcode, so its limit is network and packet-handling CPU rather than encoding. In our deployments a well-tuned 16-core bare-metal forwarding node sustains roughly 4–6 Gbps of outbound media before jitter starts climbing. At 5 Mbps per viewer that is 800–1,200 concurrent viewers per node. A node of that class costs about $150–250 a month.
So 10,000 concurrent viewers needs 9 to 13 nodes: roughly $1,400–3,200 a month in fixed cost, plus egress. A CDN charges nothing when idle and about $375 (Bunny list) to $3,187 (CloudFront list) for the same 37.5 TB. The deciding variable is not audience size on its own — it is utilisation.
- Always-on, moderate concurrency (a 24/7 trading floor feed, a monitoring wall): the SFU box runs hot all month and the fixed cost amortises. SFU wins.
- Spiky and event-driven (a weekly two-hour show, a product launch): the same box idles 95% of the month. CDN wins, badly.
- Interactive at any size: you need an SFU regardless, because a CDN cannot carry the return path. Bridge the passive tail to a CDN and stop worrying about the crossover.
Worked example. A live-shopping brand runs 60 events a month, two hours each, peaking at 8,000 concurrent. Total viewer-minutes: 8,000 × 120 × 60 = 57.6M, so 2,160 TB at 5 Mbps — but peak concurrency needs 7 to 10 forwarding nodes standing by for 120 hours out of 720. The SFU sits idle 83% of the time while still costing full price. That business belongs on a CDN for the audience and a two-node SFU for the hosts, which is precisely the hybrid topology from the previous section.
Reach for a self-run SFU when: concurrency is predictable, the stream runs most of the day, and viewers need a return path. Otherwise you are renting idle cores.
Is your streaming bill scaling faster than your audience?
We will run the breakeven against your real concurrency curve and show you the topology that fits — including the case where the answer is “change nothing”.
Device and browser reality in 2026
Your low latency live streaming target is set by your worst device, not your best one. A pipeline that hits 2.5 s in desktop Chrome routinely lands at 6–9 s on a living-room screen, and the gap is where most launch-week firefighting happens.
| Platform | LL-HLS | LL-DASH | WebRTC | The catch in 2026 |
|---|---|---|---|---|
| Chrome / Edge desktop | Via hls.js | Via dash.js | Native | Best case; do not calibrate targets here |
| Safari macOS | Native and via hls.js | No native path | Native | Two code paths behave differently on the same content |
| Safari iOS / iPhone | AVPlayer or hls.js via ManagedMediaSource | dash.js on ManagedMediaSource | Native | ManagedMediaSource landed in iOS 17.1; AVPlayer is still the default path |
| Android Chrome | Via hls.js | Via dash.js / ExoPlayer | Native | Wide device spread in decode latency |
| Roku | Firmware player | Limited | No | Low-latency support lags; the usual reason a 3 s target fails |
| Samsung Tizen / LG webOS | Recent firmware only | Yes | Shim required | Fleet spans five years of firmware; test the oldest you support |
| Fire TV | Via ExoPlayer | Yes | No | ExoPlayer buffer defaults are conservative — override them |
Two hls.js reports from 2025 are worth reading before you promise a number. In issue 7452 LL-HLS video runs roughly three seconds behind the audio and the gap widens as the session goes on; in issue 7165 quality-level switching misbehaves specifically in Safari. Both are closed now — one of them as not reproducible — and that is the point: these symptoms are hard to pin down and easy to ship. They will find you in week two if your QA plan only covers desktop Chrome for ten minutes.
Apple’s own LL-HLS guidance is the authority for the iOS path: part duration around 200–300 ms, target latency roughly three parts plus a round trip. If your manifest disagrees with that document, AVPlayer will quietly do its own thing.
Your LL-HLS sits at nine seconds: seven causes
When a configured LL-HLS stream measures 8–10 s instead of 3, the cause is almost always one of seven things: a GOP not aligned to your segment duration, an edge that does not stream parts as they are written, a cached media playlist, a wrong player buffer target, low-latency mode silently deactivating in the player, an ABR switch re-priming the buffer, or a slow last mile — checked in that order. This list is ranked by how often we find each one first.
1. Your GOP is not aligned to your segment duration. Every segment has to start on a keyframe, so an encoder emitting a 2-second GOP against a packager that wants 1-second segments forces the packager to wait. Set the GOP to the segment duration and make it closed. Parts do not need a keyframe of their own — only segments do, which is exactly why this one gets mis-tuned.
2. The edge is not serving parts as they are written. A part is supposed to become available before its segment closes: the player asks for it through a preload hint and the edge answers while the part is still being produced. LL-DASH does the same job with HTTP chunked transfer encoding. An edge that waits for the finished part hands you standard HLS behaviour on a low-latency invoice. Verify with a streaming curl against an edge node, not against origin.
3. The playlist is cached. A media playlist with a 2-second TTL adds up to 2 seconds of staleness on every reload. Low-latency playlists want a TTL of zero and blocking reload support at the edge, which several CDNs still require you to enable per property.
4. The player buffer target is wrong. Players default to safety. hls.js needs lowLatencyMode plus a target latency you set explicitly; ExoPlayer needs its buffer parameters overridden. Defaults will cost you 3–6 seconds and never tell you.
5. Low-latency mode silently deactivated. hls.js drops out of low-latency mode under conditions the app never sees, and the stream settles near 10 s. Log the player’s reported latency mode per session; do not trust the config you shipped.
6. An ABR switch reset the buffer. Every adaptive-bitrate rendition change re-primes the buffer. On a noisy mobile connection with a wide ladder, the player spends its life switching. Narrow the ladder for live, and cap the number of switches per minute.
7. The last mile is simply slow. A mobile viewer on a congested cell sees 80–200 ms of RTT with jitter to match. No packaging change fixes that. Measure latency segmented by network type before you rebuild your pipeline for the p50.
Reach for the failure catalogue when: the pipeline is configured for low latency and the stopwatch disagrees. Six of the seven causes are configuration, not architecture, and cost nothing to fix.
Mini case: sub-second concerts for 10,000 viewers
Worldcast Live streams HD concerts where performers in different cities play together. The product only works if the delay between two musicians is short enough to keep a beat, and the audience has to see the same show without a perceptible lag — at ten thousand people simultaneously. Standard HLS was never a candidate. A plain SFU could not carry the audio quality the artists needed.
We built a custom WebRTC and Kurento pipeline: five-channel audio, peaks at 1.5 Gb/s for true HD, full-duplex paths so remote performers hear each other, and dynamic quality adjustment so a viewer on a weak connection degrades video instead of dropping out. Forwarding nodes sat close to the audience; the interactive performer core stayed on a dedicated low-jitter path. A white-label multi-venue plugin syncs the same live stream across several websites at once.
For reference, an HLS build of the same show would have landed between 15 and 30 seconds, and the best low-latency CDN option of the day sat at 2–4. The brief was under one second. The result held at 0.4–0.5 s glass-to-glass with 10,000 simultaneous viewers — one of the first platforms to run sub-second at that scale. Two things carried it, and neither was the CDN: the encoder ran with a near-zero look-ahead window, and the player buffer was pinned rather than left adaptive. Want the same audit on your stack? Book a 30-minute call and bring your current glass-to-glass number. The full build is written up on the Worldcast Live project page.
A decision framework in five questions
Answer these in order. The first “yes” usually decides the architecture.
Q1. Does the viewer send anything back inside the same second? Bids, answers, camera control, a voice line. If yes, you need WebRTC for those participants, whatever else you build. Skip to the hybrid topology.
Q2. Do you need DRM or connected-TV reach? If yes, LL-HLS or LL-DASH is effectively mandatory — WebRTC has no standard DRM path and no reliable TV story.
Q3. Is your peak concurrency predictable within 2×? If yes, fixed-cost SFU capacity is affordable. If no, variable-cost CDN delivery protects you from both the spike and the idle month.
Q4. Is your measured latency dominated by network rather than buffer? Pull the numbers from your own budget table. Packaging and buffer are configuration problems. Only a network-dominated budget justifies buying edge capacity to fix latency.
Q5. Can the product live with 4 s instead of 1 s? Ask what actually breaks at four. If the honest answer is “nothing measurable”, take the 4 s architecture, spend the difference on reliability, and revisit in a year.

Figure 5. Five questions, four outcomes. Most teams land in hybrid and are surprised by it.
If your answers point at a hybrid build and you would like a second opinion before committing, that is the conversation we have most weeks. Our video and audio streaming development team has run this exact decision with clients in sports, education, live commerce and telehealth.
When edge streaming does not pay off
Edge is the wrong purchase when your latency lives in configuration, your audience lives in one metro, or your product does not care about the last four seconds. Four cases where we tell clients to keep their money.
Your buffer is the problem. If the player still holds three six-second segments, no point of presence on earth will help. Fix the packager and the player config first — that work is free and typically removes 12–15 seconds.
Your audience is regional. A single well-placed origin serving one country already delivers 20–40 ms of round trip. Edge adds operational surface for a saving you cannot measure in the player.
Your content is not live. VOD is a caching problem that CDNs solved twenty years ago. You want a CDN. You do not want edge packaging, edge compute or an SFU.
Nobody is comparing notes. If your viewers are not on a second screen watching the same event, the delta between 4 s and 12 s is invisible. Spend the budget on reliability and on the parts of the product people actually notice.
Skip edge entirely when: you are pre-launch with fewer than 500 concurrent viewers. Ship on a managed platform, measure real behaviour for a quarter, and buy infrastructure against evidence instead of against a projection.
Implementation checklist for the first 90 days
The order matters more than the tooling. Every step below is cheap; every step skipped gets expensive in week ten.
| Phase | What you do | Done when |
|---|---|---|
| Weeks 1–2 — measure | Instrument glass-to-glass end to end. Timestamp at capture, log at render, segment by device and network. | You have a p50 and a p95 per platform, not a single number |
| Weeks 3–4 — budget | Fill in the seven-line budget table for your own pipeline. Name the two largest stages. | Two stages account for more than 70% of the total |
| Weeks 5–6 — free wins | GOP alignment, closed GOPs, playlist TTL to zero, player buffer targets, narrow the live ABR ladder. | Latency drops without any new invoice |
| Weeks 7–10 — topology | Only now pick edge packaging, an SFU, or hybrid. Run one region first. | One region meets target on your worst supported device |
| Weeks 11–12 — failover | Second CDN or second region, health-checked steering, and a rehearsed rollback. | You have failed over on purpose, during a real stream |
Two things teams skip and regret. Test from three continents, not from the office: your office is 5 ms from your origin and every number you measure there is a lie. And plan ICE and TURN properly if WebRTC is anywhere in the design — corporate networks force TURN relay for a meaningful share of viewers, and a relay on the wrong continent adds more latency than everything else you fixed.
Observability, SLOs and the KPIs that matter
Define latency SLOs the same way you define uptime SLOs, or latency will drift back within a quarter. A stream that launched at 2.4 s and nobody watched will be at 6 s by the next release.
| SLO | Target we recommend | Measured how |
|---|---|---|
| Glass-to-glass p95 | Under 1.6× your tier target | Timestamp injected at capture, read at render |
| Live-edge drift p95 | Under 1.5 s of growth per hour of session | Player-reported latency sampled every 30 s |
| Rebuffer ratio | Under 0.5% of playback time | Player events aggregated per session |
| Startup time p95 | Under 2 s to first frame | Click-to-first-frame timer in the player |
| Failover time | Under 30 s to a healthy CDN | Synthetic probes plus a quarterly drill |
Quality KPIs. Glass-to-glass p50 and p95 segmented by platform, rebuffer ratio under 0.5%, startup time under 2 s, and the share of sessions that actually ran in low-latency mode. That last one catches silent player downgrades before your users tweet about them.
Business KPIs. Cost per 1,000 viewer-minutes broken into bytes, requests and compute; concurrent-viewer peak versus provisioned capacity; and watch time by latency bucket, which is the only honest way to find out whether the latency work paid for itself.
Reliability KPIs. Stream availability during live windows (target four nines inside the window, not across the month), failover time under 30 s, and the count of sessions that fell back to a higher-latency path. Keep edge log volume capped — unbounded edge logging is a real budget line, not a rounding error.
Five pitfalls that blow up edge budgets
1. Treating edge as a latency purchase. It is an availability and cost purchase that pays a small latency dividend for segmented streaming. Buy it for the right reason and it will not disappoint you.
2. Locking into one CDN. Single-CDN deployments get exactly one bad regional day before someone asks why there was no plan B. Keep manifests portable and cache keys vendor-neutral from day one; retrofitting multi-CDN after launch costs weeks.
3. Putting cold-start functions on the playback path. An edge function that cold-starts in 400 ms on the manifest request has just cancelled the origin hop you removed. Keep auth and personalisation off the critical path, or keep them warm and measured.
4. Unbounded edge logging. Per-request logging at 300 media requests per viewer-minute generates volume that costs real money and that nobody ever queries. Sample aggressively, keep full fidelity only for errors.
5. Shipping DRM keys to edge workers. Keys belong in a license server behind an authenticated boundary, not in a worker environment variable replicated to hundreds of points of presence. Short-lived signed URLs with per-session entropy at the edge; keys stay central.
Planning a low latency streaming build this quarter?
Bring your budget table, your device list and your concurrency curve. We will tell you what to build, what to buy, and what to skip.
FAQ
What is low latency live streaming?
Low latency live streaming is live video delivered glass-to-glass in under about five seconds, measured from the camera sensor to the viewer’s display. Sub-second delivery is usually called real-time streaming and needs a different protocol family, typically WebRTC or Media over QUIC.
What is the lowest latency streaming protocol in 2026?
WebRTC is the lowest-latency streaming protocol in 2026, at 0.2–0.8 s glass-to-glass in production. Media over QUIC reports around 0.4 s but is still a draft specification (draft-ietf-moq-transport-19, July 2026). Among protocols that scale to unlimited audiences with DRM, LL-HLS is the fastest at 2–4 s.
Does an edge CDN reduce live streaming latency?
An edge CDN reduces only the network portion of live streaming latency, typically 40–120 ms of a multi-second budget. An edge CDN cuts round trip and offloads your origin, but it cannot shorten encoder GOPs, packaging time or player buffers. For WebRTC, where the whole budget is a few hundred milliseconds, edge proximity matters far more.
What is the difference between a CDN and edge computing?
A CDN caches and serves content from locations near viewers. Edge computing runs your code at those same locations — token checks, manifest rewriting, ad insertion, geo steering. Every edge computing platform includes a CDN; not every CDN lets you run code.
How does edge computing improve video streaming?
Edge computing improves video streaming in three ways, in order of impact: it removes the origin as a throughput bottleneck during spikes, it terminates TLS near the viewer so first-frame time drops, and — when you move the packager to the edge — it removes a full origin round trip from every segment or part. The third is the only one that reliably changes the latency number.
Is ultra low latency live streaming worth the cost?
Ultra low latency live streaming is worth the cost when a viewer acts on what they see: bidding, trading, betting, coaching, controlling a camera. It is not worth it for one-way viewing where nobody is comparing notes on a second screen. Going from four seconds to one typically multiplies request volume by 30 and cuts encoding efficiency by 5–20%.
Can you run low latency live streaming with DRM?
Yes, with LL-HLS or LL-DASH — Widevine, FairPlay and PlayReady all work over CMAF chunks. WebRTC has no standard DRM path, which is why premium sports and studio content land on LL-HLS even when the rights holder wants sub-second.
What low latency live streaming solution should a startup pick first?
A startup should start with a managed platform, and pick one whose low-latency path is documented rather than assumed — check whether LL-HLS or a WebRTC path is actually on before you commit. That lets you measure real viewer behaviour before buying infrastructure. Move to your own packager or SFU when either your bill or your latency target stops fitting the managed product — usually somewhere past a few hundred thousand viewer-minutes a month.
What to read next
Protocols
WHIP and WHEP versus RTMP
The ingest half of the low-latency stack, and why RTMP is finally losing its grip.
Implementation
How to implement video streaming
The step-by-step build playbook we hand every new streaming client.
Technology
Best technologies for a video streaming app
Vendor and protocol overview, one level above this architecture deep dive.
Budgeting
What a video conferencing app costs
The cost model for the interactive side of the hybrid topology.
Ready to cut your glass-to-glass latency?
Low latency live streaming is an arithmetic problem before it is a shopping problem. Build the seven-line budget, find the two stages holding 70% of your milliseconds, and fix those — usually GOP alignment, playlist TTL and player buffer targets, none of which cost anything. Edge capacity is the right purchase when your budget is network-dominated or when you are running WebRTC, where 90 ms is a third of everything.
After that the choices are narrow. LL-HLS if you need DRM and connected TVs. WebRTC if the viewer talks back. Hybrid SFU-to-CDN if some do and most do not, which is most products. Price the request volume before you price the bytes, calibrate against your worst device rather than your best, and set a latency SLO so the number you launched with is still true next quarter. If you want the deeper protocol material, our Learn section covers CDN and edge delivery and distribution protocols in depth.
Want a second opinion before you commit the budget?
Thirty minutes with engineers who have shipped sub-second streaming to 10,000 concurrent viewers. Bring your numbers; we will bring ours.

