Un fichier VTT (WebVTT, pour Web Video Text Tracks) est un fichier texte brut qui contient les sous-titres d'une vidéo diffusée sur le Web. Il commence par la ligne WEBVTT, suivie de blocs qui associent un code temporel comme 00:00:03.400 --> 00:00:06.800 au texte à afficher, et il doit être enregistré en UTF-8. Vous l'ouvrez avec n'importe quel éditeur de texte et le regardez avec VLC ou dans un navigateur. Nous avons écrit un fichier d'exemple en français, et chargé des fichiers volontairement abîmés dans Chrome pour voir ce qui fait disparaître les sous-titres.

Fichier VTT : c'est quoi ?

Ici, VTT n'a rien à voir avec le vélo tout terrain : c'est l'abréviation de Web Video Text Tracks, « pistes de texte pour la vidéo sur le Web ». Le format est défini par le W3C, l'organisme qui publie les standards du Web. En octobre 2026, sa spécification a toujours le statut de « Candidate Recommendation Draft » (version du 20 mai 2026), un projet qui n'est pas encore une recommandation définitive. Les navigateurs l'appliquent pourtant depuis des années : selon MDN, l'élément HTML <track>, qui charge les fichiers WebVTT dans un lecteur vidéo, fonctionne dans tous les navigateurs depuis juillet 2015.

L'essentiel en trois points :

  • Du texte brut. L'extension est .vtt et le type MIME text/vtt. MDN le résume ainsi : WebVTT est un format texte, et les données doivent être encodées en UTF-8.
  • Un descendant du SRT. WebVTT est né en 2010 sous le nom de WebSRT, sur la base du format SRT du logiciel SubRip, et a d'abord été décrit dans le standard HTML avant d'avoir sa propre spécification. Le format d'origine est présenté dans notre guide du fichier SRT.
  • Un format, plusieurs usages. Le même type de fichier sert aux sous-titres de traduction, aux sous-titres pour sourds et malentendants (SME), aux titres de chapitres et à des métadonnées pour des scripts. C'est la page web ou la plateforme qui décide de son rôle, pas le fichier.

Ce que contient un fichier VTT : notre exemple ligne par ligne

Nous avons écrit un court fichier qui réunit tous les éléments courants, avec des accents, une cédille, une apostrophe typographique et des guillemets français.

Fichier WebVTT avec la ligne d'en-tête WEBVTT, un commentaire NOTE, un bloc STYLE et quatre sous-titres en français avec leurs codes temporels, des réglages comme line:0 et des balises comme i et v Léa
Notre fichier d'exemple exemple-sous-titres-fr.vtt, enregistré en UTF-8. Polytested, 17 octobre 2026.
  • L'en-tête : la première ligne est WEBVTT. Après une espace ou une tabulation, vous pouvez ajouter un titre, comme WEBVTT - Exemple Polytested (français). Une marque d'ordre des octets (BOM) invisible est permise avant. Les fins de ligne peuvent être celles de Windows (CRLF) ou d'Unix (LF).
  • Le commentaire : un bloc qui commence par NOTE n'est jamais affiché. Il s'arrête à la première ligne vide.
  • Le bloc de style : STYLE contient du CSS pour les sous-titres. Il doit précéder le premier sous-titre et ne peut pas contenir de ligne vide. Le nôtre colore tout ce que dit Léa.
  • L'identifiant : une ligne facultative avant le code temporel, un numéro ou un mot comme facture. La spécification exige qu'il soit unique dans le fichier ; certaines documentations affirment le contraire, suivez la spécification.
  • Le code temporel : heures, minutes, secondes, un point et exactement trois chiffres de millisecondes. Les heures peuvent être omises (00:03.400) tant qu'elles valent zéro. La flèche est faite de deux traits d'union et d'un signe « supérieur à », entourée d'espaces. Les sous-titres se suivent dans l'ordre de leur début.
  • Les réglages (cue settings) : après le code temporel. line:0 place le sous-titre en haut de l'image, align:start l'aligne à gauche, position:10% le décale vers la droite. La spécification en définit six : vertical, line, position, size, align et region.
  • Le texte et les balises : <i>, <b> et <u> pour l'italique, le gras et le souligné, <v Léa> pour la personne qui parle, <lang en> pour un passage dans une autre langue, <c.nom> pour une classe CSS. Une ligne vide termine le sous-titre ; son texte ne peut donc pas en contenir.
  • Les caractères réservés : écrivez & sous la forme &amp; et < sous la forme &lt; ; MDN recommande aussi &gt; pour >.

