CORS, Referer, and segment checks

M3U8 Link Won't Play? Fix CORS, Referer, and Dead Segments

An M3U8 link usually will not play because the browser is blocked by CORS, the URL has expired, the origin requires a matching Referer, one or more .ts segments are dead, or the stream uses a codec or DRM system the browser cannot decode. Start by confirming the manifest loads, then use the proxy and health report to isolate the failure.

Last updated: June 20, 2026

智能 CORS 代理

遇到跨域失败时可通过 Cloudflare Worker 代理 manifest、key 和切片。

Video preview

链接健康度体检

解析全部分辨率轨道、统计码率与分片时长,并抽样检测分片死链。死链检测受浏览器跨域限制, 建议先开启 CORS 代理以获得准确结果。

Why an M3U8 link fails

CauseWhat it looks likeWhat to try
CORS blockThe manifest or .ts segments load in VLC but fail in the browser.Enable the smart CORS proxy and run the health report again.
Expired URLThe manifest returns 403, 404, or an empty response everywhere.Capture a fresh .m3u8 URL from the source page or CDN.
Hotlink protectionThe stream works only when requests come from the original website.Set the same Referer and, if needed, User-Agent in proxy options.
Dead segmentThe manifest loads, but playback stalls or skips after a few seconds.Run the M3U8 validator and inspect sampled segment failures.
Unsupported codecVLC plays the stream, but the browser shows audio-only or black video.Check codecs in the health report and try another browser or VLC.
Mixed contentAn HTTPS page tries to load an HTTP stream.Use an HTTPS stream URL or route the stream through a proxy endpoint.
DRMThe manifest points to protected playback with Widevine, FairPlay, or PlayReady.Use the licensed app or player. This tool does not bypass DRM.

How to fix an M3U8 link that will not play

  1. 1

    Confirm the manifest is real

    Open the M3U8 URL directly or paste it into the player. A valid HLS manifest usually starts with #EXTM3U and contains tags such as #EXT-X-STREAM-INF, #EXTINF, or #EXT-X-ENDLIST.

  2. 2

    Try playback without proxy first

    Paste the URL and press Play. If it loads, the stream is reachable and you can continue testing bitrate, subtitles, conversion, or playlist editing.

  3. 3

    Enable the CORS proxy

    If the browser reports a CORS error or the stream works in VLC but not online, turn on the smart CORS proxy so manifests, keys, and segments are requested through the proxy.

  4. 4

    Set Referer and User-Agent when needed

    For hotlink-protected streams, copy the page URL where the stream normally plays and set it as the Referer. Add a desktop browser User-Agent if the origin filters by client.

  5. 5

    Run the health report

    Use the M3U8 validator to list tracks, bitrate, encryption, live/VOD status, and sampled dead .ts segments. This separates a real dead link from a browser access problem.

  6. 6

    Check codec and DRM limits

    If the manifest and segments are reachable but playback still fails, inspect codecs and encryption. Browser players cannot decode every codec and this tool does not bypass DRM.

How to tell if it is CORS or a dead link

CORS is a browser rule, so the same stream can fail online and still play in VLC. A dead link fails everywhere. If VLC opens the URL but the browser does not, start with the proxy. If both fail, inspect the HTTP status and capture a fresh URL because signed HLS links often expire quickly.

When a custom Referer fixes playback

Some origins only serve manifests and segments when the request looks like it came from the original page. That is hotlink protection. In this player, enable the proxy, open advanced options, set the original page as Referer, and retry. If the origin also checks client type, add a browser User-Agent.

Why playback starts and then stalls

A manifest can be valid while one or more media segments are gone, blocked, or overloaded. The player may start, buffer, then stop when it hits the broken segment. The health report samples .ts segment URLs through the proxy and reports pass/fail counts so you know whether the CDN path is actually healthy.

Why VLC and a browser disagree

VLC is not bound by browser CORS rules and supports more codecs, so it can play streams that a browser rejects. A browser tool is better for web debugging because it surfaces the same CORS, mixed-content, and header problems your website visitors will hit, then gives you proxy and Referer controls to test fixes.

Frequently asked questions

Why won't my M3U8 link play in the browser?

The most common causes are CORS restrictions, an expired signed URL, hotlink protection that requires a specific Referer, dead .ts segments, unsupported codecs, mixed HTTP/HTTPS content, or DRM. Try the proxy and health report first to separate browser access issues from a broken stream.

Why does the same M3U8 URL work in VLC but not online?

VLC is not limited by browser CORS rules, so it can fetch streams that an online player cannot access directly. Enable the CORS proxy in the browser player, then retry with a custom Referer if the origin uses hotlink protection.

How do I fix an HLS CORS error?

Use an origin that sends the correct Access-Control-Allow-Origin headers, or route the manifest, keys, and segments through a CORS proxy. For testing, enable the smart proxy in this player and run the health report through it.

What Referer should I use for a protected M3U8 stream?

Use the URL of the page where the stream normally plays, not the .m3u8 URL itself. Many origins check that page as the Referer before serving the manifest or media segments.

Can this fix DRM-protected streams?

No. This tool can help with CORS, Referer, and dead-segment debugging, but it does not bypass DRM systems such as Widevine, FairPlay, or PlayReady.