Le fichier M3U : format, attributs et « code IPTV »

Mis à jour le 15 octobre 2026 · 9 min de lecture

Un fichier M3U est une liste de noms et d'adresses, écrite en texte brut. Il ne contient aucune vidéo, ne donne accès à rien par lui-même, et se lit dans un éditeur de texte. Tout le reste de cette page découle de ce seul fait.

Structure d’un fichier de playlist M3U, affichée sur un ordinateur et un téléviseur

Anatomie du fichier

Le format suit une règle unique : une ligne décrit une entrée, la ligne suivante dit où la trouver. Voici une playlist d'exemple écrite pour cette page.

  1. #EXTM3U

    En-tête obligatoire, toujours en première ligne. Il annonce une playlist « étendue », c'est-à-dire capable de porter des métadonnées. Sans lui, beaucoup de lecteurs refusent le fichier sans message explicite.

  2. #EXTINF:-1 tvg-id="exemple.fr" group-title="Démo",Chaîne d'exemple

    Décrit l'entrée qui suit. -1 signifie durée inconnue, ce qui est le cas de tout flux en direct. Le texte placé après la virgule est le nom affiché dans le lecteur.

  3. https://example.invalid/flux-demo

    L'adresse de l'entrée. C'est la seule ligne qui désigne quelque chose d'extérieur. Cette adresse utilise le domaine réservé .invalid : elle ne mène nulle part, volontairement.

  4. #EXTINF:-1 group-title="Démo",Deuxième exemple

    Chaque entrée reprend le même couple : une ligne de description, puis une ligne d'adresse. Une playlist de 800 chaînes, c'est 1 601 lignes.

  5. https://example.invalid/flux-demo-2
Exemple rédigé pour cette documentation. Les adresses utilisent le domaine réservé example.invalid et ne pointent vers rien.

Cette structure explique la plupart des messages d'erreur. « Format non reconnu » renvoie presque toujours à la première ligne. « Liste vide » signifie que le lecteur n'a trouvé aucun couple description / adresse exploitable — souvent parce que le fichier téléchargé est en réalité une page web d'erreur enregistrée sous l'extension .m3u.

Les attributs de la ligne #EXTINF

Après #EXTINF: viennent la durée, puis des attributs facultatifs sous forme clé="valeur", puis une virgule, puis le nom affiché. Les attributs ne sont pas normalisés : chaque lecteur en reconnaît un sous-ensemble et ignore silencieusement le reste.

Attributs les plus répandus. Tous sont facultatifs.

AttributRôleSi absent
tvg-idRelie la chaîne à une source de guide des programmes.Pas d'EPG pour cette chaîne.
tvg-nameNom technique, parfois différent du nom affiché.Le lecteur retombe sur le nom affiché.
tvg-logoAdresse de l'image du logo.Vignette générique ou aucune.
group-titleNom du dossier dans lequel la chaîne apparaît.Toutes les chaînes dans une liste unique, non classée.

C'est group-title qui décide de l'organisation affichée, pas le lecteur. Une playlist dont toutes les chaînes arrivent en vrac est une playlist dont l'auteur n'a pas rempli cet attribut.

Les attributs liés au guide des programmes

Une playlist ne contient pas le guide des programmes. Elle peut en revanche indiquer où le trouver, et c'est ce qui explique qu'un lecteur affiche une grille complète à partir d'un simple fichier texte.

Le renvoi se fait sur la première ligne, pas sur les entrées : un attribut url-tvg — parfois écrit x-tvg-url — accompagne l'en-tête #EXTM3U et désigne un fichier XMLTV, qui est le format dans lequel circulent les programmes. Les deux orthographes coexistent et les lecteurs acceptent généralement l'une comme l'autre.

