What Is HLS? HTTP Live Streaming Explained

How HLS works: playlists, media segments, adaptive bitrate, live vs on-demand, and how it differs from RTMP and SRT. Based on RFC 8216 and Apple's documentation.

HLS in one paragraph

HLS (HTTP Live Streaming) is a way of delivering video over ordinary web servers. The video is cut into short media segments, and a text playlist tells the player which segments to download and in what order. Apple, which created the protocol, describes it this way: HLS lets you deploy content using ordinary web servers and content delivery networks, and it is designed for reliability and dynamically adapts to network conditions by optimizing playback for the available speed of wired and wireless connections.

The protocol is written down in RFC 8216, published in August 2017. The RFC is labelled Informational, which means it is not an Internet Standards Track document; it was published to help different implementations work together. This page describes version 7 of the protocol, which is the version that RFC covers.

How HLS works

  1. Encode. A server turns the source video into one or more versions, each at a different bitrate and resolution.
  2. Segment. Each version is split into media segments. The RFC lists the supported segment formats: MPEG-2 Transport Streams, fragmented MP4, packed audio and WebVTT subtitles.
  3. Describe. A Media Playlist lists the segments of one version. A Master Playlist lists the available versions (called Variant Streams), so the player can choose between them.
  4. Play. The player downloads the playlist, then downloads and plays each segment in order. For a live stream it reloads the playlist to discover newly added segments. The RFC says data SHOULD be carried over HTTP.

Because every request is a normal HTTP request, HLS works with the large-scale HTTP caching infrastructure that CDNs already provide; the RFC lists compatibility with that infrastructure as one of the protocol's goals.

Adaptive bitrate: why one stream has several versions

The RFC says HLS allows a receiver to adapt the bit rate of the media to the current network conditions in order to maintain uninterrupted playback at the best possible quality. A Master Playlist makes this possible: each Variant Stream declares its peak BANDWIDTH in bits per second, and clients should switch between Variant Streams to adapt to network conditions. A viewer on a fast connection gets the high version; the same viewer on a weak connection is moved to a lower one without restarting the video.

What an HLS playlist looks like

This is the Media Playlist example from the RFC. It is plain text:

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXTINF:9.009,
http://media.example.com/first.ts
#EXTINF:9.009,
http://media.example.com/second.ts
#EXTINF:3.003,
http://media.example.com/third.ts

The first line, #EXTM3U, identifies the format. #EXT-X-TARGETDURATION:10 says every segment is 10 seconds long or less, and each #EXTINF line gives the duration of the segment that follows. The file extension is normally .m3u8; see what is an M3U8 file for a line-by-line walk-through.

Live and on-demand HLS

The same format covers both. In an on-demand (video on demand, VOD) playlist the list of segments is complete and the playlist ends with #EXT-X-ENDLIST, which the RFC defines as indicating that no more Media Segments will be added. A live playlist keeps changing as new segments are published, and the player keeps reloading it. The optional #EXT-X-PLAYLIST-TYPE tag can be EVENT (segments are only added at the end) or VOD (the playlist cannot change). Apple also publishes a separate guide to low-latency HLS; this page does not cover it.

HLS vs RTMP and SRT: delivery vs ingest

HLS is a way to deliver video to viewers. RTMP and SRT are commonly used to ingest: to send a live stream from your encoder to a server. A typical live workflow uses both, with RTMP or SRT on the way in and HLS on the way out. Multistream Platform accepts RTMP and SRT from your encoder and relays the stream to platforms such as YouTube, Twitch, Facebook and Kick; the platforms then deliver it to their own viewers. See RTMP vs SRT for the ingest side.

Test an HLS stream

If you have an HLS link and want to know whether it plays in a browser, paste it into the free HLS player. It plays the stream with hls.js (or the browser's native HLS support) and explains common failures such as missing CORS headers, mixed content and 404 errors in plain words. The online video player also detects MP4 and DASH links.

Try it with Multistream Platform. Send one RTMP or SRT stream and relay it to YouTube, Twitch, Facebook, Kick, TikTok and custom endpoints. Start on the free Starter plan (2 channels, 20 streaming hours a month) and see the pricing page for paid plans.

Sources

Platform figures were checked on October 5, 2026. Platforms change their recommendations, so confirm against the current documentation before you go live.

Frequently asked questions

What does HLS stand for?
HTTP Live Streaming. It is a protocol created by Apple for delivering live and on-demand audio and video over HTTP, and it is documented in RFC 8216.
Is HLS a video format?
No. It is a delivery protocol. The video itself is carried in media segments (for example MPEG-2 Transport Stream or fragmented MP4 files), and a playlist file lists them.
What is the difference between HLS and RTMP?
HLS delivers video to viewers over HTTP in short segments. RTMP is a protocol for sending a continuous stream from an encoder to a server and is commonly used for ingest. Many live workflows use RTMP or SRT in and HLS out.
What is an .m3u8 file?
The playlist file used by HLS. It is a UTF-8 text file that lists media segments or other playlists. See the What is an M3U8 file page for details.
Does HLS only work on Apple devices?
No. Apple created it, but Apple's documentation says it sends audio and video to Apple devices and PCs, and browsers and players on other systems can play it too, for example with the open-source hls.js library in browsers that support Media Source Extensions.
Is HLS the same as adaptive bitrate streaming?
HLS supports adaptive bitrate streaming: a Master Playlist lists several versions of the same content and the player switches between them. HLS can also be used with a single version.
Can Multistream Platform output HLS?
Multistream Platform accepts RTMP and SRT ingest and relays the stream to platforms and custom RTMP or SRT endpoints. This page explains HLS because viewers on those platforms often receive HLS; we do not claim an HLS output feature.
Have questions that aren't listed here? Talk to the team
Go Live Today

Ready to stream everywhere?

Bring your live, hosted, and pre-recorded streams into one platform.

One platform. Limitless audiences. Stream. Grow. Everywhere.