Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Subtitle Translator icon

Subtitle Translator

Translate SRT and VTT subtitles into many languages in one run, or transcribe a video first. Timings stay exact. $0.05 per language, flat rate.

120 runs on Apify $0.05 per subtitle language ($50 / 1,000)
Run this in the cloudRun on Apify →

AI Video & Content Studio

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust subtitles, videoUrl, targetLanguages (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export 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 forWhenPrice
Subtitle languageSubtitles translated into one language.$0.05

Pay-per-event pricing: you are billed per result, not per subscription. 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

FieldWhat it doesType
subtitlesPaste your SRT or VTT subtitle text. Leave empty to auto-transcribe a video instead.string
videoUrlIf no subtitles are provided, a public video/audio URL is transcribed first (needs OpenAI key).string
targetLanguagesOne or more languages to translate into (ISO codes: es, fr, de, hi, ar, pt, ja, zh…).array
sourceLanguageLanguage of the input, or 'auto'.string
outputFormatWhich subtitle files to produce.string
openaiApiKeyYour OpenAI key, for translation (and transcription if a video is given). Kept private.string
translationModelChat model. Default gpt-4o-mini.string
baseUrlOpenAI-compatible base URL. Default https://api.openai.com/v1.string

What you get

A structured dataset — each result includes fields like:

languageNamecuessrtUrlvttUrlpreview

Export 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 iconAI Video & Content Studio

AI Thumbnail Generator

Generate video thumbnails with AI. A close-up face plus a bold hook headline. Sizes 9:16, 16:9 and 1:1. For YouTube, Shorts, Reels and ads.

Ready to run — no setup

Social Metadata Generator iconAI Video & Content Studio

Social Metadata Generator

Write titles, captions, hashtags, SEO tags and a pinned comment. For YouTube, TikTok, Reels, Shorts and X. $15.00 per 1,000 packs ($0.015 each).

Ready to run — no setup

Hook & Virality Scorer iconAI Video & Content Studio

Hook & Virality Scorer

Score any title, hook or script for viral potential. You get 0-100 with a grade, a breakdown and rewrite tips. No AI key. $3.00 per 1,000 hooks.

Ready to run — no setup

AI Viral Clip Cutter — Long Video to Shorts iconYouTube & Creator Tools

AI Viral Clip Cutter — Long Video to Shorts

Turn a long podcast or interview into ranked vertical clips. AI scores each moment and captions follow every word. $0.20 per clip row, samples included.

3 use cases

AI Text-to-Speech Voiceover iconYouTube & Creator Tools

AI Text-to-Speech Voiceover

Turn any script into an AI voiceover file: MP3, WAV, Opus or AAC. Pick the voice, speed and format. $40.00 per 1,000 voiceovers ($0.04 each).

3 use cases

Video & Audio Transcriber — Word-Level + SRT/VTT iconYouTube & Creator Tools

Video & Audio Transcriber — Word-Level + SRT/VTT

Transcribe any video or audio URL with word-level timestamps. Download SRT, VTT and TXT. The language is found for you. $0.02 per transcribed minute.

3 use cases

See all AI Video & Content Studio →

Subtitle Translator: turn one SRT or VTT file into as many languages as you need

Paste an SRT or VTT file, list the languages you want, and get back a finished SRT, VTT and plain text file for each one. Every cue keeps its original start and end time to the millisecond, so the files drop straight back onto the same video.

You bring your own OpenAI key. The translation is billed to your key by OpenAI, separately from what you pay here.

InputSRT or VTT text you paste, or a public video or audio URL to transcribe first
OutputOne row per target language, with SRT, VTT and .txt files in the run's storage
CeilingNo cap on languages. The video route runs out at roughly 13 minutes of audio
Account neededYour own OpenAI API key
Price$0.05 per language, flat on every plan

🔤 What Subtitle Translator does

It reads your subtitle file, splits it into cues, and sends the lines for one language to the model in a single call. The translated lines go back onto the original timings and come out as three files: a .srt, a .vtt and a plain .txt with the whole script as running text.

Ask for five languages and you get five rows, five sets of files, and five separate model calls. Nothing is shared between them, so one language coming out badly does not affect the others.

If you have no subtitle file, give it a public video or audio URL instead. It pulls the file, lifts the audio, and transcribes it with timestamps before translating. That route needs the same key.

📥 What you give it

{
  "subtitles": "1\n00:00:00,000 --> 00:00:02,400\nWelcome back to the channel.\n",
  "targetLanguages": ["es", "fr", "de"],
  "sourceLanguage": "auto",
  "outputFormat": "both",
  "openaiApiKey": "sk-..."
}
FieldDefaultWhat it is
subtitlesbox starts with a two-cue sampleYour SRT or VTT text, pasted in. SRT index lines and the WEBVTT header are both handled.
videoUrlnoneUsed only when subtitles is empty. A public video or audio URL to transcribe first.
targetLanguages["es"] when the field is absent, box starts at es, fr, deISO codes. One row and one set of files per code.
sourceLanguageautoThe language going in. auto lets the transcription detect it.
outputFormatbothboth, srt or vtt. The .txt is always written either way.
openaiApiKeynoneYour own key. Marked secret, so it is not stored with the run input.
translationModelgpt-4o-miniAny chat model your key can reach.
baseUrlhttps://api.openai.com/v1Point it at any OpenAI-compatible endpoint.

If both subtitles and videoUrl are filled in, the pasted subtitles win and the video is never fetched. Clear the box if you meant to transcribe.

📤 What you get back

One row per language. Shown with the long storage URLs cut short:

{
  "ok": true,
  "sourceLanguage": "auto",
  "language": "es",
  "languageName": "Spanish",
  "cues": 2,
  "srtKey": "subtitles-es-1758412903118.srt",
  "srtUrl": "https://api.apify.com/v2/key-value-stores/.../records/subtitles-es-...",
  "vttKey": "subtitles-es-1758412903118.vtt",
  "vttUrl": "https://api.apify.com/v2/key-value-stores/.../records/subtitles-es-...",
  "txtKey": "transcript-es-1758412903118.txt",
  "txtUrl": "https://api.apify.com/v2/key-value-stores/.../records/transcript-es-...",
  "text": "Bienvenido de nuevo al canal.",
  "preview": ["Bienvenido de nuevo al canal."]
}
FieldWhat it is
srtUrl, vttUrl, txtUrlDirect download links to the finished files in this run's key-value store. vttUrl is absent when outputFormat is srt, and the other way round.
textThe whole translation as one paragraph, with the timings stripped. Handy for a description or a blog post.
cuesHow many subtitle cues the file ended up with. It always matches the source count.
languageNameThe English name of the language. For a code the actor does not have a name for, this repeats the code itself.
previewThe first two translated lines, so you can eyeball the result without opening a file.

🧾 Reading the output

Every row in the dataset is a finished language. Sample and notice rows are kept out of it deliberately: they go to a record called SAMPLE_AND_NOTICES in the run's key-value store, so they never sit in your results and no result is billed for them.

You get that sample instead of a real translation in two cases:

What happenedWhat you do
Neither subtitles nor videoUrl was filled inPaste a subtitle file, or give a video URL.
No openaiApiKey was suppliedAdd your key and run again.

There are no error rows. If something goes wrong partway through, the run fails and the log says why. Languages already finished before that point stay in the dataset.

▶️ How to run it

1. Open Subtitle Translator and click Try for free. 2. Paste your file into Subtitles (SRT or VTT), replacing the sample text that is already there. 3. Type the codes you want into Target languages, one per line. 4. Put your key into OpenAI API key (BYO), then click Start. 5. Open the run's Key-value store tab to download the files, or read the URLs off the dataset.

💰 How much does it cost?

$0.05 per language. Flat on every Apify plan, no volume tiers. Three languages in one run is three rows.

That is what you pay here. Your OpenAI key is charged separately by OpenAI for the model calls, at whatever rate your account is on. Sample and notice rows are not results and are not billed.

💡 What people use it for

  • Shipping one video with subtitle tracks in six languages, without re-cutting anything.
  • Turning an existing English caption file into the Spanish and Portuguese versions for the same

upload.

  • Getting the flat .txt out of a caption file to reuse as a description or an article draft.
  • Transcribing a short interview from a URL and getting the translated tracks in the same run.

🚧 What it does not do

  • It does not pay for the model. Translation and transcription run on your own key, and you see

that cost on your OpenAI bill.

  • Long files can come back short. All the cues for one language go in a single model call, so a

very long subtitle file can hit the model's reply limit. When the reply comes back with fewer lines than went in, the missing ones are filled with the untranslated original rather than left blank. Split a feature-length file and run it in parts.

  • The video route is for short clips. Audio is uploaded whole for transcription, which runs out

at roughly 13 minutes.

  • Styling is dropped. Italics, positioning and colour tags are stripped during parsing. You get

plain cues back.

  • Timings are copied, not re-fitted. A translation that is wordier than the source stays on the

original cue and can read fast on screen.

  • A failure partway stops the run. Languages already written stay in the dataset and are billed;

the ones after it are not produced.

  • No language cap. Twenty codes is twenty rows and twenty model calls, so check the list before

you start.

🧭 Which subtitle tool do you need?

If you wantUse
Subtitles you already have, in more languagesThis one
A video or audio file turned into a transcript and caption filesVideo & Audio Transcriber
A whole video dubbed with a new voice trackAI Video Dubber
Captions burned into the pictureAuto Caption Burner
The source video and its caption file downloadedYouTube Downloader Pro

❓ Questions people ask

Do the timings change? No. Start and end times are carried across exactly as they were parsed, down to the millisecond.

Which languages work? Any language the model handles. Codes like es, fr, de, hi, ar, ja and zh also get a readable name on the row; anything else still translates, it just shows the raw code in languageName.

Can I use a different model or provider? Yes. Set translationModel to any chat model your key can reach, and baseUrl to any OpenAI-compatible endpoint.

Can I run it without a key? You can press Start and see the shape of the output, but the rows will be labelled samples in the key-value store rather than a real translation.

Why did some lines come back in the original language? The model returned fewer lines than were sent, and the gaps were filled with the source text so the file still lines up. That is the sign to split the file into shorter chunks.

Can I schedule it? Yes, like any actor on Apify. It is more commonly run once per video.

🆘 If something breaks

Open the Issues tab on the actor page. Send the run ID and, if you can, the first few cues of the file you pasted. The run log names the language it was on when it stopped.