Le lien entre les deux fichiers se fait ensuite entrée par entrée, par tvg-id : c'est l'identifiant que le lecteur cherche dans le guide. Un tvg-id absent ou mal orthographié donne exactement le symptôme que l'on décrit comme « l'EPG ne marche pas » — la chaîne se lit parfaitement, mais aucune émission ne s'affiche en face. On rencontre aussi tvg-shift, qui décale les horaires d'un nombre d'heures pour corriger un fuseau, et catchup avec ses variantes, qui signale aux lecteurs compatibles qu'un replay est disponible.

Aucun de ces attributs n'est obligatoire, et aucun n'est normalisé. Un lecteur qui n'en comprend pas un l'ignore en silence : c'est la règle générale du format, et elle vaut ici aussi.

M3U ou M3U8

La différence porte sur l'encodage du texte, pas sur la qualité de l'image. Un fichier .m3u8 est encodé en UTF-8 et peut donc contenir des accents, des caractères arabes ou cyrilliques sans les abîmer. Un .m3u ancien peut afficher « Chaîne » là où il faudrait lire « Chaîne ».

Le même suffixe apparaît aussi à la fin de nombreuses adresses de flux, pour une raison sans rapport : il désigne alors un manifeste HLS, c'est-à-dire la liste des segments vidéo d'un direct. Une playlist M3U8 et un flux M3U8 portent donc le même nom sans jouer le même rôle. La confusion est fréquente et elle est normale.

M3U et M3U_PLUS

M3U_PLUS revient sans cesse dans les adresses fournies par les vendeurs, et il n'appartient pourtant pas au format : ce n'est pas un type de fichier, c'est une option demandée au serveur. Elle apparaît dans les paramètres de l'adresse, sous la forme type=m3u_plus.

Ce qu'elle change est concret. Avec type=m3u, certains serveurs renvoient une liste réduite à l'essentiel — des adresses, et peu de choses autour. Avec type=m3u_plus, la même liste arrive avec les lignes #EXTINF complètes : noms affichables, logos, groupes, identifiants de guide. C'est la raison pour laquelle une playlist peut sembler « nue » dans un lecteur alors qu'un autre affiche tout : souvent, ce ne sont pas les lecteurs qui diffèrent, c'est l'adresse qui n'a pas demandé la même chose.

Un second paramètre accompagne généralement le premier : output, qui choisit la façon dont le flux est servi — ts pour un flux continu, m3u8 ou hls pour un flux découpé en segments. Il influe sur la compatibilité avec certains lecteurs et sur le comportement au démarrage, pas sur le catalogue.

À retenir : ces paramètres sont fournis par celui qui émet l'adresse. On ne les invente pas, et modifier à la main ceux d'une adresse qui fonctionne est le meilleur moyen de casser quelque chose qui n'avait rien.

Fichier ou adresse

Les deux contiennent exactement la même chose. Ce qui change, c'est le moment où la liste est lue.

Un fichier est un instantané : il fige la liste telle qu'elle était au téléchargement. Une adresse est une référence vivante : le lecteur la consulte à nouveau et obtient la liste du jour, avec les chaînes ajoutées depuis.

Cette distinction conceptuelle a des conséquences très concrètes au moment de la configuration — elles sont traitées dans la page Ouvrir une playlist.

Le « code IPTV »

L'expression ne correspond à rien dans le format. Elle recouvre, selon qui parle, l'une de ces trois choses :

  • une adresse de playlist, un lien se terminant souvent par .m3u ou .m3u8 ;
  • un couple identifiant / mot de passe accompagné d'une adresse de serveur, que certains lecteurs demandent dans trois champs séparés ;
  • un code court affiché à l'écran par une application de téléviseur, qui ne sert qu'à associer l'appareil à un compte et expire en quelques minutes.

Les trois sont appelés « code » par la même personne dans la même phrase. Identifier lequel vous avez détermine où le saisir, et c'est la première question à trancher : M3U, Xtream et Stalker compare les trois côte à côte.

« Code M3U » et « lien M3U » : quelle différence ?

