In this article
After reading, you'll understand:
- What a manifest is and what it contains
- The difference between .m3u8 and .mpd
- Master vs media playlists, and what each field means
- How live and VoD manifests differ
- Why the manifest is what enables quality switching
What is a manifest?
A manifest is a small index file that describes a streaming video: it lists every available quality rendition and the URLs of the short segments that make up each one. When a player starts an adaptive stream, the manifest is the very first thing it downloads — it is the map the player uses to decide what to request.
Think of it as a table of contents for the video. The actual footage lives in dozens or hundreds of small segment files; the manifest is the lightweight text file that tells the player they exist, what quality each one is, and the order to play them in. It's typically a few kilobytes — tiny next to the video itself — but nothing plays without it.
Because the manifest lays out all the alternatives up front, the player can switch to a higher or lower rendition at any segment boundary, based on the bandwidth it measures. No manifest, no map — and no way to adapt quality mid-stream.
Manifest formats
Each streaming protocol has its own manifest format, but they describe the same thing.
| Format | Protocol | Type | Structure |
|---|---|---|---|
.m3u8 | HLS | Plain text | Master playlist → per-rendition media playlists |
.mpd | DASH | XML | Single Media Presentation Description |
Modern setups often generate both from the same segments to cover every device — HLS for Apple, DASH elsewhere and for DRM.
What's inside a manifest
An HLS stream uses two levels of manifest, and understanding the split explains how adaptive switching actually works.
Lists every rendition once, each with its bandwidth (the bitrate the player needs to sustain it), resolution and codecs. This is the menu the player chooses from — and it may also point to alternate audio tracks and subtitle tracks.
One per rendition. It lists that rendition's segments in order, each with its exact duration, plus the target segment length and — for encrypted streams — a pointer to the decryption key. This is the map the player follows once it has picked a quality.
So the flow is: fetch master → pick a rendition that fits current bandwidth → fetch that rendition's media playlist → download its segments → and, whenever bandwidth changes, jump to a different rendition's media playlist at the next segment. All of it driven by numbers the manifest exposes.
Live vs VoD manifests
| Aspect | VoD manifest | Live manifest |
|---|---|---|
| Segment list | Complete, fixed | Grows as new segments are produced |
| End marker | #EXT-X-ENDLIST present | Absent — stream is ongoing |
| Player behaviour | Read once | Re-fetches to find new segments |
For a live stream, the player keeps re-reading the manifest to discover the latest segments; for VoD, one read is enough because the end marker tells it the video is complete.
How Kinescope handles this
Manifests are generated for you. When Kinescope transcodes an upload, it writes the HLS manifests (and DASH for DRM), keeps them in sync with the segments, and serves them from its own CDN. For live, the manifest is updated in real time as segments are produced. You embed a player; the manifest handling is invisible.
Read the Kinescope docsFrequently asked questions
What is a manifest file in streaming?
A manifest is a small index file that lists every quality rendition of a video and the URLs of its segments, so the player knows what it can request and how to switch quality. It is the first file a player downloads when it starts an adaptive stream.
What is the difference between .m3u8 and .mpd?
They are the manifest formats for the two main protocols. .m3u8 is the HLS playlist (plain text); .mpd is the DASH Media Presentation Description (XML). Both describe the same thing — available renditions and their segments — for their respective protocols.
What is a master vs media playlist in HLS?
In HLS, the master playlist (.m3u8) lists the available quality renditions with their bandwidth, resolution and codecs, and points to a separate media playlist for each. Each media playlist lists that rendition's ordered segment URLs and durations. The player reads the master first, then fetches segments from whichever media playlist fits the connection.
What information does a manifest contain?
A master manifest lists each rendition's bandwidth, resolution and codec so the player can choose. A media (per-rendition) manifest lists the ordered segment URLs and each segment's duration, plus flags such as whether the stream is live or has ended. Manifests can also point to alternate audio tracks, subtitles and encryption keys.
How is a live manifest different from a VoD manifest?
A VoD manifest is static: it lists every segment once and ends with a marker (in HLS, #EXT-X-ENDLIST) telling the player the video is complete. A live manifest is updated continuously as new segments are produced and has no end marker, so the player re-fetches it to discover the latest segments as the stream continues.
Do I need to create manifests myself?
No, if you use a hosting platform. Kinescope generates the HLS (and DASH) manifests automatically when it transcodes your upload, keeps them in sync with the segments, and serves them from its CDN. You embed a player; the manifest handling happens behind the scenes.
Further reading
- Apple — HTTP Live Streaming — the HLS playlist specification.
- M3U / M3U8 — Wikipedia — background on the playlist format.
