M3U vs M3U8 : différences, UTF-8, HLS et comment reconnaître votre fichier

M3U et M3U8 ne correspondent pas à deux niveaux de qualité vidéo. Ce sont des formats de playlist textuelle. L’extension .m3u8 est couramment utilisée pour signaler du texte M3U encodé en UTF-8 et elle est fortement associée à HLS, mais M3U8 ne veut pas automatiquement dire HLS.

Inversement, une playlist HLS n’est pas obligée de se terminer uniquement par .m3u8 : RFC 8216 autorise une identification par un chemin finissant en .m3u8 ou .m3u, ou par le Content-Type HTTP. En HLS, la playlist doit être en UTF-8 et ne doit pas contenir de BOM.

La méthode fiable consiste donc à regarder le contenu, notamment les balises #EXT-X-*, plutôt que de déduire le format à partir du nom du fichier.

Réponse rapide

  • .m3u : extension de playlist M3U ; elle ne suffit pas à déterminer son encodage ou son usage.
  • .m3u8 : convention courante pour une playlist M3U en UTF-8 ; très utilisée avec HLS.
  • #EXT-X-STREAM-INF : indice fort d’une playlist HLS multivariante.
  • #EXT-X-TARGETDURATION : caractéristique d’une playlist média HLS.
  • Renommer .m3u en .m3u8 ne change ni les octets ni l’encodage du fichier.
  • Une playlist valide n’implique pas que les médias qu’elle référence soient disponibles.

M3U vs M3U8 : la différence en 30 secondes

La confusion vient du fait que trois notions sont souvent mélangées :

extension du fichier → encodage du texte → protocole de streaming.

Ce ne sont pas trois façons de dire la même chose.

PointM3UM3U8
NaturePlaylist textePlaylist texte
Extension habituelle.m3u.m3u8
UTF-8 garanti par l’extension seule ?NonC’est la convention attendue hors HLS
Peut contenir #EXTINFOuiOui
Peut référencer plusieurs médiasOuiOui
Associé à HLSPossibleTrès fréquent
Extension suffisante pour prouver HLSNonNon
Qualité vidéo déterminée par l’extensionNonNon

Le point important est donc : ne choisissez pas un diagnostic uniquement parce qu’une URL termine par .m3u8.

Il faut inspecter ce qu’elle contient.

Ce que signifie réellement le « 8 » de M3U8

M3U8 et UTF-8

Dans l’usage courant, M3U8 désigne une playlist M3U dont le texte est encodé en UTF-8.

Cela permet notamment de représenter sans ambiguïté des caractères comme :

  • é, è, à, ç ;
  • des alphabets non latins ;
  • des symboles Unicode.

Il ne faut cependant pas transformer cette convention en règle inverse du type :

« tout fichier .m3u est forcément en Latin-1 ».

Cette conclusion n’est pas justifiée. L’extension .m3u ne permet pas, à elle seule, de déterminer comment les octets du fichier ont été encodés.

Pourquoi les accents deviennent parfois illisibles

Supposons qu’un nom correct soit :

Télévision Exemple

et qu’une application affiche quelque chose comme :

Télévision Exemple

Ce symptôme indique généralement un désaccord d’encodage : les octets ont été produits selon un encodage mais interprétés selon un autre.

Le problème n’est donc pas la qualité du flux, le réseau ou l’EPG. Il apparaît avant même la lecture du média : au moment où le logiciel interprète le texte de la playlist.

Pourquoi « M3U = Latin-1 » est trop simpliste

Pour diagnostiquer correctement un fichier .m3u, il vaut mieux demander :

  1. dans quel encodage le fichier a-t-il réellement été enregistré ?
  2. quel encodage le lecteur suppose-t-il ?
  3. les caractères sont-ils déjà corrompus dans le fichier ou seulement après importation ?

L’extension seule ne répond à aucune de ces trois questions.

Renommer .m3u en .m3u8 ne convertit rien

Un changement de nom :

playlist.m3u → playlist.m3u8

ne réencode aucun caractère.

Les octets restent identiques.

Pour convertir réellement un fichier texte vers UTF-8, il faut lire son encodage actuel correctement puis le réenregistrer en UTF-8.

