Come tradurre i sottotitoli .srt
Questo strumento traduce un file di sottotitoli .srt cambiando solo le battute e lasciando intatti i numeri di blocco e i tempi (timecode). Carichi il file, scegli la lingua di arrivo e riottieni un .srt sincronizzato come l’originale, pronto da caricare sul video o su YouTube senza rifare la temporizzazione.
Esegui online
Esegui questo sui nostri server con il tuo account. Gli strumenti gratuiti girano nel tuo browser; questo viene addebitato sul tuo saldo KIT al prezzo indicato sopra.
I tempi restano al loro posto
In un .srt ogni battuta ha un numero e una riga di tempo (00:01:12,400 → 00:01:15,900) che dice quando appare e sparisce. Se sballa, i sottotitoli vanno fuori sincrono. Qui numeri e timecode vengono lasciati identici: viene tradotto solo il testo tra un tempo e l’altro. Il file che riottieni combacia con il video al fotogramma dell’originale.
Battute leggibili, non solo tradotte
Un sottotitolo si legge in pochi secondi: una traduzione troppo lunga non si fa in tempo a leggere. Le battute vengono rese in modo naturale e conciso, tenendo il senso della frase parlata invece della corrispondenza parola per parola, così restano leggibili nello spazio e nel tempo che il timecode concede. Le righe spezzate su due linee vengono mantenute quando servono.
Per video, corsi e social
È lo strumento giusto quando hai già i sottotitoli in una lingua — magari generati dall’audio con lo strumento dedicato — e ti serve la versione in un’altra. Il costo si conta a parola di testo tradotto. Il limite pratico è di circa 20.000 token per richiesta: un film intero si divide in blocchi, mentre un video social o una lezione ci stanno comodamente.
Casi d'uso
Il video del corso in inglese
Chiara Romano ha i sottotitoli italiani di una lezione e vuole aprirla a studenti stranieri. Traduce il .srt in inglese: i tempi restano quelli, deve solo ricaricare il file sul video.
Il reel per il mercato tedesco
Rossi & Figli S.r.l. sottotitola un breve video di prodotto. Traduce le battute in tedesco tenendo la sincronia, così il reel è pronto per i social senza rimontare nulla.
L’intervista da pubblicare
Luca Esposito traduce in francese i sottotitoli di un’intervista, mantenendo le battute corte e leggibili nello spazio di ogni timecode.
Domande frequenti
I sottotitoli restano sincronizzati con il video?
Sì: numeri di blocco e tempi non vengono toccati, viene tradotto solo il testo. Il .srt che ottieni combacia con il video esattamente come l’originale.
Le battute non diventano troppo lunghe da leggere?
Le frasi vengono rese in modo conciso e naturale, per restare leggibili nel tempo che il timecode concede. Su passaggi molto densi conviene comunque una rilettura veloce.
Da dove prendo il file .srt di partenza?
Puoi partire da un .srt che hai già, oppure generarlo dall’audio o dal video con lo strumento dedicato del KIT e poi tradurlo qui.
Quanto costa tradurre i sottotitoli?
$0.003 a richiesta più $0.0135 ogni 1.000 parole di testo tradotto. Un video di dieci minuti costa in genere pochi centesimi di dollaro.
Funziona anche con file lunghi?
Il limite pratico è di circa 20.000 token per richiesta. Un film o un episodio lungo va diviso in blocchi e tradotto a pezzi, poi ricomposto in un unico .srt.
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/translate/srt \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"…"}'const res = await fetch("https://api.kit.forhosting.com/translate/srt", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/translate/srt",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/translate/srt", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/translate/srt", 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
{
"text": "…"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "translate.srt",
"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_tokens | 20000 |
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. |
422 | task_failed | L'attività non è andata a buon fine: non ti viene addebitato nulla. |