algomiBlogs
← All posts

Designing Hotstar: Live Cricket for Tens of Millions at Once

Algomi Research · Created 2026-09-26 · Updated 2026-10-15 · System Design

System Design Case Studies · Part 14 of 15
Designing Netflix: Putting the Movie in a Box Near the ViewerDesigning a Payment System: Charging a Customer Once, Even When Networks Fail
Page 1 of 1

Final night: everyone arrives at the toss

It's the World Cup final. Ganesh, a college student in Bihar, watches on a ₹7,000 phone over patchy mobile data. In Pune, the Kulkarni family has gathered in front of a 65-inch smart TV. At 1:30 pm, when the toss happens, tens of millions of people open CricStream in the same few minutes. (Ganesh, the Kulkarnis, CricStream, Ritu and every number here are made up for teaching.)

Ritu leads CricStream's live platform. She describes final night with a school sports day. At nine o'clock sharp, a thousand parents arrive at the same gate. They don't trickle in over an afternoon. The gate is small, and you can't build a new one while they queue. So the school:

  • opens extra gates the night before,
  • puts signs at the entrance,
  • has a plan for a crush: if the crowd grows too big, the snack stall closes first, never the gate to the field.

Live sports streaming has exactly that shape. Everyone wants the same match at the same second, and they arrive in a synchronised wave. On-demand video can be prepared ahead and cached slowly. Live video can't: the picture is being produced now, and everyone wants the newest few seconds. A system that copes with 20 million people spread over a day may fail with 20 million arriving in twenty minutes.

This guide designs live video for a very large audience in the style of Hotstar, now part of JioHotstar. It is an original interview design, not the internal architecture. It leans on two public sources:

  • A 2019 talk by Hotstar's engineers, which reports a peak of 25.3 million concurrent viewers.
  • A 2025 summary of Hotstar's later engineering posts, which reports over 61 million concurrent users in 2023. The summary is secondary, so it's used for its stated facts and no more.

For on-demand video, see the YouTube guide and the Netflix guide.

What happens on final night Idea it forces
"The camera feed has to reach 40 million screens live" The video path: encoder, packager, origin, CDN
"Ganesh's phone and the Kulkarnis' TV need different streams" Rendition ladders, device classes, codecs, DRM
"Everyone checks the score every ten seconds" Separating cacheable APIs from personal ones
"Ten million joined in five minutes at the toss" Scaling before the wave, in steps
"The load is above plan in the last over" Degrading in a planned order
"Things broke that no test had shown" Bottlenecks that only appear at scale

In 30 seconds, as an architect would frame it: "Keep two paths apart. Video flows encoder → packager → origin → CDN, as segments and live playlists, with request coalescing so the origin sees each new segment once. Everything else goes through an API gateway, where shared data such as scores is cached at the edge for seconds, and personal requests (session, entitlement, licence) are protected. Every device gets a manifest for its class from one encrypted, package-once ladder. Capacity is provisioned ahead of the match schedule, in steps, not by reactive autoscaling. And a tested degradation ladder switches extras off, and retries are damped, so the P0 video path stays alive."

1. The rules and the pieces

Viewers open the app, sign in, choose a match and watch live at a quality that suits their connection. They also see scores, highlights and other extras around the video. A subscription or an ad-supported plan decides what they may watch.

Rule Why it matters
The live video must keep playing It is the product, and failure is public
Extras may switch off before video does A missing recommendation is better than a stalled match
Scores may be a few seconds stale Perfect freshness for millions is too expensive
Sign-in and entitlement must stay fast Every viewer passes through them at the start
Capacity must be ready before the wave Adding servers after the crowd arrives is too late
Retries must not multiply load A failing screen must not hit the servers ten times harder
Every device gets a stream it can play Phones, browsers, and televisions differ in screens, codecs, protection systems, and connections

Ads, payments and content production are separate systems. This guide covers what happens between the camera and millions of screens.

Record Main fields Responsibility
Match and Stream match_id, stream_id, start time, quality set The live event and its feeds
Variant stream_id, resolution, bitrate, codec One quality level of the same live feed
Segment stream_id, variant, sequence number, duration A few seconds of one variant
Live playlist stream_id, recent segments The rolling list players reload
Session user_id, device, entitlement Who is watching and whether they may
Device class protocol, codecs, top resolution, protection system Which manifest a device receives
API class endpoint, cacheable or not, freshness How each request is treated
Degradation level level, features switched off What we are willing to lose under load

The API class is the important design choice. Deciding it once for each endpoint is what lets you protect the servers later (section 3).

Two paths, kept apart

flowchart TD
    C@{ icon: "algomi:svc-cube", label: "Camera feed", pos: "b", h: 52 }
    E@{ icon: "algomi:ext-device", label: "Live encoder", pos: "b", h: 52 }
    C --> E
    K@{ icon: "algomi:async-gear", label: "Packager: segments and playlist", pos: "b", h: 52 }
    E --> K
    O@{ icon: "algomi:ext-server", label: "Origin", pos: "b", h: 52 }
    K --> O
    D@{ icon: "algomi:sec-globe", label: "CDN", pos: "b", h: 52 }
    O --> D
    V@{ icon: "algomi:svc-cube", label: "Viewers", pos: "b", h: 52 }
    D --> V
    G@{ icon: "algomi:svc-api", label: "API gateway", pos: "b", h: 52 }
    V --> G
    X@{ icon: "algomi:sec-globe", label: "CDN cache for shared data", pos: "b", h: 52 }
    G --> X
    S@{ icon: "algomi:svc-cube", label: "Session and entitlement services", pos: "b", h: 52 }
    G --> S
    F@{ icon: "algomi:async-gear", label: "Feature flags: degradation level", pos: "b", h: 52 }
    G --> F

Reading the diagram. Read it as two separate pipes that meet only at the viewer.

  • The video path (top, camera to viewers) moves segments almost entirely through the CDN.
  • The API path (bottom, viewers to gateway) carries everything else: sign-in, entitlement, scores and screens.

Keeping them apart means a problem in the score API can never slow the video. Feature flags sit on the API side, because that's where the degradation level is read (section 5).

2. "40 million screens, live": the video path

Live video: the feed becomes segments, and a CDN carries them to viewersAnimated data flow. Data travels through Camera feed → Live encoder → Packager → CDN → Viewers.encodepackagecacheCamera feedLive encoderPackagerCDNViewers
Live video: the feed becomes segments, and a CDN carries them to viewers · hover or tap to pause

You've reached the free preview of this post.

Subscribe to the Blogs plan (₹99/mo) — or use any Algomi Suite, Career, Investor, or Trader plan — to keep reading.

See plans

Sources

System Design Case Studies · Part 14 of 15
Designing Netflix: Putting the Movie in a Box Near the ViewerDesigning a Payment System: Charging a Customer Once, Even When Networks Fail