SRT a VTT: czym się różnią i którego pliku napisów użyć?

Czym wiersz po wierszu różnią się dwa najpopularniejsze formaty plików napisów, które platformy przyjmują który z nich i jak konwertować między nimi, nie psując synchronizacji.

Zaktualizowano 8 min czytaniaZespół AutoCap

Krótka odpowiedź

Wybierz SRT, gdy wysyłasz napisy na platformę wideo i nie masz pewności, czego oczekuje. To prostszy z dwóch formatów, a przyjmują go YouTube, Vimeo i LinkedIn. Wybierz VTT (WebVTT), gdy napisy mają działać na stronie, którą kontrolujesz – w odtwarzaczu HTML5, na platformie kursowej, we własnym serwisie – albo gdy potrzebujesz czegoś, czego SRT nie potrafi zapisać, na przykład przeniesienia napisu na górę kadru.

Oba to zwykły tekst. Oba przechowują w gruncie rzeczy to samo: listę napisów, każdy z czasem początku, czasem końca i słowami do wyświetlenia. Jeden można przekonwertować na drugi w kilka sekund. Różnice są niewielkie, ale to właśnie przez takie szczegóły przesyłanie pliku kończy się błędem.

Czym jest plik SRT

SRT to skrót od SubRip Subtitle. Nazwa pochodzi od SubRip, darmowego programu, który przenosił napisy i ich czasy z płyt DVD do pliku tekstowego. Każdy napis składa się z czterech części:

  1. Numer kolejny, liczony od 1.
  2. Wiersz czasu: czas początku i końca rozdzielone znakiem -->, każdy zapisany jako godziny:minuty:sekundy,milisekundy.
  3. Jeden wiersz tekstu napisu lub więcej.
  4. Pusty wiersz, który kończy napis.

Godziny, minuty i sekundy mają zawsze dwie cyfry, a milisekundy trzy, więc dziesięć i pół sekundy to 00:00:10,500. Centrum pomocy Vimeo podaje tę samą zasadę na stronie o problemach z plikami napisów.

I to cały format. Część odtwarzaczy uwzględnia w SRT kilka znaczników w stylu HTML, na przykład <i> dla kursywy, ale nie ma na to gwarancji. YouTube na przykład zaznacza, że obsługuje tylko podstawowe pliki SRT, nie rozpoznaje w nich żadnych znaczników stylu i wymaga czystego tekstu w UTF-8.

Czym jest plik VTT

VTT to skrót od WebVTT, czyli Web Video Text Tracks – formatu opisanego w specyfikacji W3C. To w nim przeglądarki wyświetlają napisy dołączone do wideo HTML5. Jego napisy wyglądają bardzo podobnie jak w SRT, a do tego dochodzi to, czego potrzebuje odtwarzacz internetowy: pozycjonowanie, style, komentarze i oznaczanie mówiących.

Plik WebVTT musi zaczynać się od słowa WEBVTT, po którym następuje pusty wiersz, i musi być zapisany w UTF-8. Serwowany ze strony internetowej ma typ MIME text/vtt. Numery napisów są opcjonalne – napis może mieć dowolny identyfikator albo żadnego. Znaczniki czasu mają kropkę przed milisekundami, a godziny można pominąć, gdy są zerowe, więc 00:10.500 jest poprawne.

Te same napisy w obu formatach

Oto trzy napisy z krótkiego poradnika, najpierw w formacie SRT:

lighting-tutorial.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.

I te same napisy w WebVTT, z kilkoma możliwościami, których SRT nie ma:

lighting-tutorial.vtt
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.

Wersja VTT od góry: wymagany nagłówek; komentarz NOTE, który odtwarzacze pomijają; blok STYLE nadający kolor wszystkiemu z klasą .sound; znaczniki głosu z imieniem mówiącego; ustawienie napisu (line:10%), które przesuwa drugi napis pod górną krawędź kadru; identyfikator tekstowy (laugh) zamiast numeru; i ostatni znacznik czasu bez godzin.

Różnice, które mają znaczenie

Nagłówek

Plik VTT bez WEBVTT w pierwszym wierszu jest nieprawidłowy i restrykcyjny parser go odrzuci. SRT nie ma nagłówka w ogóle – plik zaczyna się od napisu numer 1. Dlatego zmiana nazwy captions.srt na captions.vtt nic nie daje: brakuje nagłówka, a znaczniki czasu wciąż mają przecinki.

Znaczniki czasu

SRT zapisuje 00:00:04,100. VTT zapisuje 00:00:04.100 albo 00:04.100. Przecinek zamiast kropki wygląda na drobiazg, ale parser, który oczekuje jednego znaku, potrafi odrzucić drugi.

Pozycjonowanie