Un fichier minimal avec un seul sous-titre tient en quatre lignes :

minimal.vtt
WEBVTT

00:00.000 --> 00:02.500
Les sous-titres commencent ici.

Le style a ses limites. Sur le sélecteur ::cue, seule une courte liste de propriétés CSS s'applique, dont la couleur, le fond, la police, l'ombre du texte, le contour et l'opacité. La position ne passe pas par le CSS mais par les réglages.

VTT ou SRT : les différences

Voici le sous-titre 2 de notre exemple dans les deux formats :

exemple-sous-titres-fr.srt
2
00:00:03,400 --> 00:00:06,800
la même tâche en français, en anglais,
en allemand et en espagnol.
exemple-sous-titres-fr.vtt
WEBVTT

2
00:00:03.400 --> 00:00:06.800
la même tâche en français, en anglais,
en allemand et en espagnol.
SRT et WebVTT comparés, d'après la spécification du W3C et l'aide des plateformes, octobre 2026
PointSRTWebVTT
Première lignele numéro du premier sous-titreWEBVTT
Avant les millisecondesvirgulepoint
Heurestoujours écritesfacultatives
Numérosobligatoiresfacultatifs, tout identifiant unique
Encodagenon défini ; UTF-8 exigé par YouTube et VimeoUTF-8, toujours
Position et stylebalises simples, selon le lecteurréglages, blocs STYLE, classes
Commentairesaucunblocs NOTE
Élément <track> des navigateursrefusé par Chrome dans notre testoui
LinkedInacceptérefusé
YouTubeaccepté, balisage ignoréaccepté, avec la position

Gardez le SRT pour les plateformes qui l'exigent et les vieux lecteurs. Prenez le WebVTT pour une vidéo sur votre propre site, pour Vimeo et dès que la position, les couleurs ou le nom de la personne qui parle comptent. Pour traduire un fichier de sous-titres sans casser sa structure, voyez notre guide de la traduction de sous-titres.

Comment un navigateur affiche un fichier VTT

Un navigateur n'utilise un fichier VTT qu'à travers une page web : l'élément <track>, placé dans un <video>, pointe vers lui.

sous-titres.html
<video controls src="demo.mp4">
  <track kind="subtitles" src="exemple-sous-titres-fr.vtt" srclang="fr" label="Français" default>
  <track kind="captions" src="sme-fr.vtt" srclang="fr" label="FR (SME)">
</video>
  • kind : subtitles (par défaut), captions pour les sous-titres SME, descriptions, chapters ou metadata. Une valeur incorrecte donne metadata, une piste invisible réservée aux scripts.
  • srclang : la langue de la piste, obligatoire pour subtitles.
  • label : le nom affiché dans la liste des pistes.
  • default : la piste activée d'office ; une seule par vidéo.

Ce que nous avons observé dans nos propres tests :

  • Chrome suit le fichier. Le 14 octobre 2026, Chrome 155 a affiché notre fichier de test (en allemand) tel qu'il était écrit : un sous-titre en haut, un autre sur deux lignes en bas, un troisième aligné à gauche et en italique, et la réplique de la personne qui parle dans la couleur du bloc STYLE. Le nom inscrit dans <v …> ne s'affichait pas : il sert seulement à identifier le texte pour la mise en forme.
  • Les classes de couleur demandent un bloc STYLE. La spécification prévoit des classes comme <c.red> ou <c.yellow>. Seules, elles sont restées blanches dans Chrome 155 le 14 octobre 2026. Le 15 octobre, Chrome 155 et Edge 155 n'ont coloré le jaune et le cyan qu'une fois ces couleurs définies dans un bloc STYLE.
  • Le menu n'affiche que le label. Dans les lecteurs intégrés de Chrome 155 et d'Edge 155 (interface en allemand, 15 octobre 2026), le menu des sous-titres listait chaque piste par son label. Une piste sans label apparaissait sous son code de langue. La différence entre captions et subtitles ne se voyait qu'à une petite icône, et seulement si deux pistes portaient le même nom ou si une piste n'en avait pas. Chrome coupait déjà des noms de dix caractères ; « DE (UT) », sept caractères, restait entier. Mettez donc l'élément distinctif en premier et gardez des labels courts.
  • Le mot à mot n'est pas surligné. WebVTT peut minuter chaque mot d'un sous-titre, façon karaoké. Le 15 octobre 2026, Chrome 155 et Edge 155 lisaient ces horodatages, sans colorer différemment les mots déjà chantés et ceux à venir.
  • Un autre domaine demande CORS. Un fichier VTT hébergé sur un autre domaine que la page ne s'est chargé que lorsque l'élément <video> portait l'attribut crossorigin et que le serveur autorisait la requête.

