Unsynchrone Untertitel: den Versatz messen und eine SRT-Datei um exakt so viele Sekunden verschieben
Veröffentlicht am 5.8.2026 · 13 Min. Lesezeit · Entwickler-Tools
Daniel Okonkwo — Front-end-Entwickler und Tech-Redakteur bei OneKitly
Web-Performance · Dateiformate
Anhand von 4 Quellen geprüft
Miss den Versatz, bevor du irgendetwas verschiebst. Suche nahe am Anfang eine unverwechselbare Dialogzeile, notiere die genaue Zeit, zu der sie im Player gesprochen wird, ziehe den Startstempel des Untertitels ab — das ist der Versatz in Sekunden — und wiederhole die Messung dann gegen Ende des Films. Stimmen beide Werte überein, trägt die Spur einen konstanten Versatz und eine einzige Verschiebung repariert die ganze Datei: SRT einfügen, Versatz in Sekunden eintragen (positiv verzögert, negativ zieht vor) und die korrigierte Datei mitnehmen. Ist der zweite Wert größer als der erste, ist es gar kein Versatz, sondern Drift, und keine Verschiebung behebt sie. Drift bedeutet fast immer einen Bildraten-Konflikt. Eine Spur, die auf einem 25-fps-Master getimt wurde und auf einem 23,976-fps-Transfer läuft — 23,976 ist exakt 24000/1001 —, braucht ihre Zeitstempel mal 1,042708, nicht verschoben: Der Fehler wächst um 2,5625 Sekunden je Minute Laufzeit, also eine Sekunde alle 23,4 Sekunden und 3 Minuten 50,6 Sekunden über eine 90-minütige Untertitel-Zeitleiste. Das sanftere Paar, 24 gegen 23,976 oder 30 gegen 29,97, beträgt exakt 1,001 — nur 5,4 Sekunden über dieselben 90 Minuten, weshalb es in der ersten halben Stunde als konstanter Versatz fehlgedeutet wird. Ein Verhalten, das du vor einem negativen Wert kennen solltest: Ein Untertitel, den die Verschiebung ganz vor null schiebt, wird entfernt und nicht plattgedrückt, und eine bernsteinfarbene Zeile über der Ausgabe zählt, wie viele es traf. Ein Untertitel, der über null hinausragt, behält sein echtes Ende und beginnt bei 00:00:00,000. Damit wird eine große negative Verschiebung auch zu einem brauchbaren Weg, ein Intro abzuschneiden — die Untertitel darin verschwinden, alles Folgende behält seine Abstände, und du erfährst, was verloren ging.
Miss den Versatz an zwei Stellen, statt ihn einmal zu schätzen. Ist er konstant, repariert eine einzige Verschiebung die Datei. Wächst er, ist es ein Bildraten-Konflikt — 25 fps gegen 23,976 driftet 2,5625 Sekunden pro Minute — und keine Verschiebung behebt das.
Miss den Versatz, schätze ihn nicht
Nimm eine Dialogzeile, die du nicht verwechseln kannst — einen Namen, eine Zahl, einen Ruf, irgendetwas mit einem harten Anfangskonsonanten. Spiele den Film, halte auf dem Bild an, in dem der Ton einsetzt, und lies die Uhr des Players. Suche dann dieselbe Zeile in der Untertiteldatei und lies ihren Startstempel. Der Versatz ist die Videozeit minus die Untertitelzeit. Sagt das Video 00:04:12,500 und der Untertitel 00:04:09,000, laufen die Untertitel 3,5 Sekunden zu früh, und der nötige Versatz beträgt +3,5 Sekunden.
Wiederhole das ein zweites Mal, so nah am Filmende, wie du eine saubere Zeile findest. Diese zweite Messung ist die gesamte Diagnose, und sie zu überspringen ist der Grund, warum dieselbe Datei viermal verschoben und nie repariert wird. Zwei Werte, die auf ein paar Zehntel übereinstimmen, bedeuten konstanten Versatz: eine Verschiebung, fertig. Zwei Werte, die sich um Minuten unterscheiden, bedeuten, dass die Datei gar nicht versetzt ist, sondern zu schnell oder zu langsam läuft — jede Verschiebung repariert dann ein Ende des Films und verschlechtert das andere.
Eine praktische Anmerkung zum Ablesen der Uhr: Die meisten Player zeigen die Position auf eine Zehntelsekunde genau, und ein Zehntel liegt deutlich unter dem, was ein Publikum bemerkt — Bildgenauigkeit ist hier also unnötig. Nötig ist Ehrlichkeit darüber, welchen Moment du gemessen hast. Miss den Moment, in dem der Ton einsetzt, nicht den, in dem du ihn bemerkst, und miss beide Male denselben Typ Moment — sonst unterscheiden sich deine zwei Ablesungen um deine eigene Reaktionszeit und du erfindest eine Drift, die es nicht gibt.
Wenn der Versatz wächst: die Bildraten-Arithmetik
Derselbe Film existiert in zwei Familien von Laufgeschwindigkeiten, und die Untertiteldatei erinnert sich, gegen welche sie geschrieben wurde. Die Kinofamilie läuft mit 24 Bildern je Sekunde oder mit 24000/1001 — 23,976 — auf jedem Transfer, der in das Timing des amerikanischen Farbfernsehens passen musste. Die Rundfunkfamilie des größten Teils Europas läuft mit 25. Das sind keine dekorativen Etiketten: ffmpegs eigene Raten-Abkürzungen schreiben sie als exakte Brüche, film = 24/1, pal = 25/1, ntsc-film = 24000/1001, ntsc = 30000/1001. Eine Untertiteldatei für die eine, gespielt auf der anderen, steht nicht an der falschen Stelle, sie läuft mit der falschen Geschwindigkeit.
Die Korrektur ist eine Multiplikation, keine Addition. Zeitstempel, die für eine 25-fps-Fassung geschrieben und auf einer 23,976-fps-Fassung abgespielt werden, müssen mit 25 ÷ (24000/1001) = 25025/24000 = 1,042708 multipliziert werden. Lies das als Fehlerrate, und es wird auf einen Blick erkennbar: 2,5625 Sekunden Drift je Minute Laufzeit, eine volle Sekunde alle 23,4 Sekunden. Über eine 90-minütige Untertitel-Zeitleiste summiert sich das auf 230,6 Sekunden — 3 Minuten 50,6 Sekunden. Umgekehrt trägt eine Zeile, die zur 90. Minute des 23,976-Transfers gehört, einen 25-fps-Stempel von 86 Minuten 18,8 Sekunden und erscheint 3 Minuten 41,2 Sekunden zu früh.
Das gefährliche Paar ist das kleine. Der Wechsel zwischen 24 und 23,976 oder zwischen 30 und 29,97 ist ein Verhältnis von exakt 1,001, über dieselben 90 Minuten also 5,4 Sekunden. In den ersten zwanzig Minuten ist das unsichtbar; in der letzten Rolle ist es ein ganzer Satz daneben. Man verschiebt eine solche Datei um zwei Sekunden, sieht den Anfang zufrieden an und stößt eine Stunde später auf dasselbe Problem — weil es nie ein Versatz war. Zwei Messungen im Abstand einer Stunde sagen dir in etwa neunzig Sekunden Arbeit, welchen der beiden Fälle du hast.
Dieses Werkzeug verschiebt und skaliert nicht, und das sollte man offen sagen, statt es dich entdecken zu lassen. Weichen deine zwei Messungen voneinander ab, muss jeder Zeitstempel multipliziert werden — dafür braucht es ein Werkzeug zur Bildratenkonvertierung oder ein kurzes Skript, und der Faktor ist das Verhältnis deiner zwei gemessenen Positionen, kein zu ratender Wert. Teile die echte Videozeit der späten Zeile durch die der frühen, tue dasselbe mit den zwei Untertitelstempeln; das Verhältnis dieser beiden Verhältnisse ist das, was anzuwenden ist.
Was eine negative Verschiebung hier wirklich tut
Eine negative Verschiebung ist der Normalfall — zu spät kommende Untertitel müssen vorgezogen werden — und sie ist die einzige Stelle, an der ein Untertitelwerkzeug eine Entscheidung treffen muss, die das Format ihm nicht abnimmt. Ein Untertitel bei 00:00:01,000, um −5 Sekunden verschoben, begänne bei −4 Sekunden. SubRip kann das nicht schreiben. Drei Antworten sind möglich: trotzdem einen negativen Stempel schreiben und den Player daran ersticken lassen, den Untertitel verwerfen, oder ihn bei null begrenzen. Dieses Werkzeug wählt Untertitel für Untertitel zwischen den beiden letzten, je nachdem, was nach dem Nullpunkt übrig bleibt.
Geprüft wird der Endstempel des Untertitels, was zwei verschiedene Ergebnisse erzeugt. Ein Untertitel, der über null hinausragt, wird beschnitten: Bei −2,5 Sekunden kommt 00:00:01,000 --> 00:00:04,000 als 00:00:00,000 --> 00:00:01,500 zurück. Er behält sein echtes Ende, erscheint also schon im allerersten Bild und dauert anderthalb Sekunden zu kurz — sichtbar, aber nicht tödlich. Ein Untertitel, der ganz vor null geschoben wird, ist etwas anderes. Bei −5 Sekunden endete derselbe Untertitel bei −1 Sekunde: Er hat nichts mehr zu zeigen und wird aus der Datei entfernt. Die verbleibenden Untertitel werden ab 1 neu nummeriert, sodass eine kürzere Datei zurückkommt statt einer aufgefüllten.
Schiebe die ganze Datei weit genug zurück, und die Untertitel in diesem Abschnitt verschwinden schlicht. Eine Verschiebung um −20 Sekunden auf eine Datei, deren erste drei Untertitel in den ersten zwölf Sekunden liegen, liefert gar nichts mehr, und eine bernsteinfarbene Zeile über der Ausgabe meldet, dass nun alle Untertitel vor null liegen. Unterhalb dieses Extremfalls trägt dieselbe Zeile zwei Zahlen: wie viele Untertitel entfernt wurden und wie viele vor null begannen und jetzt am Nullpunkt starten. Was das Werkzeug nicht mehr tut, ist Untertitel zu verlieren, ohne es zu sagen — lies die Zahlen, bevor du etwas überschreibst, und vergleiche sie mit dem, was du verlieren wolltest.
Damit wird eine große negative Verschiebung außerdem zu einem echten Schneidewerkzeug. Schneide ein dreißigsekündiges Intro vom Anfang eines Videos ab, verschiebe die Untertitel um −30 Sekunden, und die Untertitel des Intros werden entfernt, der über den Schnitt hinausragende beginnt mit seinem echten Ende im ersten Bild, und alles Folgende behält seine Abstände. Die Zahl im Hinweis ist die Kontrolle: Meldet sie vier entfernte Untertitel, während du zwei verlieren wolltest, war dein Versatz länger als das Intro.
Was zurückkommt und was sich dabei leise ändert
Die Ausgabe ist immer SubRip, was auch immer hineinging. Untertitel werden in Dateireihenfolge ab 1 neu nummeriert, Zeitstempel als HH:MM:SS,mmm mit Komma vor den Millisekunden geschrieben, und alles zwischen Zeitstempelzeile und Leerzeile wird unverändert durchgereicht — einschließlich deiner Kursiv-Tags oder Dialogstriche. Der letzte Punkt zählt: Das ist ein Umtakter, kein Reiniger, und er verändert deinen Text in keiner Weise.
Es liest auch eine WebVTT-Datei, und das sollte man wissen, denn das Ergebnis ist nicht das, was ein Unbedarfter erwartet. Füge ein .vtt ein: Das Werkzeug findet die Untertitel, wirft die WEBVTT-Kopfzeile weg, wirft Cue-Bezeichner und alle nach dem Pfeil stehenden Cue-Einstellungen weg, wandelt den Dezimalpunkt in ein Komma und gibt dir SubRip. Die Zeiten verschieben sich korrekt. Aber die zurückkommende Datei ist kein gültiges WebVTT mehr — der Header ist eine harte Anforderung der Spezifikation, und die Positionierungseinstellungen, auf die du dich vielleicht verlassen hast, sind fort. Wolltest du ein verschobenes .vtt, ist das nicht der Weg.
Zwei kleine Randbefunde, beide gefunden, indem man dem Werkzeug seine eigene Ausgabe vorlegt. Der Zeitstempelleser akzeptiert bis zu drei Ziffern im Stundenfeld, ein Stempel wie 111:06:41,000 wird also anstandslos zurückgelesen; die Decke liegt bei 999:59:59,999, darüber schriebe das Werkzeug Stunden, die es selbst nicht mehr lesen kann — eine Mauer, die kein Film je erreicht. Und der Versatz wird bei der Ausgabe auf ganze Millisekunden gerundet, sodass aus 0,0005 Sekunden eine Bewegung um eine Millisekunde wird statt gar keiner. Beides stört keinen Film, beides sollte man aber kennen, wenn man Operationen verkettet.
| Konflikt | Anzuwendender Faktor | Drift pro Minute | Drift über 90 Minuten | Wie es sich beim Sehen zeigt |
|---|---|---|---|---|
| Konstanter Versatz (beliebige Ursache) | 1,000000 — stattdessen verschieben | 0 s | 0 s | Bei Minute 1 und Minute 89 gleich falsch — eine Verschiebung genügt |
| 24-fps-Untertitel auf 23,976-fps-Video (oder 30 auf 29,97) | 1,001000 | 0,060 s | 5,4 s | Zwanzig Minuten unsichtbar, am Ende ein Satz daneben — der am häufigsten fehlgedeutete Fall |
| 25-fps-Untertitel auf 24-fps-Video | 1,041667 | 2,500 s | 3 min 45,0 s | Die Untertitel eilen voraus, und der Abstand wächst schon in der ersten Rolle sichtbar |
| 25-fps-Untertitel auf 23,976-fps-Video | 1,042708 | 2,563 s | 3 min 50,6 s | Der klassische PAL-Kino-Konflikt: jede 23,4 Sekunden geht eine Sekunde verloren |
| 23,976-fps-Untertitel auf 25-fps-Video | 0,959041 | −2,458 s | −3 min 41,2 s | Derselbe Konflikt umgekehrt: Die Untertitel fallen immer weiter zurück |
Häufige Fragen
- Wie messe ich den Versatz genau, ohne den ganzen Film Bild für Bild durchzugehen?
- Zwei Messungen genügen, und eine Genauigkeit von einer Zehntelsekunde reicht. Suche nahe am Filmanfang eine Zeile mit hartem Anfangskonsonanten, halte auf dem Bild an, in dem der Ton einsetzt, und lies die Position des Players; ziehe davon den Startstempel des Untertitels ab. Wiederhole das mit einer Zeile nahe am Ende. Stimmen beide Versätze überein, wende ihren Mittelwert an, fertig. Wichtiger als Präzision ist hier die Gleichförmigkeit der Methode: Miss immer denselben Moment — den Beginn des Tons, nicht den Augenblick des Erkennens —, denn ein Reaktionszeitfehler von einer halben Sekunde in einer der beiden Messungen genügt, um eine Drift zu erfinden, die es nicht gibt. Zeigt dein Player nur ganze Sekunden, nimm einen, der Zehntel anzeigt: Der Unterschied zwischen 3 und 3,5 Sekunden Versatz ist auf dem Bildschirm sichtbar.
- Meine Untertitel sitzen am Anfang perfekt und sind am Ende etwa vier Minuten zu früh. Was ist das?
- Das ist ein Bildraten-Konflikt, und seine Größe verrät welcher. Rund vier Minuten Drift über einen Spielfilm ist die Signatur von 25-fps-Untertiteln auf einem 23,976-fps-Video: Der Faktor ist 1,042708, die Drift 2,5625 Sekunden pro Minute, und über eine 90-minütige Untertitel-Zeitleiste summiert sie sich auf 230,6 Sekunden — 3 Minuten 50,6 Sekunden, oder 3 Minuten 41,2 Sekunden, wenn du an der Uhr des Videos misst. Eine Verschiebung kann das nicht beheben, denn sie addiert zu jedem Zeitstempel dieselbe Zahl, während dein Fehler proportional zum Zeitstempel ist. Nötig ist eine Multiplikation jedes Stempels mit 1,042708 — das ist Bildratenkonvertierung, nicht Zeitverschiebung. Dieses Werkzeug leistet das nicht, und eine Verschiebung verlagert nur die Stelle, an der die Untertitel zufällig stimmen, von einem Filmende ans andere.
- Was passiert mit Untertiteln, die eine negative Verschiebung vor 00:00:00,000 schiebt?
- Sie werden entfernt, und das Werkzeug sagt, wie viele. Entschieden wird am Endstempel, daher zwei Ergebnisse. Ein Untertitel, der über null hinausragt, behält sein echtes Ende: 00:00:01,000 --> 00:00:04,000 um −2,5 Sekunden verschoben ergibt 00:00:00,000 --> 00:00:01,500, das ab dem ersten Bild erscheint und anderthalb Sekunden zu kurz ist. Ein Untertitel, dessen Ende ebenfalls vor null gerutscht ist, hat nichts mehr zu zeigen und fällt weg; die übrigen werden ab 1 neu nummeriert, sodass die Ausgabe eine kürzere gültige Datei ist und keine mit leeren Einträgen aufgefüllte. Eine bernsteinfarbene Zeile über der Ausgabe trägt die Zahlen — wie viele Untertitel entfernt wurden, wie viele jetzt am Nullpunkt beginnen — und wenn die Verschiebung alles auslöscht, sagt sie das, statt dir eine Datei zu geben. Negative Zeiten werden nie geschrieben. In der Praxis wird eine große negative Verschiebung damit zu einem brauchbaren Weg, ein Intro abzuschneiden: Vergleiche die Zahl der entfernten Untertitel mit der Zahl, die du verlieren wolltest, bevor du etwas überschreibst.
- Kann ich eine WebVTT-Datei einfügen, oder nimmt es nur SubRip?
- Es liest WebVTT, gibt dir aber SubRip zurück, und diese Umwandlung ist nicht umsonst. WebVTT ist eine W3C-Spezifikation: Die Datei muss mit einer WEBVTT-Zeile beginnen, Zeitstempel verwenden vor der dreistelligen Nachkommastelle einen Punkt statt eines Kommas, das Stundenfeld ist optional, und eine Cue-Timing-Zeile darf nach dem Pfeil eine Einstellungsliste tragen — Ausrichtung, Position, Region — sowie einen optionalen Bezeichner in der Zeile darüber. Dieses Werkzeug findet die Cue-Timings, verschiebt sie und schreibt SubRip: Der Header ist weg, die Bezeichner sind weg, die Einstellungen sind weg, und der Punkt wird zum Komma. War deine Quelle gestaltetes oder positioniertes WebVTT, wird all das stillschweigend verworfen. Willst du eigentlich reinen Text aus einer Untertiteldatei statt einer umgetakteten, ist der eigene VTT-zu-TXT-Konverter der ehrliche Weg.
- Gibt es eine offizielle SubRip-Spezifikation, an der ich meine Datei prüfen kann?
- Nein, und das sollte man wissen, bevor man mit einem Werkzeug darüber streitet, was gültig ist. Das Format ist das, was das ursprüngliche SubRip-Programm ausgab, plus das, was Player später zu tolerieren beschlossen. Die Library of Congress führt es als nur teilweise dokumentiert und schlecht normiert und nennt überhaupt kein Spezifikationsdokument; ihre Formatbeschreibung gibt die Timecode-Form als Stunden:Minuten:Sekunden,Millisekunden an, mit Komma, und den Pfeil als zwei Bindestriche und eine spitze Klammer. Auch einen registrierten Medientyp gibt es nicht, während WebVTT mit text/vtt bei der IANA registriert ist. Praktisch heißt das: Die Kodierung ist Ratesache — das Originalprogramm gab standardmäßig eine Windows-Codepage aus, jeder Parser muss also eine Zeichensatzerkennung versuchen — und wenn zwei Werkzeuge über deine Datei uneins sind, liegt keines von beiden gemessen an einer Norm falsch. Teste im Player, den du wirklich verwenden wirst.
Artikel, die dich interessieren könnten
Alle Ratgeber →Ähnliche Tools
SubRip hat keine Spezifikation. Die Library of Congress führt es als nur teilweise dokumentiert und schlecht normiert, also entscheidet der Player, der Encoder oder die Plattform, die sie liest, was als gültige .srt-Datei gilt — und zwei davon werden früher oder später uneins sein. Alles hier Beschriebene wurde an der tatsächlichen Ausgabe des Werkzeugs geprüft, nicht an einer Norm, denn für dieses Format gibt es keine. WebVTT ist anders — es hat eine veröffentlichte W3C-Spezifikation — bleibt aber ein Candidate Recommendation Draft und keine fertige Empfehlung. Behalte die Originaldatei, teste die konvertierte in genau dem Player oder Upload-Werkzeug, das du wirklich verwenden willst, bevor du etwas wegwirfst, und behandle jede Aussage darüber, was „alle Player“ tun — auch die auf dieser Seite — als etwas, das du an deinem prüfst.
Quellen
- Library of Congress — Sustainability of Digital Formats, format description FDD000569, SubRip Subtitle format (SRT): records the format as "Partial documented" and "not well standardized", lists no specification document, gives the timecode as hours:minutes:seconds,milliseconds (00:00:00,000) and the separator as two hyphens plus a right angle bracket, and notes that SRT has no character-encoding standard so a parser must attempt charset detection
- W3C — WebVTT: The Web Video Text Tracks Format, Candidate Recommendation Draft of 20 May 2026 — the file must begin with the string WEBVTT after an optional byte order mark, the timestamp fraction is separated by a U+002E FULL STOP and carries three digits, the hours component is optional and takes two or more digits, and a cue timings line may be followed by a cue settings list
- FFmpeg — ffmpeg-utils documentation, "Video rate" section: the exact rational values behind the named rates — film = 24/1, pal = 25/1, ntsc-film = 24000/1001, ntsc = 30000/1001 — which are the numbers the drift arithmetic in this article is computed from
- IANA — Media type registration for text/vtt, registered 14 October 2019 with the W3C WebVTT specification as its reference — the contrast with SubRip, which has no registered media type
Hast du einen Fehler in diesem Artikel entdeckt?