Et si votre objectif est de transformer une playlist M3U ordinaire en HLS, le problème est encore différent : changer l’encodage ou l’extension ne crée pas les balises et la structure HLS nécessaires.

Pourquoi M3U8 est fortement associé à HLS

Pourquoi M3U8 est fortement associé à HLS
Pourquoi M3U8 est fortement associé à HLS

M3U/M3U8 est une playlist ; HLS est un protocole

HLS — HTTP Live Streaming — utilise des playlists textuelles basées sur la famille M3U.

RFC 8216 définit notamment #EXTM3U comme identifiant du format Extended M3U et impose ce marqueur en première ligne des playlists HLS décrites par le RFC.

Mais HLS ajoute ses propres règles et balises, notamment celles commençant par :

#EXT-X-

C’est cette structure qui apporte une information beaucoup plus forte que la simple extension .m3u8.

Playlist HLS multivariante

Une playlist multivariante décrit plusieurs variantes d’une même présentation : par exemple plusieurs débits, résolutions ou renditions.

Un marqueur essentiel est :

#EXT-X-STREAM-INF

La ligne suivante pointe normalement vers une playlist média correspondant à cette variante. RFC 8216 décrit précisément ce mécanisme.

Les lecteurs HLS peuvent ensuite choisir une variante adaptée aux conditions de lecture. Apple décrit également ce fonctionnement comme une sélection entre plusieurs variantes selon le débit réseau mesuré.

À retenir :

#EXT-X-STREAM-INF
→ variantes
→ autres playlists
→ médias.

Apple emploie aujourd’hui le terme Multivariant Playlist. Les textes plus anciens, dont RFC 8216, utilisent encore Master Playlist. La documentation Apple a adopté la nouvelle terminologie en 2021.

Playlist média HLS

Une playlist média se trouve au niveau suivant.

Elle référence une succession de segments média qui, lus dans l’ordre, constituent la présentation.

RFC 8216 définit précisément cette différence : une Media Playlist contient une liste de Media Segments.

Un marqueur particulièrement utile pour la reconnaître est :

#EXT-X-TARGETDURATION

Il indique la durée maximale attendue des segments de cette playlist et il est obligatoire dans une playlist média relevant de RFC 8216.

Pourquoi une playlist HLS peut aussi utiliser .m3u

C’est l’une des nuances que beaucoup de comparatifs ratent.

RFC 8216 exige qu’une playlist HLS soit identifiable soit par son URI, soit par son type HTTP.

Pour le chemin de l’URI, il accepte :

.m3u8

ou

.m3u.

Pour HTTP, le RFC reconnaît notamment :

application/vnd.apple.mpegurl

ou

audio/mpegurl.

La documentation Apple actuelle recommande plus précisément application/vnd.apple.mpegurl pour une playlist HLS et présente audio/mpegurl comme type associé à M3U.

Conclusion pratique : une extension fournit un indice, pas toujours une classification complète.

M3U, M3U8, Extended M3U et HLS : les quatre cas à ne pas confondre

M3U, M3U8, Extended M3U et HLS
M3U, M3U8, Extended M3U et HLS

Une comparaison à seulement deux colonnes cache une partie importante du problème.

Type rencontréCe que c’estIndices dans le contenuUsage typique
M3U simpleListe texte de chemins ou d’URIprincipalement des chemins/URIplaylist locale ou liste de médias
M3U8 UTF-8 simpleM3U enregistré en UTF-8structure M3U, sans nécessairement #EXT-X-*playlist contenant notamment du texte Unicode
Extended M3UM3U enrichi de métadonnées#EXTM3U, #EXTINFcatalogues et playlists structurées
HLSPlaylist respectant les règles HLS#EXT-X-*, playlists de variantes ou segmentsdiffusion HTTP segmentée

Une playlist utilisée dans un lecteur peut également référencer elle-même une URL HLS.

Par exemple :

playlist de catalogue
→ entrée « Chaîne Exemple »
→ URL HLS
→ playlist multivariante
→ playlist média
→ segments.

Cette hiérarchie explique pourquoi voir .m3u8 à l’intérieur d’un fichier .m3u n’a rien d’incohérent.

