SRT vs VTT: wat is het verschil en welk ondertitelbestand gebruik je?
Hoe de twee meest gebruikte ondertitelbestanden regel voor regel verschillen, welke platforms welk formaat accepteren en hoe je ze converteert zonder dat de timing verschuift.
Bijgewerkt op 8 min leestijdDoor het AutoCap-team
Het korte antwoord
Gebruik SRT als je ondertiteling uploadt naar een videoplatform en niet zeker weet wat het verwacht. Het is de eenvoudigste van de twee, en YouTube, Vimeo en LinkedIn accepteren het allemaal. Gebruik VTT (WebVTT) als de ondertiteling wordt afgespeeld op een webpagina die je zelf beheert — een HTML5-speler, een cursusplatform, je eigen site — of als je iets nodig hebt wat SRT niet kan uitdrukken, zoals een ondertitel bovenin het beeld zetten.
Het zijn allebei platte tekstbestanden. Allebei bevatten ze in de basis hetzelfde: een lijst ondertitels, elk met een begintijd, een eindtijd en de woorden die in beeld komen. Je converteert het ene in een paar seconden naar het andere. De verschillen zijn klein, maar het zijn precies de details waardoor een upload mislukt.
Wat een SRT-bestand is
SRT staat voor SubRip Subtitle. De naam komt van SubRip, gratis software die ondertiteling met de bijbehorende timing van dvd’s naar een tekstbestand haalt. Elke ondertitel bestaat uit vier delen:
- Een volgnummer, oplopend vanaf 1.
- Een tijdcoderegel: de begin- en eindtijd, gescheiden door
-->, elk geschreven alsuren:minuten:seconden,milliseconden. - Een of meer regels ondertiteltekst.
- Een lege regel die de ondertitel afsluit.
Uren, minuten en seconden hebben altijd twee cijfers en milliseconden altijd drie, dus tienenhalve seconde is 00:00:10,500. Het Helpcentrum van Vimeo noemt dezelfde regel op de pagina over het oplossen van problemen met ondertitelbestanden.
Dat is het hele formaat. Sommige spelers begrijpen een paar HTML-achtige tags in SRT, zoals <i> voor cursief, maar daar is geen garantie voor. YouTube zegt bijvoorbeeld dat het alleen eenvoudige SRT-bestanden ondersteunt, er geen opmaakcode in herkent en platte UTF-8-tekst vereist.
Wat een VTT-bestand is
VTT is de afkorting van WebVTT, het Web Video Text Tracks-formaat, een W3C-specificatie. Browsers gebruiken dit formaat voor ondertiteling bij HTML5-video. De ondertitels lijken sterk op die van SRT, en het formaat voegt toe wat een webspeler nodig heeft: positionering, opmaak, opmerkingen en sprekeraanduiding.
Een WebVTT-bestand moet beginnen met het woord WEBVTT, gevolgd door een lege regel, en moet als UTF-8 gecodeerd zijn. Wordt het vanaf een website geserveerd, dan is het MIME-type text/vtt. Ondertitelnummers zijn optioneel — een ondertitel kan elke willekeurige ID hebben, of geen. Tijdcodes zetten een punt vóór de milliseconden, en de uren mogen weg als ze nul zijn, dus 00:10.500 is geldig.
Dezelfde ondertitels in beide formaten
Hier zijn drie ondertitels uit een korte tutorial, eerst als SRT:
1
00:00:01,200 --> 00:00:03,800
Welcome back. Today we're testing
three ways to light a small room.
2
00:00:04,100 --> 00:00:06,500
The first one costs nothing:
just move the desk to the window.
3
00:00:07,000 --> 00:00:08,400
[laughs] Seriously, try it.En dezelfde ondertitels als WebVTT, met een paar functies die SRT niet heeft:
WEBVTT
NOTE Lighting tutorial, English captions, v2
STYLE
::cue(.sound) {
color: yellow;
}
1
00:00:01.200 --> 00:00:03.800
<v Maya>Welcome back. Today we're testing
three ways to light a small room.
2
00:00:04.100 --> 00:00:06.500 line:10%
<v Maya>The first one costs nothing:
just move the desk to the window.
laugh
00:07.000 --> 00:08.400
<c.sound>[laughs]</c> Seriously, try it.De VTT-versie van boven naar beneden: de verplichte header; een NOTE-opmerking die spelers negeren; een STYLE-blok dat alles met de tag .sound een kleur geeft; voice-tags met de naam van de spreker; een ondertitelinstelling (line:10%) die de tweede ondertitel naar de bovenkant van het beeld verplaatst; een tekst-ID (laugh) in plaats van een nummer; en een laatste tijdcode zonder uren.
De verschillen die ertoe doen
De header
Een VTT-bestand zonder WEBVTT op de eerste regel is ongeldig, en een strikte parser weigert het. SRT heeft helemaal geen header; het bestand begint met ondertitelnummer 1. Daarom werkt het niet om captions.srt te hernoemen naar captions.vtt: de header ontbreekt en de tijdcodes gebruiken nog steeds komma’s.
Tijdcodes
SRT schrijft 00:00:04,100. VTT schrijft 00:00:04.100, of 00:04.100. Komma of punt lijkt een detail, maar een parser die het een verwacht, kan het ander weigeren.
Positionering
Ondertitelinstellingen in VTT staan op de tijdcoderegel, na de eindtijd:
line— de verticale positie, als regelnummer of percentage;position— de horizontale inspringing, als percentage;size— de breedte van het ondertitelvak;align— tekstuitlijning: start, center, end, left of right;vertical— verticale tekst, voor schriftsystemen die dat nodig hebben;region— een benoemd gebied dat in eenREGION-blok is gedefinieerd, handig voor scrollende ondertiteling.
Zo til je een ondertitel weg van een naambalk of andere tekst in beeld. Basis-SRT kan een ondertitel op geen enkele manier positioneren.
Opmaak
VTT ondersteunt inline tags — vet, cursief, onderstreept, class-tags (<c>) en ruby-annotaties — plus STYLE-blokken met CSS voor het pseudo-element ::cue. Hoeveel daarvan een speler overneemt, bepaalt de speler zelf. YouTube ondersteunt positionering in VTT-bestanden, maar beperkt de opmaak tot vet, cursief en onderstreept. Moet ondertiteling er overal precies zo uitzien, dan is de enige betrouwbare methode om ze in de video te branden.
Opmerkingen, sprekers en talen
In NOTE-blokken staan opmerkingen — een notitie van de vertaler, een versienummer, een geheugensteuntje — die kijkers nooit zien. Voice-tags (<v Maya>) leggen vast wie er spreekt, op een manier die software kan lezen, en met taaltags markeer je een passage in een andere taal. SRT kent dit allemaal niet. Elke tekstregel in een SRT-ondertitel wordt aan de kijker getoond.
Ondertiteling, hoofdstukken en beschrijvingen
Op een webpagina koppel je een VTT-bestand aan een video met het element <track>, en het attribuut kind geeft aan waarvoor het bestand dient. De HTML-standaard definieert vijf soorten:
subtitles— een transcriptie of vertaling van de dialoog, voor kijkers die de audio wel horen maar niet begrijpen. Dit is de standaardwaarde alskindontbreekt.captions— dialoog plus geluidseffecten, muziek en andere relevante audio, voor als het geluid niet beschikbaar of slecht te horen is.descriptions— tekstbeschrijvingen van wat er in beeld is, bedoeld om door een spraaksynthesizer te worden uitgesproken voor kijkers die de video niet kunnen zien.chapters— hoofdstuktitels om door de video te navigeren.metadata— gegevens voor scripts, niet zichtbaar voor kijkers.
<video controls src="lighting.mp4">
<track kind="captions" src="lighting.en.vtt"
srclang="en" label="English" default>
<track kind="chapters" src="lighting.chapters.vtt"
srclang="en">
</video>Browsers verwachten deze bestanden in WebVTT, dus een site met alleen SRT-bestanden moet ze eerst converteren. Twee praktische details uit de documentatie van MDN: srclang is verplicht als de soort subtitles is, en het trackbestand moet van dezelfde origin komen als de pagina, tenzij het video-element een attribuut crossorigin heeft.
SRT vs VTT in één oogopslag
| Kenmerk | SRT | VTT (WebVTT) |
|---|---|---|
| Bestandsextensie | .srt | .vtt |
| Herkomst | SubRip, een programma om ondertiteling van dvd’s te halen | W3C-specificatie WebVTT |
| Header | Geen | WEBVTT op de eerste regel (verplicht) |
| Ondertitel-ID’s | Opeenvolgende nummers | Optioneel; willekeurige tekst |
| Tijdcode | 00:01:04,100 | 00:01:04.100 of 01:04.100 |
| Uren | Altijd uitgeschreven | Optioneel als ze nul zijn |
| Positionering | Niet in het basisformaat | line, position, size, align, vertical, region |
| Opmaak | Sommige spelers lezen eenvoudige tags; YouTube negeert ze | Inline tags, plus CSS in STYLE-blokken |
| Opmerkingen | Nee | NOTE-blokken |
| Sprekeraanduiding | Nee | Voice-tags met <v> |
| Codering | Gebruik UTF-8 (verplicht op YouTube) | UTF-8 verplicht |
| HTML5 <track> | Nee | Ja |
| Ideaal voor | Uploads naar videoplatforms, bestanden doorgeven aan andere tools | Webspelers, cursusplatforms, sites die je zelf beheert |
Welke platforms welk formaat accepteren
Uploadvereisten veranderen, dus kijk op de helppagina van het platform voordat je een grote reeks uploadt. De stand van zaken in september 2026:
- YouTube accepteert allebei, naast veel andere formaten. SRT-bestanden moeten eenvoudig zijn en uit platte UTF-8-tekst bestaan, zonder opmaak; VTT-bestanden kunnen positionering bevatten, met opmaak beperkt tot vet, cursief en onderstreept. Stap voor stap: een SRT-bestand uploaden naar YouTube.
- Vimeo accepteert SRT en WebVTT voor ondertiteling, raadt WebVTT aan en vraagt om UTF-8-codering.
- Het Helpcentrum van LinkedIn beschrijft hoe je een SRT-bestand toevoegt als je een video post vanaf de desktopsite.
- HTML5-video op je eigen site gebruikt WebVTT via
<track>.
Verticale korte video’s zijn een ander verhaal. Op TikTok, Instagram Reels en YouTube Shorts is ondertiteling in het beeld branden vaak de praktischere keuze, omdat de opmaak dan meereist met de video, in welke app of met welke instellingen die ook wordt afgespeeld. De afwegingen staan in open vs closed captions.
Zo converteer je het ene naar het andere
SRT naar VTT
- Zet
WEBVTTop de eerste regel, gevolgd door een lege regel. - Verander op elke tijdcoderegel de komma vóór de milliseconden in een punt:
00:00:04,100wordt00:00:04.100. - Sla het bestand op als UTF-8 met de extensie
.vtt.
De ondertitelnummers mogen blijven staan; in VTT worden het gewoon ID’s. Vervang alleen komma’s op de tijdcoderegels — een blinde zoek-en-vervangactie verandert ook elke komma in de ondertiteltekst zelf. De gratis SRT-naar-VTT-converter doet alle drie de stappen voor je.
VTT naar SRT
- Verwijder de
WEBVTT-header en alleNOTE-,STYLE- enREGION-blokken. - Nummer de ondertitels vanaf 1 en vervang eventuele tekst-ID’s.
- Schrijf elke tijdcode volledig uit als
HH:MM:SS,mmm: voeg00:toe waar de uren waren weggelaten, en verander de punt in een komma. - Verwijder ondertitelinstellingen zoals
line:10%aan het eind van de tijdcoderegels. - Verwijder voice-, class-, taal-, ruby- en tijdcodetags. Noemde een voice-tag een spreker die kijkers moeten kennen, zet die dan om in een zichtbaar label.
In deze richting gaat informatie verloren — posities, opmaak en sprekeraanduiding — dus bewaar de originele VTT. De VTT-naar-SRT-converter regelt het hernummeren en het herschrijven van de tijdcodes. Komt de geconverteerde ondertiteling steeds te vroeg of te laat, dan is dat een ander probleem: verschuif alle ondertitels tegelijk met de tool Ondertiteling verschuiven.
Welke moet je gebruiken?
- Uploaden naar YouTube, Vimeo of LinkedIn: SRT werkt op alle drie. Kies op YouTube of Vimeo voor VTT als je positionering nodig hebt.
- Je eigen website of cursusspeler: VTT, gekoppeld met
<track kind="captions">. - Ondertiteling doorgeven aan een editor of vertaler: vraag wat hun tools kunnen inlezen. Zeggen ze niets, dan is SRT de veiligste keuze.
- Een masterversie bewaren: exporteer allebei vanuit hetzelfde verbeterde transcript, zodat een correctie in beide bestanden terechtkomt.
Welke je ook kiest, de woorden en de timing zijn belangrijker dan het formaat. Een perfect opgemaakt bestand met een verkeerd verstane naam in ondertitel 12 is nog steeds fout. De SRT-generator en VTT-generator van AutoCap schrijven bij betaalde abonnementen beide formaten vanuit het transcript dat jij hebt verbeterd, met timing voor elk woord — zodat de twee bestanden elkaar nooit tegenspreken.
Vragen
Kan ik een .srt-bestand hernoemen naar .vtt?
Niet zomaar. Een VTT-bestand heeft WEBVTT op de eerste regel nodig en een punt in plaats van een komma vóór de milliseconden. Voeg de header toe en pas de tijdcodes aan, of haal het bestand door een SRT-naar-VTT-converter.
Heeft YouTube liever SRT of VTT?
YouTube accepteert allebei. SRT is de eenvoudigste keuze. Gebruik VTT als je een ondertitel ergens anders dan op de standaardplek wilt zetten: YouTube ondersteunt positionering in VTT-bestanden, maar negeert opmaakcode in SRT-bestanden.
Welk ondertitelformaat ondersteunt opmaak?
WebVTT. Dat kent inline tags en CSS via STYLE-blokken, al bepaalt elke speler zelf hoeveel daarvan hij overneemt. SRT heeft geen standaardopmaak, en YouTube negeert opmaakcode in SRT-bestanden.