HLS analyzer
Audit an M3U8 master or media playlist, from ladder shape to live-edge drift.
No analysis yet.
Enter a hls playlist url above, or paste the content, to see results here.
What this checks
- ABR ladder shape: bitrate inversions, oversized gaps, duplicated rungs
- Segment timing against EXT-X-TARGETDURATION, and duration variance
- Live window depth, program date-time continuity and live-edge drift
- Low-latency HLS: PART-TARGET, PART-HOLD-BACK and blocking reload
- Encryption method, key URIs and EXT-X-VERSION compatibility
How to read the results
- Start at the grade: it weights live-edge health and ladder shape above cosmetic warnings, so a B with one inversion is a different day from a D with drift.
- Read the ladder top to bottom. Bitrate must rise with resolution, and a rung that costs more bits for fewer pixels is the one to delete.
- Check segment duration variance against EXT-X-TARGETDURATION before blaming the CDN: a packager emitting 4.0s and 9.6s segments will stall players on any network.
- On live playlists, live-edge drift is the number that predicts stalls, because it grows when the packager falls behind rather than when the viewer does.
What it does not do
- It reads the manifest and segment metadata, not the pictures: a valid ladder can still be encoded badly.
- Encryption is checked for signalling only. No licence is fetched and no content is decrypted.
- One run is one moment in a live stream. For drift across hours use a monitor, not repeated manual runs.
Privacy
Results are never shared. Choose “This browser” and the fetch and the analysis both happen on your machine — the URL, any headers you set and the results never reach our servers, which is also how you test a stream on a private network or behind a login. Pasted content is always analysed locally.
Common HLS findings, explained
Every finding links to a write-up on what it means and how to fix it.
- HLS ladder has a bitrate inversion
- HLS variant is missing the CODECS attribute
- HLS variant references an undeclared rendition group
- HLS segment is longer than EXT-X-TARGETDURATION
- HLS live window is shorter than three target durations
- HLS playlist has no EXT-X-PROGRAM-DATE-TIME
- HLS live edge has drifted from wall-clock time
- LL-HLS PART-HOLD-BACK is below three part durations
Frequently asked questions
- What does the HLS analyzer check in a master playlist?
- The ABR ladder: bitrate order against resolution, duplicated rungs, oversized gaps between rungs, codec declarations, and whether every variant is reachable.
- Can it analyse a live stream, or only video on demand?
- Both. On live playlists it also reads the window depth, EXT-X-PROGRAM-DATE-TIME continuity, and how far the last segment sits behind the live edge.
- Does it support low-latency HLS?
- Yes. It reads PART-TARGET, PART-HOLD-BACK and blocking playlist reload, and flags the combinations that quietly drop a stream back to normal latency.
- Why does my playlist pass here but fail on a device?
- Device failures are usually codec or DRM support rather than manifest validity. Compare the codec strings listed on this page against the profiles that device accepts.
- Is my playlist URL stored?
- Choose "This browser" and both the fetch and the analysis run on your machine, so the URL never reaches our servers.