Ce qui fait disparaître les sous-titres : notre test dans Chrome

Nous avons chargé le même fichier de test, trois sous-titres en allemand, comme piste dans Chrome 155, en le modifiant à un seul endroit à chaque fois, et noté ce que Chrome signalait.

Notre fichier de test, modifié à un endroit par variante et chargé comme piste dans Chrome 155, le 14 octobre 2026
VarianteRésultat
Valide : UTF-8, en-tête, points3 sous-titres sur 3
UTF-8 avec BOM3 sur 3
En-tête suivi d'une espace et d'un titre3 sur 3
Sans les heures, comme 00:01.0003 sur 3
Enregistré en Windows-12523 sur 3, mais � à la place de ä, ö, ü, ß et €
Windows-1252, le serveur annonce charset=windows-1252même �
Sans ligne WEBVTTerreur, aucun sous-titre
webvtt en minusculeserreur, aucun sous-titre
WEBVTT suivi directement d'un trait d'unionerreur, aucun sous-titre
Virgules dans tous les codes temporelschargé sans erreur, mais 0 sous-titre
Une virgule dans un seul code temporel2 sur 3, sans message d'erreur
Deux chiffres de millisecondes2 sur 3, sans message d'erreur
Tiret demi-cadratin dans la flèche : –>2 sur 3, sans message d'erreur
Fichier SRT utilisé comme pisteerreur, aucun sous-titre
  • Les virgules échouent en silence. Avec les virgules du SRT, le fichier s'est chargé « sans problème » et n'a rien affiché.
  • L'en-tête ne tolère rien. Exactement WEBVTT, en majuscules, suivi d'une espace, d'une tabulation ou d'un retour à la ligne.
  • Un tiret suffit. Certains sites transforment les deux traits d'union de la flèche en tiret : tapez la flèche vous-même plutôt que de copier un exemple.
  • Renommer n'est pas convertir. Un fichier SRT renommé en .vtt a été refusé.
  • Un < isolé coupe le texte. Dans la même série, Chrome n'a gardé que « Wenn 3 » de la ligne « Wenn 3 < 5 gilt, passt es » (« si 3 < 5, ça va »). Un & isolé est passé, mais échappez les deux.

Encodage : un fichier VTT est toujours en UTF-8

Pour un fichier SRT, l'encodage n'est pas défini et les lecteurs devinent. Le WebVTT ne laisse aucune place au hasard : la spécification exige l'UTF-8 et impose à tout lecteur de décoder le fichier en UTF-8. Dans notre test, un fichier enregistré en Windows-1252 (souvent appelé « ANSI » sous Windows) affichait le caractère de remplacement � à chaque lettre accentuée, même quand le serveur précisait que le fichier était en Windows-1252.

Voici deux sous-titres de notre exemple français, enregistrés en Windows-1252 puis décodés en UTF-8, comme l'exige la spécification :

exemple-sous-titres-fr.vtt, enregistré en Windows-1252, relu en UTF-8
Bonjour � tous ! Aujourd�hui, nous testons

<v L�a>� �a marche, c�est d�j� pr�t ! �

La dernière ligne compte huit caractères de remplacement : les guillemets, le Ç, l'apostrophe typographique, les accents, et même le nom dans la balise. Enregistrez donc chaque fichier VTT en UTF-8 ; le BOM est facultatif et n'a posé aucun problème dans notre test. Dans Notepad++, le menu Encodage propose « Convertir en UTF-8 ». Pour le Bloc-notes et TextEdit, les réglages sont détaillés dans notre guide du fichier SRT.

