English guide · the tool interface is in English
M3U playlist checker: find dead IPTV channels fast
A playlist with 4,000 channels is useless if 900 of them are dead. This tool tests every stream URL in your list with a short HTTP request and tells you which ones actually deliver data — without downloading the video. Parsing happens in your browser, the network probe runs on our worker, and your file is never uploaded.
- 1. Source
- 2. Playlist
- 3. Test
- 4. Report
Pick the playlist source: a file, pasted text or an M3U link.
Paste the panel link → 1. choose the content types → 2. Load categories → pick categories → 3. Add the selection to the list. If you paste a plain M3U address, the same button downloads the list in one request and extracts the categories.
Panel API (works even when get.php is disabled)
player_api.phpConnection and content types
Paste the panel link above and choose which content to fetch.
Scan categories (downloads no content, 1–3 s)
If you select nothing, all categories are taken.
Add the selection to the list
Adds the channels of the selected categories to the list; it downloads no file. Once the list is ready you test it in step 3; the download options appear in the report section.
Without a category selection everything is taken. “Add the selection and prepare” only loads the content into the check panel; it downloads no file and the test starts in a separate step.
With big lists the download can take 30–50 s. If the panel blocks access, use the Upload file or Paste text method.
Category and channel selection
Loading the playlist…
With big lists channels load as you open a category, so the page never freezes. Tick the box next to a category to select it entirely.
No test limit — everything you selected is tested
Pick a category or channel above, then press “Test selected channels” to see results.
| # | Channel | Group | Status | Ping | HTTP |
|---|
Note: no stream content is downloaded during the test. Only the response code and headers are read; when the headers are ambiguous the first 512 bytes are checked and released immediately. With “deep HLS test” enabled, the manifest and the newest video segment are verified as well: a manifest that opens while the segment returns 403/404 marks the channel SUSPICIOUS. This proves the stream responds; it does not guarantee content or EPG accuracy.
How the test works
- 1. Load a source. Drop a .m3u/.m3u8 file, paste text, paste a playlist URL, or pull the list from an Xtream panel with “Load categories”.
- 2. Pick categories. Category checkboxes select whole groups; individual channels can be toggled too. Nothing is tested until you press “Test selected channels”.
- 3. Probe. Each URL gets a ranged request (Range: bytes=0-511) so servers answer fast. Status, content type and content length decide the verdict; when headers are ambiguous the first bytes are sniffed for MPEG-TS sync (0x47), #EXTM3U, ftyp, FLV or WebM signatures.
- 4. Report. Filter by ONLINE / SUSPICIOUS / OFFLINE, export a clean M3U with only verified channels, or download the CSV with HTTP status, ping and reason code.
What the reason codes mean
- • LOGIN_PAGE — HTTP 200 with HTML/JSON: the panel returned an error or login page instead of video.
- • EMPTY_BODY — the server answered but sent zero bytes.
- • NO_DATA — reachable, but the content signature is not media.
- • HLS_SEGMENT_MISSING / FORBIDDEN — the manifest is fine but the newest segment returns 404 or 401/403 (token or IP restriction).
- • TIMEOUT / NETWORK — no answer within budget; these are retried once in the slower pass.
Honest limits
Requests originate from our worker, not from your connection, so a provider that blocks datacenter IPs or limits concurrent connections may answer differently than it will for you. An ONLINE verdict proves the server delivered media bytes at that moment; it does not guarantee audio/video quality, EPG accuracy or long-term stability. Geoblocked channels can legitimately fail from our side, so treat a single failure as a hint and re-test with the slow pass before deleting a whole category.
FAQ
What does an M3U playlist checker actually test?+
It sends a short HTTP request to every stream URL in your playlist and reads the response status, headers and — when headers are ambiguous — the first 512 bytes to verify the content is really media. You get ONLINE / SUSPICIOUS / OFFLINE per channel, plus a machine-readable reason code such as LOGIN_PAGE, EMPTY_BODY, NO_DATA or HLS_SEGMENT_MISSING.
Why are some channels marked SUSPICIOUS instead of OFFLINE?+
A suspicious result means the server answered but we could not confirm playable data: it returned an HTML/JSON login page, an empty body, or an HLS manifest whose video segments fail. Being honest matters: a token-protected segment can return 403 even though the stream works in your player, so we never label that "dead".
Does the tool download my streams?+
No. The checker only requests response headers, and at most the first 512 bytes (or the first 64 KB of an HLS manifest for the deep test). Bodies are cancelled immediately. Your playlist file is parsed in the browser and never uploaded.
What is the deep HLS test?+
For .m3u8 channels the tool parses the manifest, follows one level of a master playlist, then requests the newest video segment (the first segment for VOD). If the segment fails with 403/404 the channel becomes SUSPICIOUS instead of ONLINE, which catches the classic "manifest loads, player shows a black screen" case.
Can it test thousands of channels?+
Yes. Batching is client-side (10 URLs per request with the deep HLS test on, 20 otherwise) and the server enforces rate limits. For large playlists test one category at a time — the report, clean M3U export and CSV include only what you actually tested.
Related:Xtream → M3U converter ·M3U editor ·Türkçe sürüm