Converta sottotitoli SRT in WebVTT online
Trasformi un file di sottotitoli SRT in WebVTT accettato dai lettori web: 00:00:01,250 diventa 00:00:01.250, viene aggiunta l’intestazione WEBVTT e i sottotitoli su più righe restano intatti, con il conteggio dei blocchi. Gratis nel Suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Trasformi il testo dei sottotitoli SubRip in WebVTT conforme agli standard senza sostituire manualmente la punteggiatura o ricostruire i blocchi. Il convertitore aggiunge l’intestazione WEBVTT richiesta, sostituisce le virgole dei tempi SRT con punti decimali, conserva i sottotitoli su più righe e indica quante battute sono state prodotte. Ogni riga temporale viene verificata prima del risultato, quindi un elemento danneggiato genera un errore chiaro e non un file inaffidabile.
Porti i sottotitoli SRT in un flusso WebVTT
SRT e WebVTT si assomigliano, ma non sono file intercambiabili. I lettori web normalmente richiedono un file che inizi con la firma WEBVTT, mentre SRT di solito comincia con una battuta numerata. Anche i separatori dei millisecondi sono diversi: SRT usa una virgola e WebVTT un punto.
Incolli o invii l’intero documento SRT nel campo srt. Il convertitore normalizza le comuni terminazioni di riga, elimina un’eventuale marca Unicode iniziale, legge ogni battuta in ordine e produce un documento WebVTT. Le righe mantengono l’ordine originale anche nei sottotitoli multilinea.
Gli indici numerici vengono usati come struttura e non copiati. La risposta contiene il testo convertito in vtt e il numero di battute, utile per rapidi controlli nei processi automatizzati.
Individui tempi errati prima della pubblicazione
Gli errori nei sottotitoli possono essere poco evidenti: una battuta può usare un punto dove SRT richiede una virgola, omettere una cifra dei millisecondi, perdere la freccia o contenere minuti impossibili. Questa capacità verifica ogni riga nel formato HH:MM:SS,mmm --> HH:MM:SS,mmm. Minuti e secondi devono rimanere tra 00 e 59, i millisecondi devono avere esattamente tre cifre e la fine non può precedere l’inizio.
Se un elemento viola tali regole, l’intera richiesta restituisce un errore che identifica la battuta interessata, anziché produrre in silenzio un file parziale. Vengono respinti anche testi vuoti e indici non numerici inattesi. Il sistema non interpreta tempi ambigui né ripara valori corrotti, perché una supposizione potrebbe spostare il dialogo.
Corregga l’elemento segnalato e invii nuovamente il documento.
Utilizzi risultati deterministici nei siti e nelle automazioni
Il testo WebVTT restituito è pronto per essere salvato con estensione .vtt e distribuito con il tipo text/vtt. In una pagina video HTML, faccia riferimento al file da un elemento track e scelga lingua ed etichetta appropriate. La conversione è deterministica: un input identico produce lo stesso output, con terminazioni Unix, una riga vuota dopo l’intestazione, separazioni tra le battute e un ritorno a capo finale.
Il risultato è adatto a controllo versione, build ripetibili, migrazioni e test. La capacità converte soltanto la struttura: non traduce dialoghi, non trascrive audio, non modifica i tempi, non unisce sottotitoli sovrapposti e non esamina video.
Casi d'uso
Prepari sottotitoli per video HTML5
Converta una consegna SRT del montatore in WebVTT prima di collegarla da un elemento track HTML.
Convalidi le esportazioni nella CI
Interrompa la build se una battuta contiene un tempo errato, invece di pubblicare sottotitoli difettosi.
Migri una raccolta di sottotitoli
Generi risorse WebVTT stabili dai testi SRT esistenti durante una migrazione multimediale ripetibile.
Domande frequenti
Che cosa cambia con la conversione?
Aggiunge l’intestazione WEBVTT, sostituisce le virgole dei millisecondi con punti, rimuove gli indici SRT numerici e conserva il testo.
Quale formato temporale viene accettato?
Ogni battuta deve usare HH:MM:SS,mmm --> HH:MM:SS,mmm, con minuti e secondi validi e tre cifre per i millisecondi.
Che cosa accade se una riga temporale è errata?
La richiesta fallisce con un errore che identifica l’elemento SRT. Non viene restituito alcun documento WebVTT parziale.
I sottotitoli su più righe vengono conservati?
Sì. Tutte le righe dopo il tempo della battuta restano nello stesso ordine.
Lo strumento traduce o modifica i tempi?
No. Cambia solo il formato contenitore; il testo e i tempi validi restano invariati.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"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."
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video.subtitle_srt_to_vtt",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_mb | 500 |
max_minutes | 60 |
max_megapixels | 3.9 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Utilizzi risultati deterministici nei siti e nelle automazioni
Può provarla gratuitamente nel browser oppure chiamare l’API al costo di $0.002 per elemento quando il Suo sistema editoriale deve automatizzare la conversione.
Domande tecniche
Quanto costa la conversione tramite API?
Ogni richiesta API costa $0.002 per elemento. La versione nel browser è disponibile gratuitamente.