Subtitle Translator
Translate SRT and VTT subtitles into many languages in one run, or transcribe a video first. Timings preserved exactly. $0.05 per language, flat rate.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
subtitles,videoUrl,targetLanguages(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.05 per subtitle language = $50 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Subtitle language | Subtitles translated into one language. | $0.05 |
| Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.00005 |
Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-06-11, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
subtitles | Paste your SRT or VTT subtitle text. Leave empty to auto-transcribe a video instead. | string |
videoUrl | If no subtitles are provided, a public video/audio URL is transcribed first (needs OpenAI key). | string |
targetLanguages | One or more languages to translate into (ISO codes: es, fr, de, hi, ar, pt, ja, zh…). | array |
sourceLanguage | Language of the input, or 'auto'. | string |
outputFormat | Which subtitle files to produce. | string |
openaiApiKey | Your OpenAI key — for translation (and transcription if a video is given). Kept private. | string |
translationModel | Chat model. Default gpt-4o-mini. | string |
baseUrl | OpenAI-compatible base URL. Default https://api.openai.com/v1. | string |
What you get
A structured dataset — each result includes fields like:
languageNamecuessrtUrlvttUrlpreviewExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in AI Video & Content Studio
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
AI Thumbnail Generator
Generate scroll-stopping thumbnails with AI: a dramatic close-up face plus a bold hook headline in 9:16, 16:9 or 1:1. For YouTube, Shorts, Reels and ads.
Social Metadata Generator
Generate platform-ready titles, captions, hashtags, SEO tags and a pinned comment for YouTube, TikTok, Reels, Shorts and X.
Hook & Virality Scorer
Score any title, hook or script for viral potential: 0-100 with a grade, per-dimension breakdown and rewrite tips. No AI key.
AI Viral Clip Cutter — Long Video to Shorts
Turn a long podcast, interview, or webinar into ranked short clips with AI-scored moments and word-synced captions for TikTok, Reels, and Shorts.
AI Text-to-Speech Voiceover
Turn any script into a natural AI voiceover audio file (MP3/WAV/Opus/AAC). Pick a voice, speed, and format. Good for faceless videos, IVR, and narration.
Video & Audio Transcriber — Word-Level + SRT/VTT
Transcribe any video or audio URL into text with word-level timestamps and ready SRT, VTT, and TXT files. Auto language detection, batch mode.
Where this tool sits
- Categories
- AI Video & Content Studio
Subtitle Translator (SRT & VTT)
Translate a subtitle file into several languages in one run. Paste in an SRT or VTT, or hand it a video URL to transcribe first, choose your target languages, and get back clean translated SRT and VTT with the original timings untouched. Built for localization and accessibility work where you need the same captions in five languages without re-doing the timing by hand.
$0.05 per language, plus $0.00005 each time a run starts. Flat rate — no volume tiers, no plan gates. The charge is per dataset row, and the actor writes exactly one row per target language, including in the labelled sample mode you get without a key.
How it works
It parses your input into cues, sends the text (not the timestamps) to an AI model for translation, and re-emits each cue with its original start/end times. If you pass a videoUrl instead of subtitle text, it transcribes the audio first and then translates the result.
Input
| Field | Required | Notes |
|---|---|---|
targetLanguages | yes | List of ISO 639-1 codes, e.g. ["es", "fr", "de"]. One result — and one charge — per language. |
subtitles | one of these | Raw SRT or VTT text to translate. |
videoUrl | one of these | Public video or audio URL to transcribe first, then translate. Use this when you don't already have a subtitle file. |
sourceLanguage | no | ISO code of the input, or auto to detect. Default auto. |
outputFormat | no | srt, vtt, or both. Defaults to both. |
openaiApiKey | no | Your own OpenAI key for the translation and transcription steps. Marked secret in the schema. |
translationModel | no | Chat model used for translation. Default gpt-4o-mini. |
baseUrl | no | Any OpenAI-compatible base URL, if you route through a proxy or a compatible provider. |
Provide either subtitles or videoUrl, not both. targetLanguages is the only field you always have to set.
Output
One dataset row per target language, plus the files themselves in the run's key-value store.
| Field | What it is |
|---|---|
language | The ISO code this row was translated into. |
sourceLanguage | The language actually detected, or the one you forced. |
srtKey, srtUrl | Key-value-store key and direct URL for the translated .srt (when outputFormat includes SRT). |
vttKey, vttUrl | The same for the translated .vtt. |
txtKey, txtUrl | A plain-text transcript of the translation, written on every run regardless of outputFormat — handy for repurposing, SEO copy or feeding another tool. |
text | The full translated text inline in the row, so you can use it without a second fetch. |
preview | The first two translated cues, for a quick sanity check in the dataset preview. |
Original cue timings are preserved exactly — only the text is sent to the model, never the timestamps — so the output drops straight back into your player or editor.
Example
{
"subtitles": "1\n00:00:01,000 --> 00:00:04,000\nHello, welcome to the show.\n",
"targetLanguages": ["es", "fr", "de"],
"outputFormat": "both"
}
Pricing
| Event | When | Price |
|---|---|---|
| Actor start | Once per run, per GB of run memory | $0.00005 |
| Subtitle language | Each row written to the dataset — one per target language | $0.05 |
Cost scales with languages, not with file length: translating one subtitle file into five languages costs $0.25 whether the file is two minutes or two hours.
Because the charge is per dataset row, the same is true of the demo. A run with no openaiApiKey, or with neither subtitles nor videoUrl, returns labelled _sample rows — one per language in targetLanguages — and each of those is charged $0.05 like a real one. Asking for five languages without a key therefore costs $0.25, not nothing. Trim targetLanguages to a single code while you are wiring things up.
Your OpenAI usage is billed separately by OpenAI on your own key, and covers the translation model plus Whisper if you passed a videoUrl.
Notes
Translation quality tracks the underlying model, so long idioms and very domain-specific terms may need a human pass. Transcribing from a videoUrl adds time and depends on the audio being clear; if you already have accurate captions, pasting the subtitle text directly is faster and more reliable.