M3U Validator: Check Playlist Syntax — M3UPlaylist
Tool

M3U playlist validator

Paste a playlist or open the file and the validator reports what a player would object to: entries with no stream address, URLs with no entry, broken attribute quotes, duplicate streams and missing channel ids. Everything runs in this tab.

Validate a playlist

Runs entirely in this browser tab

      What it checks

      The faults that stop a playlist working

      The validator reads the file the way a player does: line by line, expecting a header, then #EXTINF and URL pairs. An error is something that breaks that reading. The most common is an #EXTINF line with no stream address under it, which happens when a URL is deleted but its metadata line is left behind. The second is the reverse: a bare URL with no entry above it, usually from a half-finished paste.

      A missing #EXTM3U header is an error because players use it to recognise the file at all; some will refuse the file, others will guess. Then there are the warnings that do not stop playback but cause visible damage: an unbalanced quote in an attribute, a line of prose in the middle of the file, a duration field that is neither -1 nor a number.

      Duplicates and metadata coverage are reported separately, because they are quality rather than correctness. The same stream listed twice will play; it will also make every channel after it harder to find. A file where no entry has a tvg-id will play with no programme guide at all, which is the single most common reason a playlist feels broken when it is not.

      Reading the result

      What the score means, and what it does not

      The score starts at 100 and subtracts 20 per error and 5 per warning. It is a blunt instrument by design: it exists to tell you whether a file is worth fixing and whether your fix helped, not to rank playlists against each other. A file scoring 100 can still be full of channels that stopped broadcasting years ago.

      What each kind of issue costs
      SeverityReported forCost
      ErrorNo #EXTM3U header; an #EXTINF with no URL under it; an #EXTINF followed by another #EXTINF20 points
      WarningNo duration, no channel name, a URL with no entry above it, a line that is neither directive nor URL, a duplicate stream URL5 points
      InfoNo tvg-id anywhere; a channel name used more than oncenothing

      Information notes are why a playlist with no guide data can still score 100: it plays, and the missing tvg-id is a statement about the EPG rather than a fault in the file. The broken example in the format guide scores 30/100 on the same arithmetic — three errors cost 60, two warnings cost 10.

      That distinction matters, because “valid” and “working” get used interchangeably and they are not the same claim. Validity is a property of the text: the structure parses, the pairs line up, the attributes are quoted. Whether a stream answers is a property of the network, and it changes minute to minute without the file changing at all. This tool only ever reports the first.

      If you want the second, the honest way to get it is to open the playlist in a player and try a few entries from the start, the middle and the end. That is also the only method that does not involve sending your playlist somewhere.

      Next

      After the validator

      Errors with line numbers are easiest to fix in the editor, which loads the same parse and lets you remove or rename entries without touching the pairing. If the file is valid and you want the channel data in a spreadsheet, the converter exports CSV or JSON from the same parse. For the rules behind the messages, the format guide walks through an #EXTINF line field by field. If the file is structurally clean but no player will open it, the guide to opening an M3U file covers file associations, players and the one case where a valid playlist is not a playlist at all.