M3U8 parser: inspect an HLS playlist
Paste an HLS playlist (.m3u8) or open the file to see what is inside: the variants with their bitrates, resolutions and codecs, audio and subtitle tracks, or the segments with their durations, plus common mistakes. Free, no sign-up.
Runs entirely in your browser. Nothing is fetched, and tokens and logins in addresses are masked.
Variants
| Resolution | Peak | Average | Video | Audio | Other | URI (masked) |
|---|
Audio and subtitle tracks
| Type | Group | Name | Language | Flags | URI (masked) |
|---|
Segments
| # | Duration | Notes | URI (masked) |
|---|
How an HLS stream is put together
HTTP Live Streaming (HLS) cuts a stream into short files, usually 2 to 10 seconds each, and describes them in plain-text playlists that end in
.m3u8. A master playlist offers the same stream in several versions, called
variants, from a small low-bitrate picture to full HD or 4K. The player measures your connection and switches between variants as it plays, which
is why picture quality can change mid-programme. Each variant points to a media playlist that lists the
segments in order with their durations.
On a live channel the media playlist is a sliding window: the player reloads it every few seconds, new segments appear at the end and old ones
drop off the top. A recording or film ends with #EXT-X-ENDLIST and lists every segment from start to finish, so
the parser can add up its total length.
Tags the parser reads
#EXT-X-STREAM-INF
One variant in a master playlist: BANDWIDTH (peak bits per second), AVERAGE-BANDWIDTH, RESOLUTION, FRAME-RATE, CODECS and the audio or subtitle group. The next line is the variant's own playlist.
#EXT-X-MEDIA
An alternative audio, subtitle or caption track: TYPE, GROUP-ID, NAME, LANGUAGE, DEFAULT and AUTOSELECT. Variants point to it by group.
#EXT-X-I-FRAME-STREAM-INF
A keyframe-only variant used for fast scrubbing and thumbnails.
#EXT-X-TARGETDURATION
The longest segment, in whole seconds. Every segment must round to this or less.
#EXT-X-MEDIA-SEQUENCE
The number of the first segment. On a live stream it climbs as old segments drop off.
#EXTINF
The duration of the next segment in seconds, then an optional title.
#EXT-X-ENDLIST
No more segments will be added: video on demand, or a live event that has ended.
#EXT-X-KEY
Segments after it are encrypted, usually METHOD=AES-128 or SAMPLE-AES, with the key at the given URI.
#EXT-X-DISCONTINUITY
The next segment changes encoding or timeline, for example at an advert break.
#EXT-X-PROGRAM-DATE-TIME
Ties a segment to a real date and time, used for live rewind and guide alignment.
Reading codec strings
The CODECS attribute uses short codes. avc1.640028 is H.264: 64 is the High
profile and 28 (hex for 40) is level 4.0, enough for 1080p. hvc1 and
hev1 are H.265 (HEVC); .2. after them is the Main 10 profile, used for HDR.
mp4a.40.2 is AAC-LC audio, mp4a.40.5 HE-AAC, and ec-3
Dolby Digital Plus. The parser writes each one out in plain words. Whether a TV can play a variant depends on its decoders: a box without HEVC support
cannot play hvc1 variants, so the player falls back to an H.264 one if the stream offers it.
Problems it points out
- Segments longer than the target duration. Strict players stop or skip when a segment overruns
#EXT-X-TARGETDURATION. - Variants without CODECS. The player has to download a segment to find out what it is, and may pick a variant the TV cannot decode.
- Audio groups that do not exist. A variant that names an audio group no
#EXT-X-MEDIAdefines plays without sound on some players. - Missing BANDWIDTH or TARGETDURATION. Both are required by the HLS specification.
- A VOD playlist without ENDLIST. The player keeps reloading it as if it were live.
A live media playlist with no #EXT-X-ENDLIST is normal, not an error: the parser notes it so you know the segment
list is only the current window. Encrypted segments are reported by method only; the key address is never shown.
To turn the bitrates into an internet speed, see internet speed for IPTV. For channel lists rather than streams, use the M3U checker, and for an Xtream login, the Xtream to M3U converter (its m3u8 output asks the server for HLS).
Questions
Is the playlist sent anywhere?
Why can I not paste the .m3u8 link?
What is the difference between a master and a media playlist?
What do BANDWIDTH and AVERAGE-BANDWIDTH mean?
Is this the same as an IPTV M3U playlist?
Watch it on your TV
IPFlix Pro Player for Android TV, Google TV and Fire TV plays HLS, MPEG-TS, MKV, MP4 and other formats. Picture quality, 4K and HDR depend on the stream and the TV.
- Install IPFlix on the TV and open Add Playlist.
- Scan the QR code on the TV with your phone.
- On the phone, paste your provider's M3U link or type the Xtream login.
7-day free trial with everything unlocked, counted from your first playlist. IPFlix does not provide channels or content.
More free tools
- M3U playlist checker Find broken entries, duplicates and missing tvg-id; match an EPG
- M3U editor Keep or drop groups, rename, remove duplicates, merge two files
- M3U to CSV Channel list for Excel or Sheets: name, group, tvg-id, logo
- Xtream Codes to M3U converter Build the M3U and EPG links from a login, or read a link back
- EPG / XMLTV viewer Browse a guide file by channel and day, .xml or .xml.gz
- EPG mapper Suggest the tvg-id for each channel from a guide, with a confidence score
- EPG time shift Move a guide by hours or fix its time zone offset, then download
- Internet speed for IPTV Mbps and data per hour by quality, codec and number of TVs
All tools run in your browser. Nothing you open or type is uploaded. See all free IPTV tools