Comment savoir quel type de fichier ou d’URL vous avez

Voici une méthode plus fiable que regarder uniquement l’extension.

Étape 1 — Regarder l’extension comme un indice

.m3u indique une playlist M3U.

.m3u8 indique généralement une playlist M3U en UTF-8 et apparaît très souvent avec HLS.

Mais arrêtez-vous là : ne concluez pas encore que .m3u8 = HLS.

Étape 2 — Ouvrir les premières lignes

Vous n’avez généralement pas besoin de lire des milliers d’entrées.

Les premières lignes suffisent souvent à identifier la famille du document.

Cherchez notamment :

#EXTM3U

#EXTINF

#EXT-X-STREAM-INF

#EXT-X-TARGETDURATION

#EXT-X-MEDIA-SEQUENCE

Étape 3 — Chercher les balises #EXT-X-*

C’est la vérification la plus utile.

Une succession de lignes #EXTINF accompagnées d’URI indépendantes peut correspondre à une playlist Extended M3U.

La présence de balises HLS comme :

#EXT-X-STREAM-INF

ou

#EXT-X-TARGETDURATION

change l’interprétation.

Étape 4 — Regarder ce que les URI référencent

Posez-vous la question :

les URI représentent-elles plusieurs médias indépendants ou les morceaux/variantes d’une même présentation ?

C’est souvent la différence entre :

catalogue

et

manifeste HLS.

Étape 5 — Vérifier le Content-Type si nécessaire

Pour une ressource distante, la réponse HTTP peut fournir un indice supplémentaire.

En HLS, RFC 8216 prévoit l’identification par Content-Type lorsque le chemin lui-même ne suffit pas.

N’utilisez toutefois jamais cette information pour tenter de contourner un contrôle d’accès : une erreur d’autorisation appartient à la source, pas au format de la playlist.

Arbre de décision ParisIPTV

Vous avez un fichier ou une URL
        │
        ├── L'extension est .m3u ou .m3u8 ?
        │       │
        │       └── Oui → c'est un indice, pas encore une preuve du contenu
        │
        └── Ouvrez les premières lignes
                │
                ├── #EXT-X-STREAM-INF
                │       └── HLS multivariant très probable
                │
                ├── #EXT-X-TARGETDURATION
                │       └── Playlist média HLS
                │
                ├── #EXTINF + nombreuses entrées indépendantes
                │       └── Extended M3U / catalogue probable
                │
                └── aucun marqueur clair
                        │
                        ├── examiner les URI
                        └── vérifier éventuellement le Content-Type

Si vous souhaitez automatiser cette première inspection, un détecteur de format local est l’outil logique à utiliser, à condition que l’analyse reste locale lorsque votre fichier contient des adresses privées.

Le test des 10 premières lignes : trois exemples

Tous les domaines et médias ci-dessous sont fictifs.

Exemple A — Extended M3U

#EXTM3U
#EXTINF:-1 tvg-id="example.a",Chaîne Exemple A
https://media.example.com/a
#EXTINF:-1 tvg-id="example.b",Chaîne Exemple B
https://media.example.com/b

Ici, chaque #EXTINF décrit une entrée suivie de son adresse.

Il s’agit d’une structure de catalogue Extended M3U, pas d’une preuve de HLS.

Une adresse individuelle pourrait toutefois elle-même mener vers une playlist HLS.

Exemple B — HLS multivariant

#EXTM3U
#EXT-X-VERSION:7
#EXT-X-STREAM-INF:BANDWIDTH=800000,RESOLUTION=640x360
low/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2500000,RESOLUTION=1280x720
hd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080
fullhd/index.m3u8

Le marqueur décisif est ici #EXT-X-STREAM-INF.

Chaque URI correspond à une variante de la même présentation.

Exemple C — Playlist média HLS

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:100
#EXTINF:6.0,
segment100.ts
#EXTINF:6.0,
segment101.ts

Cette fois, les URI désignent des segments média successifs.

La présence de #EXT-X-TARGETDURATION est un signal particulièrement fort : RFC 8216 l’impose dans une playlist média.

