SRT-Untertitel online in WebVTT umwandeln
Machen Sie aus einer SRT-Untertiteldatei WebVTT, das Web-Player akzeptieren: Aus 00:00:01,250 wird 00:00:01.250, der WEBVTT-Kopf wird ergänzt und mehrzeilige Untertitel bleiben erhalten, samt Zahl der erzeugten Blöcke. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Überführen Sie SubRip-Untertiteltext in standardkonformes WebVTT, ohne Satzzeichen manuell auszutauschen oder Blöcke neu aufzubauen. Der Konverter ergänzt die erforderliche WEBVTT-Kopfzeile, ersetzt die Kommas der SRT-Zeitstempel durch Dezimalpunkte, erhält mehrzeilige Texte und meldet die Anzahl der erzeugten Einträge. Jede Zeitzeile wird vor der Ausgabe geprüft, sodass ein beschädigter Eintrag eine eindeutige Fehlermeldung statt einer unzuverlässigen Datei erzeugt.
Überführen Sie SRT-Untertitel in einen WebVTT-Ablauf
SRT und WebVTT sehen ähnlich aus, sind jedoch nicht austauschbar. Webplayer erwarten gewöhnlich eine Datei mit der Signatur WEBVTT, während SRT meist mit einem nummerierten Eintrag beginnt. Auch die Millisekunden werden unterschiedlich getrennt: SRT verwendet ein Komma, WebVTT einen Punkt.
Fügen Sie das vollständige SRT-Dokument in das Feld srt ein oder senden Sie es dort. Der Konverter vereinheitlicht gängige Zeilenenden, entfernt bei Bedarf eine führende Unicode-Byte-Reihenfolgemarkierung, liest alle Einträge der Reihe nach und gibt ein WebVTT-Dokument aus. Untertitelzeilen bleiben auch bei mehrzeiligen Einträgen in ihrer ursprünglichen Reihenfolge.
Numerische SRT-Indizes dienen nur als Struktur und werden nicht übernommen. Die Antwort enthält den umgewandelten Text unter vtt sowie die Eintragszahl für schnelle Prüfungen in automatisierten Abläufen.
Erkennen Sie fehlerhafte Zeiten vor der Veröffentlichung
Untertitelfehler sind häufig unauffällig: Ein Eintrag kann einen Punkt statt des in SRT erforderlichen Kommas enthalten, eine Millisekundenstelle auslassen, den Pfeil verlieren oder einen unmöglichen Minutenwert verwenden. Diese Funktion prüft jede Zeile nach dem Muster HH:MM:SS,mmm --> HH:MM:SS,mmm. Minuten und Sekunden müssen zwischen 00 und 59 liegen, Millisekunden genau drei Stellen haben und das Ende darf nicht vor dem Anfang liegen.
Verstößt ein Eintrag gegen diese Regeln, wird die gesamte Anfrage mit einem Fehler abgebrochen, der den betroffenen Eintrag nennt; eine teilweise beschädigte Datei wird nicht ausgegeben. Leere Texte und unerwartete nichtnumerische Indizes werden ebenfalls abgelehnt. Mehrdeutige Zeiten werden weder erraten noch repariert, da eine Vermutung Dialoge verschieben könnte.
Korrigieren Sie den gemeldeten Eintrag und senden Sie das Dokument erneut.
Nutzen Sie reproduzierbare Ausgaben für Websites und Automation
Der zurückgegebene WebVTT-Text kann direkt mit der Endung .vtt gespeichert und als text/vtt ausgeliefert werden. Verweisen Sie auf einer HTML-Videoseite über ein track-Element auf die Datei und wählen Sie Sprache sowie Bezeichnung passend aus. Die Umwandlung ist deterministisch: Gleiche Eingaben liefern gleiche Ausgaben mit Unix-Zeilenenden, einer Leerzeile nach der Kopfzeile, Leerzeilen zwischen Einträgen und einem abschließenden Zeilenumbruch.
Dadurch eignet sich das Ergebnis für Versionsverwaltung, reproduzierbare Builds, Migrationen und Tests. Die Funktion ändert ausschließlich die Struktur; sie übersetzt keine Dialoge, transkribiert kein Audio, verschiebt keine Zeiten, führt keine überlappenden Untertitel zusammen und untersucht keine Videodatei.
Anwendungsfälle
Untertitel für HTML5-Videos vorbereiten
Wandeln Sie eine SRT-Lieferung vor der Verknüpfung über ein HTML-track-Element in WebVTT um.
Untertitelexporte in CI prüfen
Stoppen Sie den Build bei einem fehlerhaften Zeitstempel, statt defekte Untertitel zu veröffentlichen.
Eine Untertitelbibliothek migrieren
Erzeugen Sie in einer reproduzierbaren Medienmigration stabile WebVTT-Dateien aus vorhandenen SRT-Texten.
Häufige Fragen
Was ändert die Umwandlung?
Sie ergänzt die WEBVTT-Kopfzeile, ersetzt Millisekundenkommas durch Punkte, entfernt numerische SRT-Indizes und erhält den Text.
Welches Zeitformat wird akzeptiert?
Jeder Eintrag muss HH:MM:SS,mmm --> HH:MM:SS,mmm mit gültigen Minuten und Sekunden sowie drei Millisekundenstellen verwenden.
Was geschieht bei einer fehlerhaften Zeitzeile?
Die Anfrage endet mit einem Eingabefehler, der den SRT-Eintrag nennt. Ein unvollständiges WebVTT-Dokument wird nicht ausgegeben.
Bleiben mehrzeilige Untertitel erhalten?
Ja. Alle Textzeilen nach der Zeitzeile eines Eintrags bleiben in derselben Reihenfolge erhalten.
Übersetzt die Funktion Untertitel oder verschiebt sie Zeiten?
Nein. Nur das Containerformat ändert sich; Text und gültige Zeitwerte bleiben unverändert.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/video/subtitle-srt-to-vtt \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"srt":"1\n00:00:01,250 --> 00:00:03,500\nWelcome to the presentation.\n\n2\n00:00:04,000 --> 00:00:06,125\nLet us begin."}'const res = await fetch("https://api.kit.forhosting.com/video/subtitle-srt-to-vtt", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"srt": "1\n00:00:01,250 --> 00:00:03,500\nWelcome to the presentation.\n\n2\n00:00:04,000 --> 00:00:06,125\nLet us begin."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/video/subtitle-srt-to-vtt",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"srt": "1\n00:00:01,250 --> 00:00:03,500\nWelcome to the presentation.\n\n2\n00:00:04,000 --> 00:00:06,125\nLet us begin."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/video/subtitle-srt-to-vtt", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"srt":"1\\n00:00:01,250 --> 00:00:03,500\\nWelcome to the presentation.\\n\\n2\\n00:00:04,000 --> 00:00:06,125\\nLet us begin."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"srt":"1\n00:00:01,250 --> 00:00:03,500\nWelcome to the presentation.\n\n2\n00:00:04,000 --> 00:00:06,125\nLet us begin."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/video/subtitle-srt-to-vtt", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"srt": "1\n00:00:01,250 --> 00:00:03,500\nWelcome to the presentation.\n\n2\n00:00:04,000 --> 00:00:06,125\nLet us begin."
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video.subtitle_srt_to_vtt",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_mb | 500 |
max_minutes | 60 |
max_megapixels | 3.9 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Nutzen Sie reproduzierbare Ausgaben für Websites und Automation
Im Browser können Sie kostenlos testen; automatisierte API-Aufrufe kosten $0.002 je Element.
Technische Fragen
Wie viel kostet die Umwandlung über die API?
Jede API-Anfrage kostet $0.002 pro Element. Die Browserversion auf dieser Seite ist kostenlos.