m3u8
What is a .m3u8 file?
application/vnd.apple.mpegurl
M3U8 (.m3u8) is a UTF-8 M3U playlist, most importantly the backbone of HTTP Live Streaming (HLS). An HLS media playlist lists timed media segments with #EXTINF tags and directives like #EXT-X-TARGETDURATION, and a master playlist points to alternate bitrate renditions.
How to use a .m3u8 file
Use an example .m3u8 file to test HLS parsers and players, segment and directive extraction, and adaptive-streaming tooling, or as a plain UTF-8 M3U playlist.
Download example .m3u8 files
- HLS Playlist (M3U8)An HTTP Live Streaming (HLS) media playlist in UTF-8 M3U8 — #EXT-X-VERSION, target duration, four timed .ts segments, and #EXT-X-ENDLIST — for testing HLS parsers and adaptive-streaming players.
- HLS — Master Playlist With a Three-Rung LadderAn HLS master playlist declaring a three-rung bitrate ladder plus a subtitle rendition group, with the CODECS, RESOLUTION and FRAME-RATE attributes a player needs to choose a rung before fetching anything. Served inline with permissive CORS from /files/stream/, so a player on another origin can load it directly. This is a manifest-parsing fixture — it describes the ladder rather than shipping its segments.
- HLS — CMAF Media PlaylistA VOD media playlist in CMAF form: an EXT-X-MAP initialisation segment followed by four fragmented-MP4 segments and an explicit ENDLIST. The final segment is deliberately short, as a real encode's last segment usually is. Tests target-duration handling, init-segment fetching, and correct total-duration arithmetic. A manifest-parsing fixture — the segments themselves ship with the streaming phase.
- HLS — Byte-Range Addressed Single FileEvery segment is a byte range of one backing file rather than a separate download, which is how low-overhead VOD packaging avoids thousands of small objects. The /files/stream/ headers expose Content-Range and Accept-Ranges cross-origin precisely so a player can do this from another origin. Tests Range request construction and offset arithmetic.
- HLS — Segmented WebVTT Caption PlaylistThe subtitle rendition the master playlist references through EXT-X-MEDIA. Captions in HLS are segmented like media — each segment is a small WebVTT file covering its own time window, carrying X-TIMESTAMP-MAP to align with the MPEG-TS clock. Completes the master playlist's declared rendition group so a player can resolve the whole tree.
- HLS — Ad Break With Discontinuity MarkersA media playlist with a mid-roll spliced in: EXT-X-CUE-OUT opens the break, EXT-X-DISCONTINUITY marks each boundary, and a fresh EXT-X-MAP re-initialises the decoder on both sides. This is what a packager produces from the SCTE-35 splice_insert fixture in this wave. Discontinuities are where players most often stall, because the timeline and the decoder both have to be reset.
- HLS — Low-Latency Partial SegmentsA Low-Latency HLS playlist: half-second EXT-X-PART fragments published ahead of their parent segment, a preload hint for the part still being written, and EXT-X-SERVER-CONTROL advertising blocking playlist reload. There is deliberately no ENDLIST, because this is a live playlist. Tests parsers against the LL-HLS tags, which are frequently unimplemented and must at minimum be ignored safely.
- HLS — I-Frame Only Playlist for Trick PlayAn I-frame-only playlist: each entry is a byte range covering a single keyframe inside the media file, which is how players render scrub previews and fast-forward without decoding every frame. Declared in a master playlist via EXT-X-I-FRAME-STREAM-INF. Tests that a parser distinguishes these from normal media playlists — playing one as ordinary media produces a stuttering slideshow.
and 5 more in the library.