Ustawienia napisu w VTT zapisuje się w wierszu czasu, za czasem końcowym:

  • line – pozycja w pionie, jako numer wiersza lub wartość procentowa;
  • position – wcięcie w poziomie, jako wartość procentowa;
  • size – szerokość pola napisu;
  • align – wyrównanie tekstu: start, center, end, left lub right;
  • vertical – tekst pionowy, dla systemów pisma, które tego wymagają;
  • region – nazwany obszar zdefiniowany w bloku REGION, przydatny przy przewijanych napisach.

W ten sposób przesuniesz napis tak, by nie zasłaniał belki z nazwiskiem ani innego tekstu na ekranie. Podstawowy SRT nie pozwala ustawić pozycji napisu.

Style

VTT obsługuje znaczniki w tekście – pogrubienie, kursywę, podkreślenie, zakresy z klasą (<c>) i adnotacje ruby – a do tego bloki STYLE z regułami CSS dla pseudoelementu ::cue. To, ile z tego uwzględni odtwarzacz, zależy wyłącznie od niego. YouTube obsługuje pozycjonowanie w plikach VTT, ale style ogranicza do pogrubienia, kursywy i podkreślenia. Jeśli napisy mają wszędzie wyglądać tak samo, jedynym pewnym sposobem jest wtopienie ich w wideo.

Komentarze, mówiący i języki

Bloki NOTE zawierają komentarze – uwagę tłumacza, numer wersji, przypomnienie – których widz nigdy nie zobaczy. Znaczniki głosu (<v Maya>) zapisują, kto mówi, w formie czytelnej dla programów, a znaczniki języka oznaczają fragment w innym języku. SRT nie ma żadnej z tych możliwości. Każdy wiersz tekstu w napisie SRT jest pokazywany widzowi.

Napisy, rozdziały i opisy

Na stronie internetowej plik VTT podpina się do wideo elementem <track>, a jego atrybut kind mówi, do czego plik służy. Standard HTML definiuje pięć rodzajów:

  • subtitles – transkrypcja lub tłumaczenie dialogów, dla widzów, którzy słyszą dźwięk, ale go nie rozumieją. To wartość domyślna, gdy brakuje atrybutu kind.
  • captions – dialogi oraz efekty dźwiękowe, muzyka i inne istotne dźwięki, na wypadek gdy dźwięku nie ma lub trudno go usłyszeć.
  • descriptions – tekstowe opisy tego, co dzieje się na ekranie, przeznaczone do odczytania przez syntezator mowy dla widzów, którzy nie widzą obrazu.
  • chapters – tytuły rozdziałów do nawigacji po wideo.
  • metadata – dane dla skryptów, niewidoczne dla widzów.
player.html
<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>

Przeglądarki oczekują tych plików w formacie WebVTT, więc strona, która ma tylko pliki SRT, musi je najpierw przekonwertować. Dwa praktyczne szczegóły z dokumentacji MDN: atrybut srclang jest wymagany, gdy rodzaj to subtitles, a plik ścieżki musi pochodzić z tego samego źródła co strona, chyba że element wideo ma atrybut crossorigin.

SRT a VTT w skrócie

Porównanie SRT i VTT
CechaSRTVTT (WebVTT)
Rozszerzenie pliku.srt.vtt
PochodzenieSubRip, program do wyciągania napisów z płyt DVDSpecyfikacja WebVTT organizacji W3C
NagłówekBrakWEBVTT w pierwszym wierszu (wymagany)
Identyfikatory napisówKolejne numeryOpcjonalne; dowolny tekst
Znacznik czasu00:01:04,10000:01:04.100 lub 01:04.100
GodzinyZawsze zapisywaneOpcjonalne, gdy są zerowe
PozycjonowanieBrak w podstawowym formacieline, position, size, align, vertical, region
StyleCzęść odtwarzaczy czyta proste znaczniki; YouTube je ignorujeZnaczniki w tekście oraz CSS w blokach STYLE
KomentarzeNieBloki NOTE
Oznaczanie mówiącychNieZnaczniki głosu <v>
KodowanieStosuj UTF-8 (YouTube go wymaga)Wymagane UTF-8
<track> w HTML5NieTak
ZastosowaniePrzesyłanie na platformy wideo, przekazywanie plików innym narzędziomOdtwarzacze internetowe, platformy kursowe, własne strony

Które platformy przyjmują który format

Wymagania dotyczące przesyłania plików się zmieniają, więc przed większą partią sprawdź stronę pomocy danej platformy. Stan na wrzesień 2026:

  • YouTube przyjmuje oba, a do tego wiele innych formatów. Pliki SRT muszą być podstawowe, w czystym UTF-8 i bez stylów; pliki VTT mogą zawierać pozycjonowanie, a style ograniczają się do pogrubienia, kursywy i podkreślenia. Krok po kroku: jak przesłać plik SRT do YouTube.
  • Vimeo przyjmuje napisy w formatach SRT i WebVTT, zaleca WebVTT i wymaga kodowania UTF-8.
  • Centrum pomocy LinkedIn opisuje dołączanie pliku SRT przy publikowaniu wideo z wersji na komputer.
  • Wideo HTML5 na własnej stronie korzysta z WebVTT przez <track>.