Aucune, au sens strict : « code M3U » n'est pas un format, ni une variante, ni un protocole. C'est une expression d'usage — employée par les vendeurs et reprise par les acheteurs — qui désigne presque toujours le lien M3U lui-même, c'est-à-dire l'adresse de la playlist. Rien dans la spécification du format ne mentionne de « code ».

Trois objets différents circulent pourtant sous ce même mot :

  • Le lien M3U — une adresse complète, commençant par http, que le lecteur consulte pour récupérer la liste. C'est elle que l'on appelle « code M3U » neuf fois sur dix.
  • Des identifiants inclus dans cette adresse. Beaucoup de liens portent un nom d'utilisateur et un mot de passe dans leurs paramètres : ils servent à construire l'adresse, mais ils ne forment pas un objet séparé. Qui détient le lien détient ces identifiants — raison suffisante pour ne pas le publier.
  • Des identifiants de type Xtream — un serveur, un nom d'utilisateur et un mot de passe saisis dans trois champs distincts. Ce n'est pas une playlist M3U et cela ne se colle pas dans un champ d'adresse ; le fonctionnement est décrit sur la page des protocoles citée plus haut.

On entend aussi parler de « code M3U plus ». Il ne s'agit pas d'un quatrième objet : m3u_plus est une option inscrite dans les paramètres de l'adresse, décrite plus haut dans M3U et M3U_PLUS. Le « code » reste le lien ; l'option ne fait que préciser ce que le serveur doit y mettre.

Une fois identifié ce que vous avez entre les mains, il reste à le saisir au bon endroit : ouvrir une playlist sur votre appareil indique où se trouve le champ selon le lecteur et le type d'appareil.

Vérifier qu'un fichier M3U est valide

Le format n'a pas de validateur officiel, mais il a un avantage rare : il est lisible par un humain. Ouvrir le fichier dans un éditeur de texte simple — Bloc-notes, TextEdit en mode texte brut, n'importe quel éditeur de code — répond en quelques secondes à la plupart des questions.

  • La première ligne est-elle exactement #EXTM3U ? Si elle est absente, décalée, ou précédée d'un espace ou d'une ligne vide, beaucoup de lecteurs refusent le fichier sans rien expliquer.
  • Voyez-vous <html ou <!DOCTYPE ? Alors ce n'est pas une playlist : c'est une page web — message d'erreur, page de connexion ou avertissement du serveur — enregistrée sous l'extension .m3u. C'est la cause la plus fréquente d'une « liste vide » parfaitement inexplicable par ailleurs.
  • Les lignes vont-elles par deux ? Une ligne #EXTINF suivie d'une ligne d'adresse. Une description sans adresse en dessous produit une entrée qui s'affiche et ne démarre jamais.
  • Les accents s'affichent-ils correctement ? Sinon le fichier n'est pas en UTF-8, et c'est l'encodage qu'il faut corriger, pas les noms.
  • Les guillemets sont-ils droits ? Un traitement de texte remplace " par des guillemets typographiques, ce qui casse silencieusement tous les attributs de la ligne.

Un dernier contrôle, sur le poids : une playlist de plusieurs centaines de chaînes pèse quelques dizaines de kilo-octets. Une archive, un exécutable ou un fichier de plusieurs mégaoctets n'est pas une playlist, quel que soit le nom qu'on lui a donné.

Si le fichier est propre et que rien ne se charge malgré tout, le problème n'est plus dans le format : Dépannage reprend les symptômes un par un, du « liste vide » aux coupures en cours de lecture.

Pourquoi une entrée cesse de fonctionner

Parce qu'une playlist stocke des pointeurs, pas du contenu. Le fichier reste valide indéfiniment ; ce qui se trouve au bout de ses adresses ne lui appartient pas et peut changer sans qu'il le sache.

