M3U8 404 (Not Found) Error: Causes and How to Fix It
What a 404 Error Means for M3U8
A 404 (Not Found) error means the server couldn't find the file the player asked for. With HLS this is common because a stream is made of many files — the playlist, the segments, and sometimes a key — and if any one of them is missing or at the wrong address, you get a 404. The trick is figuring out which file 404'd, because the fix depends on that.
Common Causes of M3U8 404 Errors
| What 404'd | Why |
|---|---|
| Master .m3u8 | Wrong or expired URL |
| Media playlist | A referenced variant is missing |
| .ts / .m4s segment | Expired (live) or removed from the server |
| Key file | Encryption key not published |
Relative vs. Absolute Path Problems
A frequent cause is relative paths. M3U8 playlists often list segments by relative name (like segment1.ts), which the player resolves against the playlist's URL. If you load the playlist from the wrong base location — or copy it elsewhere — those relative paths point to files that don't exist, producing 404s. Make sure the playlist is played from its original URL so the segment paths resolve correctly.
Live-Stream Segment Expiration
For live streams, segments have a short lifespan by design. The playlist is a sliding window of the most recent segments; once a segment scrolls out of that window, the server deletes it. If a player falls behind and requests an old segment, it gets a 404 — this is normal for live HLS. Staying near the live edge avoids it.
How to Diagnose a 404
- Open the M3U8 URL directly in a new tab. A 404 here means the playlist itself is gone or the URL is wrong.
- If the playlist loads, copy one segment URL from it and open that directly — a 404 means the segments are missing.
- Check the Network tab to see exactly which request returned 404.
- Inspect the paths — are they relative, and are you playing from the right base URL?
How to Fix It
Once you know what's missing: get a fresh URL if the playlist expired; play from the original location if it's a path issue; stay at the live edge for live streams; and if you're the provider, make sure segments and keys are actually published and not deleted too early. To confirm segments are reachable, test with our player or downloader.
404 on Playlist vs Segments vs Keys
A single “404” label covers three different failures. Playlist 404 means the master or media .m3u8 URL is wrong, expired, or never published. Segment 404 means the playlist loaded but one or more .ts / .m4s files are missing — common after partial CDN purges, bad relative paths, or live windows that rolled past the segment. Key 404 means AES-128 decryption cannot start because the URI in #EXT-X-KEY points at a dead or auth-gated path. Always note which request returned 404 in DevTools → Network before changing tools.
Open the raw playlist in a new tab first. If the playlist itself 404s, no player or downloader can recover. If the playlist is fine, click a segment URL from the playlist text and open it directly — that isolates path resolution from player logic.
Signed URLs, CDNs, and Live Windows
| Scenario | Why you see 404 | What to do |
|---|---|---|
| Cloud signed URL expired | Query token past TTL | Regenerate from the origin app |
| Relative segment paths | Player resolves against wrong base | Prefer absolute segment URLs or fix base path |
| Live DVR window | Old sequence numbers removed | Reload playlist; do not hardcode segment IDs |
| Multi-CDN failover | One edge missing objects | Retry; check origin health |
| Case-sensitive paths | Linux origin vs Windows authoring | Match exact casing |
For live streams, a 404 on an old sequence is often expected after the sliding window moves. Failures that matter are 404s on the current media playlist or on every new segment. Capture timestamps when reporting to a CDN team.
Fix Workflow You Can Hand to Support
Run this five-step loop before opening tickets: (1) fetch the playlist with curl or a browser and save the body; (2) resolve three segment URLs the same way the player would; (3) note status codes for playlist, segments, and key; (4) retry once from another network to rule out a bad POP; (5) if only the browser player fails while direct GETs succeed, the bug is player/CORS, not 404. Document the successful path so the next on-call engineer does not restart from zero.
When you need a local copy of an authorized VOD after the stream is healthy, use the browser downloader or converter. For playback-only checks, stay in the online player. Related: player not working, CORS fix.
Bottom Line
Treat every M3U8 404 as a network fact, not a mystery player bug. Identify whether the playlist, a segment, or the key is missing, fix paths and signed-URL lifetime first, and only then switch tools. Keep a short runbook with sample URLs and status codes so your team stops rediscovering the same CDN edge case under deadline pressure.
Frequently Asked Questions
Why do I get a 404 on M3U8 segments?
They've expired (live) or been removed, or the relative paths don't resolve from your location.
Is a 404 on a live stream normal?
Yes — old segments are deleted once they leave the playlist window.
How do I know if it's the playlist or a segment?
Open each URL directly and see which returns 404.
Can I recover a 404 stream?
Only by getting a valid, current URL — a missing file can't be played.