Pionowe krótkie wideo to osobny przypadek. Na TikToku, w Instagram Reels i YouTube Shorts wtopienie napisów w obraz jest zwykle praktyczniejsze, bo styl wędruje razem z wideo, w jakiejkolwiek aplikacji i przy jakichkolwiek ustawieniach jest odtwarzane. Zalety i wady obu rozwiązań opisujemy w poradniku napisy otwarte a zamknięte.

Jak konwertować między formatami

SRT na VTT

  1. Dodaj WEBVTT jako pierwszy wiersz, a po nim pusty wiersz.
  2. W każdym wierszu czasu zamień przecinek przed milisekundami na kropkę: 00:00:04,100 staje się 00:00:04.100.
  3. Zapisz plik w kodowaniu UTF-8 z rozszerzeniem .vtt.

Numery napisów mogą zostać – w VTT stają się po prostu identyfikatorami. Przecinki zmieniaj tylko w wierszach czasu: zwykłe „znajdź i zamień” poprawi też każdy przecinek w treści napisów. Darmowy konwerter SRT na VTT wykona wszystkie trzy kroki za ciebie.

VTT na SRT

  1. Usuń nagłówek WEBVTT oraz wszystkie bloki NOTE, STYLE i REGION.
  2. Ponumeruj napisy od 1, zastępując wszystkie identyfikatory tekstowe.
  3. Każdy znacznik czasu zapisz w pełnej postaci HH:MM:SS,mmm: dodaj 00: tam, gdzie pominięto godziny, i zamień kropkę na przecinek.
  4. Usuń ustawienia napisu, takie jak line:10%, z końców wierszy czasu.
  5. Usuń znaczniki głosu, klas, języka, ruby i czasu. Jeśli znacznik głosu wskazywał mówiącego, o którym widz powinien wiedzieć, zamień go na widoczne oznaczenie w treści napisu.

W tę stronę tracisz informacje – pozycje, style i oznaczenia mówiących – więc zachowaj oryginalny plik VTT. Konwerter VTT na SRT zajmie się numeracją i przepisaniem znaczników czasu. Jeśli po konwersji napisy stale pojawiają się za wcześnie lub za późno, to osobny problem: przesuń wszystkie naraz narzędziem do przesuwania napisów.

Którego formatu użyć?

  • Wysyłasz plik do YouTube, Vimeo lub LinkedIn: SRT działa we wszystkich trzech serwisach. Na YouTube i Vimeo wybierz VTT, jeśli potrzebujesz pozycjonowania napisów.
  • Własna strona lub odtwarzacz kursu: VTT, podpięty przez <track kind="captions">.
  • Przekazujesz napisy montażyście lub tłumaczowi: zapytaj, jakie formaty czytają ich narzędzia. Jeśli nie odpowiedzą, bezpieczniejszym wyborem jest SRT.
  • Trzymasz kopię wzorcową: wyeksportuj oba formaty z tej samej poprawionej transkrypcji, żeby każda poprawka trafiła do obu plików.

Cokolwiek wybierzesz, słowa i czasy znaczą więcej niż sam format. Plik sformatowany bez zarzutu, ale ze źle usłyszanym nazwiskiem w napisie 12, wciąż jest błędny. Generator plików SRT i generator plików VTT w AutoCap zapisują oba formaty – w płatnych planach – z poprawionej transkrypcji i z osobnym czasem dla każdego słowa, więc oba pliki nigdy się nie rozjadą.

Pytania

Czy mogę zmienić nazwę pliku .srt na .vtt?

Samo to nie wystarczy. Plik VTT musi mieć w pierwszym wierszu WEBVTT i kropkę zamiast przecinka przed milisekundami. Dodaj nagłówek i popraw znaczniki czasu albo przepuść plik przez konwerter SRT na VTT.

Czy YouTube woli SRT czy VTT?

YouTube przyjmuje oba. SRT to najprostszy wybór. Wybierz VTT, jeśli potrzebujesz napisu w innym miejscu niż domyślne: YouTube obsługuje pozycjonowanie w plikach VTT, ale ignoruje znaczniki stylów w plikach SRT.

Który format napisów obsługuje style?

WebVTT. Ma znaczniki w tekście i CSS w blokach STYLE, choć każdy odtwarzacz sam decyduje, ile z tego uwzględni. SRT nie ma standardowych stylów, a YouTube ignoruje znaczniki w plikach SRT.

Dodaj napisy do kolejnego wideo automatycznie.

Prześlij plik MP4 lub MOV, otrzymaj napisy z osobnym czasem dla każdego słowa, popraw to, co pominęła transkrypcja, i wyeksportuj wideo z napisami. Darmowy plan nie wymaga karty płatniczej.