Une entrée meurt donc quand l'adresse disparaît, quand le serveur exige désormais une authentification, quand un jeton temporaire intégré à l'adresse expire, ou quand le chemin est réorganisé. Le lecteur, lui, n'a rien fait de mal : il a lu une adresse et a frappé à une porte qui ne répond plus.

C'est le mécanisme structurel. Les raisons pour lesquelles les listes diffusées publiquement s'éteignent bien plus vite que les autres tiennent à leur fonctionnement propre, décrit dans Sources publiques.

Ce que le format ne fait pas

Il ne transporte pas de vidéo, ne chiffre rien, ne vérifie rien et n'autorise rien. Il n'a aucun mécanisme d'expiration : un M3U de 2019 s'ouvre encore parfaitement aujourd'hui, il pointe simplement vers des adresses mortes.

Il ne porte pas non plus de droits. Le format est ouvert et son usage parfaitement légal ; ce que désignent les adresses qu'il contient relève d'une autre question, indépendante du fichier.

Questions fréquentes

Un fichier M3U contient-il les vidéos ?

Non. Il ne contient que du texte : des noms et des adresses. Une playlist de plusieurs centaines de chaînes pèse quelques dizaines de kilo-octets. Un fichier de plusieurs mégaoctets contient beaucoup d'entrées, pas de la vidéo.

Pourquoi mon fichier .m3u s'ouvre-t-il dans un éditeur de texte ?

Parce que c'en est un. Votre système n'associe simplement aucun lecteur à cette extension. Ce n'est pas le signe d'un fichier corrompu : profitez-en pour vérifier que la première ligne est bien #EXTM3U.

Les accents de mes noms de chaînes sont remplacés par des caractères bizarres. Est-ce réparable ?

C'est un problème d'encodage, pas de contenu. Le fichier est probablement enregistré dans un encodage ancien alors que le lecteur attend de l'UTF-8. Ré-enregistrer le fichier en UTF-8 sans BOM corrige l'affichage dans la plupart des lecteurs.

Peut-on modifier une playlist à la main ?

Oui, avec un éditeur de texte simple. Supprimer une entrée revient à supprimer ses deux lignes, description et adresse. Attention aux traitements de texte : ils remplacent les guillemets droits par des guillemets typographiques, ce qui casse les attributs.

Le format M3U est-il propriétaire ?

Non. C'est une convention ouverte née dans le logiciel audio à la fin des années 1990, jamais formellement normalisée mais largement implémentée. C'est pourquoi le même fichier fonctionne dans des lecteurs très différents.

Qu'est-ce que M3U_PLUS et faut-il le préférer ?

Ce n'est pas un format mais une option demandée au serveur, visible dans les paramètres de l'adresse sous la forme type=m3u_plus. Elle fait renvoyer des lignes #EXTINF complètes — noms, logos, groupes, identifiants de guide — là où type=m3u peut ne renvoyer que l'essentiel. C'est le fournisseur de l'adresse qui la fixe : vous n'avez pas à la choisir, et modifier à la main une adresse qui fonctionne est rarement une bonne idée.

Ma playlist fonctionne mais le guide des programmes reste vide. Pourquoi ?

Parce que le guide est un second fichier, au format XMLTV, désigné par l'attribut url-tvg (ou x-tvg-url) sur la première ligne de la playlist. La correspondance entre les deux se fait ensuite par tvg-id, entrée par entrée. Un tvg-id absent ou mal orthographié donne exactement ce symptôme : la chaîne se lit parfaitement, mais aucune émission ne s'affiche en face.

Comment vérifier qu'un fichier M3U est valide ?

Ouvrez-le dans un éditeur de texte simple. La première ligne doit être exactement #EXTM3U, les lignes doivent aller par deux (description puis adresse), et les accents doivent s'afficher normalement. Si vous y voyez <html> ou <!DOCTYPE>, ce n'est pas une playlist mais une page web enregistrée avec l'extension .m3u — la cause la plus fréquente d'une liste vide inexplicable.