M3U/M3U8 et EPG/XMLTV : ce n’est pas la même chose

Une deuxième confusion fréquente consiste à traiter playlist et guide des programmes comme un seul fichier.

Ce sont deux couches différentes.

Ce que contient la playlist

Une playlist fournit essentiellement des entrées et les URI vers lesquelles elles pointent.

Elle répond à la question :

« que faut-il ouvrir ? »

Ce que contient XMLTV

XMLTV est un format XML destiné aux données de programmes.

Il contient notamment des déclarations de chaînes et des éléments de programme avec leurs métadonnées et horaires.

Il répond plutôt à :

« qu’est-ce qui est programmé et à quelle heure ? »

ParisIPTV documente déjà séparément XMLTV et le guide des programmes, ce qui est la bonne séparation architecturale : playlist et guide peuvent fonctionner ou échouer indépendamment.

Et tvg-id ?

Dans l’écosystème Extended M3U, tvg-id est couramment utilisé pour porter un identifiant destiné à rapprocher une entrée de playlist d’une chaîne décrite dans les données de guide.

Ce type d’attribut appartient aux conventions de playlists utilisées par certains lecteurs et services ; il ne fait pas partie de la syntaxe HLS définie par RFC 8216.

Le comportement exact d’une application face à ces attributs peut varier.

Pourquoi la vidéo peut fonctionner avec un EPG vide

Parce que ce sont deux problèmes distincts.

Vous pouvez avoir :

playlist correcte
→ média accessible
→ lecture correcte

mais :

XMLTV absent ou incorrect
→ association d’identifiant impossible
→ guide vide.

Dans ce cas, modifier l’extension .m3u ou .m3u8 ne réparera pas l’EPG.

M3U ou M3U8 : lequel utiliser ?

La bonne réponse dépend de ce que vous essayez réellement de faire.

M3U ou M3U8  lequel utiliser
M3U ou M3U8 lequel utiliser

Pour une playlist locale

Utilisez le format attendu par le logiciel qui doit l’ouvrir.

Ne supposez pas qu’une extension est universellement prise en charge : pour une application ou un appareil précis, vérifiez sa documentation officielle.

Pour des noms français ou des caractères internationaux

Privilégiez un fichier correctement enregistré en UTF-8.

Si votre environnement utilise la convention .m3u8 pour signaler UTF-8, elle rend l’intention plus explicite.

Pour un catalogue de médias

Extended M3U peut servir à associer des métadonnées aux entrées.

Cela ne transforme pas le catalogue en HLS.

Pour HLS

Utilisez une playlist conforme à la spécification HLS produite par la source autorisée.

Le protocole a sa propre syntaxe, ses playlists média ou multivariantes et ses contraintes d’encodage.

Pour un ancien lecteur

Ne choisissez pas aveuglément .m3u en supposant qu’il serait « plus compatible ».

La compatibilité est une propriété du lecteur et de son implémentation. Sans documentation du logiciel concerné, mieux vaut dire que la prise en charge peut varier.

Pourquoi une playlist M3U ou M3U8 ne fonctionne pas

Un fichier peut être parfaitement lisible comme texte et pourtant ne rien afficher.

Pour éviter de changer d’application, de réseau et de fichier en même temps, diagnostiquez les couches dans l’ordre.

SymptômeCouche à vérifier d’abordExplication possibleVérification utile
Télévision au lieu de TélévisionEncodage textemauvais décodage des caractèresvérifier puis réenregistrer en UTF-8
Le lecteur refuse le fichierSyntaxe / encodagefichier mal formé ou encodage non acceptévalider la playlist localement
La playlist apparaît mais rien ne démarreSource / réseaules URI référencées ne répondent pastester une entrée autorisée séparément
Vous attendiez plusieurs entrées mais obtenez un seul médiaType de documentmanifeste HLS utilisé comme cataloguechercher #EXT-X-*
HTTP 401 ou 403Autorisationaccès absent, expiré ou refusé par la sourcevérifier l’URL auprès de la source autorisée
Des segments renvoient 404Ressource HLSsegments disparus ou manifeste devenu obsolèterecharger la playlist depuis sa source
Les médias fonctionnent mais pas le guideXMLTV / correspondanceproblème distinct de la playlistcontrôler XMLTV et ses identifiants
Lecture instable alors que format et URI sont correctsRéseaudébit, pertes, latence ou variationexaminer les mesures réseau