Ouvrir un fichier VTT

  • Pour le lire ou le modifier : n'importe quel éditeur de texte brut, comme le Bloc-notes sous Windows ou TextEdit sur Mac en mode texte. Évitez les traitements de texte, qui ajoutent de la mise en forme.
  • Pour le regarder avec la vidéo : VLC lit le WebVTT depuis sa version 2.2 et a réécrit cette prise en charge dans la version 3.0, styles CSS compris. Donnez au fichier .vtt le même nom que la vidéo et placez-le dans le même dossier : VLC le charge tout seul. Sinon, passez par Sous-titres > Ajouter un fichier de sous-titres…
  • Pour le modifier avec un aperçu : Subtitle Edit, gratuit et open source, pour Windows, macOS et Linux, affiche les sous-titres sur la vidéo et les enregistre dans d'autres formats. Son interface existe en français.
  • Dans un navigateur : par une page web avec un élément <track>, comme ci-dessus.

Convertir un fichier VTT en SRT

Le plus simple est Subtitle Edit : ouvrez le fichier .vtt, puis choisissez Fichier > Sauver sous… et le format SubRip (.srt). Le SRT n'a pas de place pour les blocs STYLE, les commentaires ni les réglages de position : ils disparaissent.

Sans logiciel, utilisez « Rechercher et remplacer » avec des expressions régulières, dans Visual Studio Code (Ctrl+H, puis le bouton .*) ou dans Notepad++ (Recherche > Remplacer…, mode « Expression régulière », case « . comprend EOL » décochée, puis « Remplacer tout »). Nous avons testé ces expressions avec le moteur d'expressions régulières de JavaScript, celui de la recherche de VS Code, sur des fichiers avec fins de ligne Windows et Unix. Respectez l'ordre :

  1. Supprimez la ligne WEBVTT et tous les blocs NOTE et STYLE.
  2. Ajoutez les heures manquantes : cherchez (?<![\d:])(\d\d:\d\d\.\d\d\d), remplacez par 00:$1.
  3. Remplacez le point par une virgule dans les codes temporels uniquement : cherchez (\d\d:\d\d:\d\d)\.(\d\d\d), remplacez par $1,$2.
  4. Supprimez les réglages : cherchez ^(\d\d:\d\d:\d\d,\d\d\d --> \d\d:\d\d:\d\d,\d\d\d)[ \t].*$, remplacez par $1.
  5. Supprimez les identifiants : cherchez ^.+\r?\n(?=\d\d:\d\d:\d\d,\d\d\d --> ), remplacez par rien. Numérotez ensuite les sous-titres 1, 2, 3 ; pour un long fichier, laissez Subtitle Edit s'en charger.
  6. Transformez les balises de voix en noms : cherchez <v(?:\.[^ \t>]+)*[ \t]+([^>]+)>, remplacez par $1: `. Supprimez ensuite les autres balises sauf i, b et u : cherchez `<(?!\/?[ibu]>)[^>]+>, remplacez par rien.
  7. Remplacez &lt; par <, &gt; par >, et en dernier &amp; par &.
  8. Enregistrez en UTF-8 avec l'extension .srt.

C'est à l'étape 3 que les raccourcis font des dégâts. Remplacer tous les points du fichier abîme le texte, pas seulement les codes temporels. Voici notre court extrait de réunion après un « Remplacer tout » à l'aveugle :

reunion-fr.vtt, tous les points remplacés par des virgules
00:00:04,600 --> 00:00:07,900
<v Hugo Bernard>Oui, et le site exemple,fr est à jour, etc,</v>

Les codes temporels sont devenus corrects pour le SRT, mais l'adresse du site est cassée, « etc. » aussi, et dans le sous-titre précédent « M. Dupont » est devenu « M, Dupont ». Avec les étapes ci-dessus, le même extrait donne un fichier SRT propre :

reunion-fr.srt
1
00:00:01,000 --> 00:00:04,200
Claire Martin: Bonjour ! M. Dupont a validé la facture ?

2
00:00:04,600 --> 00:00:07,900
Hugo Bernard: Oui, et le site exemple.fr est à jour, etc.

Le deux-points après le nom est celui de l'étape 6, sans espace avant ; ajoutez-la si vous voulez suivre la typographie française.

