How to open an M3U file
It is a text file, not a video, which explains most of what goes wrong. How to read one, what plays it, and why it can open perfectly and still show you nothing.
This answers one question from m3u file format, which covers the whole picture.
First, what you actually have
It is text. Not video, not audio, not a container with media tucked inside it. A list of addresses, a few lines of description, and that is the whole of it. Four kilobytes, typically. Smaller than the thumbnail of a photograph.
That one fact answers most of what brings people here. It explains the instant download, the refusal to open in a video editor, and the window of plain text that appears when you double-click and expect a picture. Nothing is broken in any of those cases. The file is behaving exactly as a list behaves.
Opening it to read it
Any text editor will do. Do this first when something is wrong. Notepad, TextEdit, gedit, nano, or whatever you already have open. Right-click, choose to open it with an editor, and look.
You want a first line reading #EXTM3U, then pairs: a description starting#EXTINF, and an address under it. Anything else is a finding. A wall of unreadable symbols means the encoding is wrong, a first line of something other than#EXTM3U means a strict player will reject the whole file before it reads a single address, and either way you now know more than a player would ever have told you, because a player reports one thing and it is always that it failed.
Opening it to play it
Three routes. Which one suits depends on what the addresses point at.
A browser player is the least trouble. Nothing to install. It opens .m3u and .m3u8 files the same way, reads the list, and plays whichever entry you pick, and the playlist never leaves your machine because the parsing happens where you are sitting.
A desktop application is sturdier for awkward sources. VLC is the usual choice, and it reaches streams a browser cannot, because it is not bound by the rules a browser enforces on web pages. Install it. Then open the playlist from the File menu rather than double-clicking, which sidesteps the problem in the next section entirely.
On a phone, long-press and the file manager offers a list. Pick a media player. Pick an editor only if reading it is the point.
It opened in the wrong program
The most common complaint, and it is not about the playlist at all. Operating systems remember one application per extension, and whatever claimed it last now gets everything of that kind, whether or not it has the faintest idea what to do with it.
The fix has the same shape everywhere. Right-click, or long-press. Choose to open with a specific application. Set it as the default while you are there, if you want it to stick. On Windows the same setting lives under Default Apps. On macOS it is the Get Info panel, and the part people miss is the button below the application menu that applies the choice to every file of that kind rather than only this one.
It opens, and plays nothing
Opening proves the list was readable. Nothing more. The entries point somewhere else entirely, and the file carries no promise that anything is still at the other end.
Sources go dead. A list collected a few months ago is often mostly gone, and that is normal rather than a sign you were given a bad one. A stream can also be perfectly alive and still refuse to play in a browser, because the server never sends the header a browser demands before it will let a page from one origin read data from another. That is the source's decision. No player running inside a browser can overrule it.
So try one entry in a desktop player. Plays there, fails in a browser? The file is fine and you are looking at a cross-origin refusal. Fails in both, and the source is gone.
When the file is enormous
Forty thousand entries is ordinary. At that size the advice above starts to creak: a plain editor will open several megabytes but becomes miserable to scroll, and a few mobile ones decline outright.
Stop trying to read the whole thing. Filter to one group, drop the entries that no longer resolve, and work with what is left, which is routinely a small fraction of what you started with. A list that size is a database rather than a document. Treating it as one makes every step after it faster.