Eine Textdatei, kein Inhalt
Das M3U-Format entstand in den 1990er-Jahren mit den Audio-Playern für den Desktop, allen voran Winamp, um eine Liste hintereinander abzuspielender Titel zu speichern. Sein Prinzip hat sich seither nicht geändert: Eine M3U-Playlist ist eine reine Textdatei, die eine Folge von Adressen (lokale Pfade oder URLs) enthält, die der Player der Reihe nach öffnet. Sie enthält weder Bild noch Ton noch Video. Sie sagt dem Player nur, wo er jeden Stream findet und wie er ihn anzeigen soll.

Das erklärt zwei oft missverstandene Dinge. Erstens kann eine M3U-Datei von wenigen hundert Kilobyte Tausende Einträge „enthalten“: Es steht ja nur Text darin. Zweitens ist die Playlist nur so viel wert wie die Adressen, auf die sie verweist: Ist der Zielserver offline, bleibt die Datei vollkommen gültig, aber nichts startet. Ein Player wie ein Multimedia-Videoplayer interpretiert lediglich diese Zeilen; die Rechtmäßigkeit und Verfügbarkeit der Streams hängt ganz von ihrer Quelle ab, und Sie müssen die Rechte an dem besitzen, was Sie ansehen.
M3U-Playlists begegnen einem heute in drei Hauptsituationen: als Listen von Audio- oder Videodateien auf einer Festplatte oder einem NAS, als Listen von Radios und Sendern, die ihre Herausgeber online verbreiten, und als Listen, die ein Fernsehdienst liefert, bei dem Sie Kunde sind.
Die Mindeststruktur: #EXTM3U und #EXTINF
Eine sogenannte „erweiterte“ Playlist (Extended M3U) beginnt zwingend mit dem Kopf #EXTM3U in der allerersten Zeile. Jeder Eintrag belegt danach zwei Zeilen: eine Beschreibungszeile, die mit #EXTINF beginnt, und dann die Zeile mit der Adresse selbst. Hier ein vollständiges, gültiges Beispiel mit zwei fiktiven Radios:
#EXTM3U
#EXTINF:-1,Radio Beispiel Info
https://stream.beispiel.example/info/live.mp3
#EXTINF:-1,Radio Beispiel Musik
https://stream.beispiel.example/musik/playlist.m3u8
Zerlegen wir die Zeile #EXTINF:-1,Radio Beispiel Info:
#EXTINF:kündigt die Informationen zum folgenden Eintrag an.-1ist die Dauer in Sekunden. Bei einem Musiktitel würde man zum Beispiel215angeben; bei einem Live-Stream, der kein Ende hat, gilt die Konvention-1(manche Listen setzen0, was die meisten Player tolerieren).- Das Komma trennt den technischen Teil vom angezeigten Namen. Alles nach dem letzten Komma der Attribute ist der Titel, den der Nutzer sieht.
Zeilen, die mit # beginnen und keine bekannten Direktiven sind, werden als Kommentare behandelt und ignoriert. Leere Zeilen werden grundsätzlich toleriert, sollten aber zwischen einem #EXTINF und seiner Adresse vermieden werden: Manche Player verlieren sonst die Zuordnung zwischen Name und Stream.
Die erweiterten Attribute: tvg-id, tvg-logo, group-title
Für Senderlisten hat sich eine Praxis durchgesetzt: Attribute in der Form name="wert" zwischen Dauer und Komma einzufügen. Sie sind nicht Teil einer offiziellen Norm, doch fast alle Fernseh-Player erkennen sie.
#EXTM3U url-tvg="https://guide.beispiel.example/epg.xml.gz"
#EXTINF:-1 tvg-id="beispiel1.de" tvg-name="Beispiel 1" tvg-logo="https://img.beispiel.example/bsp1.png" group-title="Vollprogramme",Beispiel 1 HD
https://tv.beispiel.example/live/bsp1.m3u8
| Attribut | Aufgabe | Häufiger Fehler |
|---|---|---|
tvg-id | Kennung, die den Sender mit seinem Programmführer (EPG) verknüpft. | Kennung weicht von der in der XMLTV-Datei ab: Der Programmführer bleibt leer. |
tvg-name | „Technischer“ Name, manchmal statt der tvg-id für die EPG-Zuordnung genutzt. | Leerzeichen oder Akzente, die vom Programmführer abweichen. |
tvg-logo | Adresse des Bildes, das neben dem Sender angezeigt wird. | Link mit http, den das Gerät blockiert, oder zu großes Bild. |
group-title | Kategorie, in die der Sender einsortiert wird (Sport, Nachrichten, Kinder …). | Tippfehler, die zwei fast identische Kategorien erzeugen. |
tvg-shift | Zeitversatz des Programmführers in Stunden für diesen Sender. | Wird genutzt, um eine an der Quelle falsch angegebene Zeitzone auszugleichen. |
catchup, catchup-days | Zeigen an, dass eine Aufholfunktion (Replay) möglich ist und für wie viele Tage. | Werden von Playern ignoriert, die keine Aufholfunktion unterstützen. |
In der Kopfzeile gibt das Attribut url-tvg (oder seine Variante x-tvg-url) die Adresse des Programmführers im XMLTV-Format an. Wie dieser Programmführer funktioniert, erklärt unser Artikel über EPG und das XMLTV-Format.
Zwei Syntaxregeln vermeiden die meisten Probleme: Die Werte stehen immer in geraden Anführungszeichen (", niemals „ “ oder ” ”), und der angezeigte Name darf keine nicht maskierten Anführungszeichen enthalten. Ein Komma innerhalb eines Wertes in Anführungszeichen akzeptieren gute Parser, aber ein Komma im Sendernamen selbst kann bei manchen Playern den Titel abschneiden.
M3U oder M3U8: wo liegt der Unterschied?
Die Endung .m3u8 bezeichnete ursprünglich eine M3U-Playlist, die in UTF-8 codiert ist. Daher kommt die „8“. Eine klassische .m3u-Datei wurde dagegen historisch in der lokalen Codierung des Systems gelesen (in Westeuropa oft Windows-1252), was „Größe“ in „Größe“ verwandelte, wenn man auf einem Rechner eine Datei öffnete, die auf einem anderen geschrieben worden war.
2009 übernahm Apple diese Endung für sein Übertragungsprotokoll HLS (HTTP Live Streaming), das später in RFC 8216 genormt wurde. Eine .m3u8-Datei kann also zwei ganz verschiedene Dinge meinen:
- eine Liste von Sendern oder Titeln, von einem Menschen oder einem Dienst geschrieben, die Sie in Ihren Player laden;
- ein HLS-Manifest, automatisch von einem Übertragungsserver erzeugt, das die kleinen Videosegmente von wenigen Sekunden eines einzelnen Senders oder Films auflistet.
Das zweite enthält HLS-eigene Direktiven wie #EXT-X-TARGETDURATION oder #EXT-X-STREAM-INF. Öffnen Sie eine Adresse und sehen Namen wie segment_10452.ts vorbeiziehen, haben Sie ein HLS-Manifest vor sich, keine Senderliste. Unser Artikel HLS, MPEG-TS und DASH erklärt diesen Mechanismus im Detail.
In der Praxis lesen die heutigen Player .m3u und .m3u8 gleichermaßen und erkennen UTF-8 in den meisten Fällen. Am sichersten bleibt es, Ihre Playlists immer in UTF-8 zu speichern, unabhängig von der Endung.
Codierung, BOM und Zeilenenden: die unsichtbaren Fallen
Viele Playlists, die „nicht funktionieren“, sind völlig korrekt geschrieben, aber falsch gespeichert. Drei auf dem Bildschirm unsichtbare Details machen Probleme.
Die UTF-8-BOM
Manche Editoren, darunter ältere Versionen des Windows-Editors, fügen am Dateianfang drei unsichtbare Bytes ein, die BOM (Byte Order Mark: hexadezimal EF BB BF). Ein strenger Player, der prüft, ob die Datei genau mit #EXTM3U beginnt, sieht dann #EXTM3U und lehnt die Liste ab oder ignoriert den ersten Eintrag. Die Lösung: als „UTF-8“ speichern und nicht als „UTF-8 mit BOM“. In Notepad++ bietet das Menü Codierung beide Optionen ausdrücklich an; in Visual Studio Code steht die Codierung unten rechts im Fenster und lässt sich mit einem Klick ändern.
Falsch umgewandelte Sonderzeichen
Erscheinen die Namen mit Sequenzen wie ö oder mit Rauten �, wurde die Datei in einer Codierung geschrieben und in einer anderen gelesen. Öffnen Sie sie erneut in einem Editor, der die Wahl der Lesecodierung erlaubt (Windows-1252 oder ISO-8859-1, wenn die Umlaute wieder stimmen), und speichern Sie sie dann als UTF-8.
Die Zeilenenden
Windows beendet Zeilen mit zwei Zeichen (CR LF), Linux, macOS und Android mit einem einzigen (LF). Neuere Player akzeptieren beides, aber ein übrig gebliebenes CR am Ende einer URL kann sie bei einem pingeligen Server ungültig machen. Im Zweifel wandeln Sie in LF um, was Code-Editoren anbieten.
Die häufigsten Syntaxfehler
Das sind die Mängel, die man am häufigsten findet, wenn man eine widerspenstige Playlist öffnet, mit Symptom und Korrektur.
| Symptom | Wahrscheinliche Ursache | Korrektur |
|---|---|---|
| „Ungültige Datei“ gleich beim Öffnen | Kopf #EXTM3U fehlt, ist falsch geschrieben oder steht hinter einer BOM | #EXTM3U allein in Zeile 1 setzen, als UTF-8 ohne BOM speichern |
| Die Namen sind um einen Sender verschoben | Eine URL fehlt oder eine #EXTINF-Zeile ist doppelt | Den strengen Wechsel Beschreibung / Adresse prüfen |
| Alle Sender heißen „-1“ | Komma vor dem Namen fehlt | #EXTINF:-1 attribute,Name schreiben |
| Kategorien und Logos werden ignoriert | Typografische Anführungszeichen oder Apostrophe statt " | Durch gerade Anführungszeichen ersetzen |
| Nur ein einzelner Eintrag startet nicht | Leerzeichen am Ende der URL, nicht codiertes Zeichen (Leerzeichen, Umlaut) in der Adresse | Leerzeichen entfernen, Leerzeichen als %20 codieren |
| Die heruntergeladene Datei ist eine HTML-Seite | Die Adresse liefert eine Fehler- oder Anmeldeseite statt der Liste | Die Adresse im Browser öffnen, um die Meldung des Servers zu lesen |
Bei sehr großen Listen ein letzter nützlicher Reflex: die #EXTINF-Zeilen und die Adresszeilen zählen. Unter Windows erledigt das PowerShell mit (Select-String -Path liste.m3u -Pattern '^#EXTINF').Count. Beide Zahlen müssen gleich sein.
Eine eigene Playlist erstellen und bearbeiten
Eine Playlist von Hand zu bauen ist einfach und erlaubt es, zum Beispiel die Radios und Sender zu bündeln, die ihre Herausgeber auf ihren eigenen Websites kostenlos verbreiten, oder die Videos Ihres NAS. So gehen Sie vor:
- Öffnen Sie einen Texteditor, der die Codierung beherrscht: Notepad++ oder Visual Studio Code unter Windows, TextEdit im Modus „Nur Text“ auf dem Mac. Meiden Sie Textverarbeitungen (Word, LibreOffice Writer), die typografische Anführungszeichen einfügen.
- Schreiben Sie den Kopf
#EXTM3Uin die erste Zeile, gegebenenfalls gefolgt vonurl-tvg="…", wenn Sie einen Programmführer haben. - Fügen Sie jeden Eintrag in zwei Zeilen hinzu:
#EXTINF:-1 group-title="Radios",Nameund dann die vollständige Adresse, bei einem Netzwerk-Stream beginnend mithttp://oderhttps://, bei einer lokalen Datei mit einem Pfad. - Speichern Sie als UTF-8 ohne BOM, mit der Endung
.m3uoder.m3u8. - Testen Sie die Liste in Ihrem Player und korrigieren Sie die fehlschlagenden Einträge einzeln.
Für lokale Dateien bevorzugen Sie relative Pfade (Filme/urlaub-2024.mp4), wenn die Playlist im selben Ordner wie die Videos liegt: Die Liste bleibt gültig, wenn Sie alles auf eine andere Festplatte verschieben. Ein absoluter Pfad wie C:\Users\… funktioniert nur auf dem ursprünglichen Rechner.
Um eine Liste in einen Player zu laden, gibt es in der Regel zwei Möglichkeiten: ihre Webadresse angeben (der Player lädt sie bei jeder Aktualisierung neu, sodass Änderungen der Quelle übernommen werden) oder eine lokale Datei importieren (eingefroren, bis Sie sie ersetzen). In AICKO IPTV sind beide Methoden Schritt für Schritt auf der Seite Xtream Codes und M3U beschrieben.
Zusammenfassung
- Eine M3U-Playlist ist eine Textdatei, die Adressen auflistet; sie enthält kein Video.
- Sie beginnt mit
#EXTM3Uund wechselt dann für jeden Eintrag zwischen einer#EXTINF-Zeile und einer Adresszeile. - Die Attribute
tvg-id,tvg-logoundgroup-titlesteuern Programmführer, Logos und Kategorien. - .m3u8 bedeutet „M3U in UTF-8“, bezeichnet aber auch die Manifeste des HLS-Protokolls.
- Speichern Sie immer als UTF-8 ohne BOM, mit geraden Anführungszeichen.
Häufige Fragen
Kann man eine M3U-Datei mit dem Editor öffnen?
Ja. Es ist eine einfache Textdatei, die mit jedem Editor lesbar und bearbeitbar ist. Wählen Sie zum Speichern die Codierung UTF-8; die neueren Versionen des Windows-Editors unter Windows 10 und 11 speichern standardmäßig als UTF-8 ohne BOM.
Warum lädt meine Playlist, aber kein Sender startet?
Die Datei wird korrekt gelesen, doch die darin enthaltenen Adressen antworten nicht: Server offline, abgelaufener Link oder verweigerter Zugriff. Testen Sie eine einzelne Adresse in einem Browser oder einem anderen Player, um herauszufinden, ob das Problem an der Quelle oder am Gerät liegt.
Ist eine M3U-Datei gefährlich?
Die Datei selbst enthält nur Text und kann nicht ausgeführt werden. Das Risiko liegt in ihrer Herkunft: Eine Liste aus zweifelhafter Quelle kann auf illegal verbreitete Inhalte verweisen. Laden Sie nur Listen von Diensten, bei denen Sie Kunde sind, oder von offiziellen Herausgebern.
Wie groß darf eine Playlist höchstens sein?
Das Format setzt keine Grenze. Die Einschränkungen kommen vom Gerät: Eine Liste mit mehreren zehntausend Einträgen kann das Laden auf einem leistungsschwachen TV-Stick verlangsamen. Das Entfernen unnötiger Kategorien verbessert die Reaktionsfähigkeit deutlich.
