M3U Checker & Validator

Upload or paste any M3U playlist and instantly test every stream URL. See which streams are online, offline or timing out - then export a clean playlist with only the working ones.

M3U / M3U8 / PLS Concurrent Checking Export Working Streams CORS-Aware 100% In-Browser

Load your playlist using any of the methods below, then click Check Streams. Each URL will be tested directly from your browser - no data is sent to our servers.

Drop your M3U file here or click to browse

Supports .m3u, .m3u8, .pls, .xspf, .txt

Enter a direct URL to an M3U, M3U8 or PLS file. The file is fetched client-side via your browser.

Load a playlist first to enable checking.
Checking streams...
0 / 0
How It Works
1
Load Your Playlist

Upload an M3U/M3U8/PLS file, paste raw playlist content, or enter a URL to a remote playlist file.

2
Set Options

Choose the timeout per stream and how many streams to check at once. Higher concurrency is faster but may stress slower connections.

3
Check & Review

Each stream is tested directly from your browser. Results appear in real time as Online, Reachable, Timeout or Offline.

4
Export Clean Playlist

Click Export Working M3U to download a clean playlist containing only online and reachable streams, ready for your player.

Understanding the Status Codes
Online
HTTP 2xx responseThe server responded with a success status code. The stream URL is confirmed working and should play in any compatible player.
Reachable
CORS-protected but respondingThe server responded but browser security policy blocked reading the headers. This is normal for media streams - the stream is almost certainly working fine in VLC or Kodi.
Timeout
No response within time limitThe server did not reply in time. May be temporarily overloaded or slow. Try increasing the timeout or re-run the check before removing these streams.
Offline
Connection failedThe URL could not be reached - DNS failure, connection refused, or the server is down. Some servers also block browser User-Agents, which can cause false Offline results.
Protocol
Non-HTTP protocolRTMP, RTSP and MMS streams cannot be checked from a browser. These entries are skipped but included in any exported playlist.

Frequently Asked Questions

For each URL in your playlist the tool sends a lightweight HEAD request from your browser. If the server responds with a success code, the stream is marked Online. If the browser's CORS policy blocks reading the response (common with media servers), the stream is marked Reachable - this still means the server responded and the stream is almost certainly working. If there is no response within the timeout window, the stream is marked Timeout. A network error marks the stream Offline.
Yes - Reachable almost always means the stream is working. Media streaming servers (Icecast, SHOUTcast, IPTV backends) almost never send CORS headers because they are designed to be opened by media players, not web browsers. When a browser fetch is blocked by CORS policy, it still means the server responded - the browser just refused to share the response with the page. A media player like VLC or Kodi has no such restriction and will play the stream fine.
Timeout means the server did not respond within the configured time limit (default 8 seconds). This could mean the stream server is overloaded, geographically distant, uses a slow protocol, or is genuinely offline. Try increasing the timeout in the options or re-run the check before removing a timed-out stream from your playlist.
A few scenarios can cause false Offline results. Some servers block non-player HTTP clients by checking the User-Agent header - they accept VLC's user agent but reject browser requests. Some streams require a specific Referer header. RTMP and RTSP streams cannot be checked via a browser at all and will always return an error. In these cases, treat an Offline result as uncertain rather than definitive.
No - the browser can only make HTTP/HTTPS requests. RTMP (rtmp://), RTSP (rtsp://) and MMS (mms://) streams use different protocols that are inaccessible from a web page. These entries will be flagged as "Protocol Not Supported" in the results. You can still export them as part of a working playlist - the checker simply cannot verify them.
No. All processing happens entirely in your browser using JavaScript. Your playlist content and stream URLs are never uploaded to or stored on our servers. The only network requests made are the stream checks themselves, which go directly from your browser to each stream server.
The checker supports standard M3U and M3U8 files with EXTINF metadata (name, group-title, tvg-id, tvg-logo). It also accepts raw lists of URLs with no EXTINF headers, and PLS format. XSPF is supported via file upload. Files can be loaded by drag-and-drop, file browser, paste, or by entering a direct URL to a remote playlist.
There is no hard limit on playlist size. Streams are checked in concurrent batches (default 5 at a time) to stay within browser connection limits. A 100-stream playlist typically completes in 15-30 seconds depending on your internet connection and the responsiveness of each server. You can adjust the concurrency and timeout in the options.
Done!