Ordre de diagnostic recommandé

1. Classifier le fichier.
M3U, Extended M3U ou HLS ?

2. Vérifier la syntaxe.
Le validateur de playlist M3U de ParisIPTV analyse le fichier localement sans contacter les adresses qu’il contient.

3. Vérifier l’encodage.
Les caractères sont-ils correctement interprétés en UTF-8 ?

4. Séparer l’EPG de la playlist.
Si les médias apparaissent mais pas les programmes, passez au diagnostic XMLTV plutôt que de modifier le fichier M3U.

5. Tester une seule URI autorisée.
Une playlist correctement analysée peut référencer une ressource indisponible.

6. Examiner le réseau seulement après le format et la source.
Si la lecture démarre mais coupe ou se dégrade, il devient pertinent d’interpréter les mesures réseau.

Cette méthode évite de confondre :

DEVICE → PLAYER → FORMAT → EXTERNAL SOURCE → CONTENT

Un lecteur est une application de lecture. Installer un lecteur ne fournit aucun contenu. La source et les droits d’accès existent indépendamment de l’application.

Comment convertir correctement un M3U en M3U8

Ne commencez pas par renommer le fichier

Changer :

liste.m3u

en :

liste.m3u8

ne fait que modifier son nom.

Cela ne change pas :

  • l’encodage ;
  • les caractères ;
  • la structure ;
  • les URI ;
  • le type de playlist.

Identifier l’encodage actuel

Utilisez un éditeur capable d’indiquer l’encodage du fichier.

Avant toute conversion, vérifiez que le texte apparaît correctement.

Si les caractères sont déjà corrompus avant l’enregistrement, les sauvegarder à nouveau en UTF-8 ne reconstituera pas forcément les caractères d’origine.

Réenregistrer en UTF-8

Une conversion textuelle correcte suit cette logique :

encodage source correctement interprété
          ↓
texte Unicode correct
          ↓
enregistrement en UTF-8
          ↓
extension appropriée

Vérifiez ensuite des noms comportant :

é

à

ç

et, si votre playlist en contient légitimement, d’autres caractères internationaux.

Particularité HLS : aucun BOM

Pour HLS, RFC 8216 impose UTF-8 sans Byte Order Mark (BOM) et indique que les clients devraient refuser les playlists qui contiennent un BOM ou qui ne sont pas analysables en UTF-8.

Convertir vers UTF-8 n’est pas convertir vers HLS

C’est une distinction essentielle.

Vous pouvez transformer :

M3U dans un autre encodage → M3U en UTF-8

sans créer de HLS.

Pour produire du HLS, il faut une structure HLS conforme avec ses balises, playlists et ressources média correspondantes.

M3U8 n’est donc pas un bouton magique qui transforme un catalogue en flux adaptatif.

Protéger les URLs M3U et M3U8 privées

Une playlist peut contenir bien plus que de simples noms de médias.

Certaines adresses contiennent des valeurs sensibles, par exemple :

username=

password=

token=

auth=

sig=

expires=

Ne publiez pas ces valeurs dans :

  • un forum ;
  • une capture d’écran ;
  • un ticket public ;
  • un outil en ligne inconnu ;
  • un dépôt de code.

Une URL fonctionnelle peut agir comme un secret si elle contient une autorisation ou un jeton d’accès.

Préférez une analyse locale

Pour une playlist privée, un outil qui analyse le fichier dans le navigateur sans l’envoyer à un serveur réduit le besoin de transmettre les URI à un tiers.

Le validateur M3U de ParisIPTV indique explicitement qu’il ne contacte aucune URL du fichier et n’envoie pas la playlist au serveur.

Pour demander de l’aide tout en masquant une adresse, ParisIPTV propose également un masqueur d’identifiants exécuté localement.

Utilisez uniquement des playlists et médias pour lesquels vous disposez d’un accès et d’une autorisation appropriés.

Ce que cela signifie en pratique

La bonne question n’est généralement pas :