Convertir un fichier VTT en texte (Teams, Zoom)

Dans Microsoft Teams, les organisateurs et co-organisateurs peuvent par défaut télécharger la transcription d'une réunion au format .docx ou .vtt : dans Chat, ouvrez la conversation de la réunion, sélectionnez Récapitulatif, puis Transcription, puis la flèche à côté de Télécharger, et choisissez le type de fichier. Si seul le texte vous intéresse, prenez le .docx. Dans les fichiers de Teams, la personne qui parle figure dans une balise de voix comme <v User Name>, d'après la documentation pour développeurs de Microsoft. Zoom enregistre la transcription d'un enregistrement dans le cloud au format VTT, avec un compte Pro, Business, Education ou Enterprise.

Pour obtenir du texte seul :

  • Subtitle Edit : Fichier > Exporter > Texte brut…
  • Rechercher et remplacer : supprimez l'en-tête et les blocs NOTE et STYLE ; supprimez chaque ligne de code temporel avec l'identifiant au-dessus (^(?:.+\r?\n)?(?:\d+:)?\d\d:\d\d\.\d\d\d[ \t]+-->.*\r?\n) ; transformez les balises de voix en noms comme à l'étape 6, puis supprimez toutes les balises (<[^>]+>) ; décodez &lt;, &gt; et &amp; ; rassemblez les lignes de chaque sous-titre ((\S)\r?\n(?=\S) remplacé par $1 `) ; enfin, supprimez les lignes vides ((\r?\n)(?:\r?\n)+ remplacé par `$1).

Notre extrait de réunion, converti ainsi :

reunion-fr.txt
Claire Martin: Bonjour ! M. Dupont a validé la facture ?
Hugo Bernard: Oui, et le site exemple.fr est à jour, etc.

Pour transformer une transcription en compte rendu, voyez notre guide du compte rendu de réunion ; pour un entretien, celui sur la transcription d'entretien. Une transcription de réunion contient des noms et souvent des informations confidentielles, donc des données personnelles : convertissez-la sur votre ordinateur plutôt que dans un convertisseur en ligne gratuit.

Où utiliser un fichier VTT

Prise en charge du VTT d'après l'aide de chaque plateforme, vérifiée en octobre 2026
PlateformeVTT ?À savoir
YouTubeouiLa position fonctionne ; le style se limite au gras, à l'italique et au souligné. Pour débuter, YouTube recommande le SRT ou le SBV.
Vimeooui, recommandéEn UTF-8 et commençant par WEBVTT.
LinkedInnonSRT uniquement, depuis un navigateur sur ordinateur.
Microsoft Stream (SharePoint, OneDrive)ouiPremière ligne WEBVTT ; notes, commentaires et styles supprimés à l'import ; 4 Mo au plus.
PowerPointouiWebVTT depuis Office 2016, sur Mac depuis la version 16.63 ; SRT en UTF-8 seulement depuis la version 2411.
Microsoft TeamstéléchargementTranscriptions en .docx ou .vtt.
ZoomtéléchargementTranscriptions des enregistrements dans le cloud en VTT.
H5PouiLes sous-titres doivent être en .vtt (aide en anglais).

Dans Microsoft Stream, l'import se fait par Paramètres vidéo, section Transcriptions et sous-titres, Charger. Dans PowerPoint, sélectionnez la vidéo, puis dans l'onglet Lecture choisissez Insérer des sous-titres > Insérer des sous-titres. Descript exporte les sous-titres en SRT ou en VTT.

Liste de contrôle avant l'import

  1. UTF-8, avec ou sans BOM.
  2. Première ligne exactement WEBVTT, avec au plus un titre après une espace.
  3. Codes temporels avec un point et trois chiffres de millisecondes, sans espace avant les deux-points, dans l'ordre chronologique.
  4. Flèches tapées avec deux traits d'union et un signe « supérieur à ».
  5. Blocs STYLE avant le premier sous-titre, sans ligne vide.
  6. &amp; et &lt; à la place de & et < dans le texte.
  7. Labels courts, avec l'élément distinctif en premier.
  8. Un essai dans le lecteur de destination : dans nos tests, un fichier défectueux échouait souvent sans le moindre message d'erreur.