« M3U ou M3U8, lequel est meilleur ? »

Mais :

« Quel type de document ai-je réellement, comment est-il encodé et vers quoi pointe-t-il ? »

Une extension ne détermine ni la qualité vidéo ni la légitimité d’une source.

Un lecteur ne fournit pas automatiquement les médias.

Une playlist n’est pas un EPG.

Une playlist syntaxiquement valide ne garantit pas que ses URI répondent.

Et une URL .m3u8 n’est pas suffisante, à elle seule, pour expliquer l’ensemble de ce qu’elle contient.

Pour la plupart des diagnostics, trois vérifications suffisent à orienter correctement la suite :

ouvrir les premières lignes → chercher #EXT-X-* → examiner le type des URI référencées.

Questions fréquentes sur M3U et M3U8

M3U8 est-il toujours du HLS ?

Non. .m3u8 est couramment utilisé pour une playlist M3U encodée en UTF-8 et il est très fortement associé à HLS, mais l’extension seule ne prouve pas qu’un fichier est un manifeste HLS. Inspectez les balises #EXT-X-*.

Peut-on simplement renommer .m3u en .m3u8 ?

Vous pouvez changer le nom du fichier, mais cela ne convertit pas son encodage. Pour obtenir réellement du UTF-8, le contenu doit être réenregistré dans cet encodage. Et cela ne transforme toujours pas une playlist ordinaire en HLS.

M3U8 offre-t-il une meilleure qualité vidéo que M3U ?

Non. L’extension de la playlist ne fixe pas la résolution, le codec ou le débit du média. En HLS, une playlist multivariante peut proposer plusieurs variantes de qualité, mais c’est la structure et les médias référencés qui rendent cela possible, pas les caractères « m3u8 ».

Une playlist .m3u peut-elle contenir des URL .m3u8 ?

Oui. Une playlist de catalogue peut référencer une URL HLS comme n’importe quelle autre ressource. Le format du catalogue et le format de la ressource référencée sont deux niveaux différents.

Une playlist HLS peut-elle utiliser une URL terminant en .m3u ?

Oui. RFC 8216 permet l’identification par un chemin se terminant par .m3u8 ou .m3u, ou par un Content-Type HTTP reconnu.

Pourquoi les accents sont-ils incorrects dans ma playlist ?

Parce que le logiciel qui lit le fichier n’interprète probablement pas ses octets avec le même encodage que celui utilisé lors de l’enregistrement. Vérifiez d’abord l’encodage réel puis réenregistrez proprement en UTF-8 si nécessaire.

M3U contient-il l’EPG ?

Une playlist et un EPG sont deux couches distinctes. Les données de programmes sont souvent fournies séparément en XMLTV. Une playlist peut donc fonctionner alors que le guide reste vide.

Sources techniques consultées

RFC 8216 — HTTP Live Streaming, RFC Editor.
Référence publiée utilisée ici pour les règles UTF-8, l’interdiction du BOM, les extensions/Content-Types reconnus, les playlists média et les balises HLS.

Apple Developer — HTTP Live Streaming.
Documentation actuelle utilisée pour la terminologie Multivariant Playlist, le fonctionnement des variantes et les recommandations de livraison.

HTTP Live Streaming 2nd Edition — draft-pantos-hls-rfc8216bis-22.
Consulté uniquement comme document d’évolution. Au moment de cette révision, il reste un Internet-Draft envoyé au RFC Editor et ne remplace donc pas encore RFC 8216 comme RFC publiée.

XMLTV Project — XMLTV File Format.
Référence utilisée pour distinguer le format des données de programmes de la playlist de lecture.

Dernière vérification éditoriale : 18 octobre 2026.

Limite de vérification : aucun test de compatibilité n’a été effectué dans des applications ou sur des appareils particuliers pour cet article. Les comportements d’un lecteur précis doivent être vérifiés dans sa documentation officielle.

Découvrez nos offres techniques

Explorez nos solutions techniques et trouvez les ressources adaptées à vos besoins.

Mises à jour de la newsletter

Saisissez votre adresse e-mail ci-dessous et abonnez-vous à notre newsletter

Un commentaire

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *