AI Subtitle & Document Translator — SRT, VTT, DOCX avatar

AI Subtitle & Document Translator — SRT, VTT, DOCX

Pricing

from $10.80 / 1,000 subtitles translated (fast engine)s

Go to Apify Store
AI Subtitle & Document Translator — SRT, VTT, DOCX

AI Subtitle & Document Translator — SRT, VTT, DOCX

Translate SRT and VTT subtitles into 110 languages with every timestamp preserved byte-for-byte, plus plain text and DOCX/PPTX documents that keep their original layout. Two engines: a fast affordable one and a professional high-accuracy one. Bulk input, per-character billing.

Pricing

from $10.80 / 1,000 subtitles translated (fast engine)s

Rating

0.0

(0)

Developer

SIÁN OÜ

SIÁN OÜ

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Translate subtitle files, plain text and office documents into 110 languages — without ever touching a timestamp.

Most translation tools treat an .srt file as a wall of text. They re-generate the timing track on the way out, and you find out three episodes later that cue 47 drifted by 200 milliseconds. This actor never regenerates a timestamp it was handed. Timings, cue numbers, blank lines, byte-order marks and Windows line endings are copied through as raw bytes, and every file is re-parsed and compared against its source before it is delivered. A file whose timings did not survive is discarded rather than shipped — and you are not charged for it.


What it does

ModeInputOutput
Subtitles.srt and .vtt files, by URL or uploadTranslated subtitle files, timings byte-identical
TextOne string, or hundredsTranslated strings, repeats charged once
Documents.docx and .pptx, by URL or uploadTranslated documents with layout, styles, tables and images intact

Every source item is translated into every language you pick, and every combination is one row in the dataset with its own download link.


Why the subtitle mode is different

Timings are never recalculated. They are opaque strings that pass straight through. 100-hour timestamps, , and . separators, and cue positioning coordinates all survive untouched.

A cue is never silently dropped. Language models skip, merge and reorder list items. This actor matches every returned translation to an explicit cue id — never to its position in an array — retries anything missing, and as a last resort keeps the cue's original text and reports it in partialCues. Your file always has the same number of cues it started with.

WebVTT structure is respected. The WEBVTT header, NOTE comments, STYLE blocks (which are CSS — translating them corrupts the file) and REGION definitions pass through untranslated and unbilled. Cue identifiers and cue settings such as line:0 position:20% align:start are re-emitted exactly.

Formatting survives. Italics, bold and colour tags stay wrapped around the same words they wrapped in the source. Positioning overrides like {\an8}, voice spans like <v Roger Bingham> and class spans like <c.loud> are lifted out before translation and restored afterwards.

Neighbouring cues are used as free context. Two cues either side of each batch are sent to the engine as context — not translated, not billed. That is what fixes the pronoun and gender agreement that breaks when a sentence spans two cues.

Lines are re-wrapped, not left ragged. German runs about 30% longer than English. lineWrap: preserve keeps the source's line count and only adds a line when one would exceed your character limit (42 by default — the Netflix and BBC readability standard).

Overlapping cues are reported, never "fixed". If the source has out-of-order or overlapping timings, you get an overlappingCues count and the file exactly as authored.


Two engines

FastProfessional
Best forback-catalogues, drafts, high volumepublished output, client work, documents
Cost per 1,000 characters$0.008 text · $0.012 subtitles$0.12 text · $0.15 subtitles
Formality controlapplied through instructions, every languageapplied natively on the 15 languages that distinguish it
Documents.docx and .pptx
Free Apify plans

Pick Fast when you are working through a hundred hours of archive. Pick Professional when the output goes in front of a customer.


Billing you can check yourself

Charging is per 1,000 source characters, per target language — and the characters are banked across the whole run rather than rounded up per item.

That distinction is the whole point. Translating 500 interface labels of 40 characters each is 20,000 characters of work. Rounding each item up to a whole 1,000 would bill 500 events. This actor bills 20, plus at most one rounding event per language for the leftover. Every row carries billedCharacters and billedEvents, and the HTML run report breaks the total down per event and per language.

Repeats are charged once. A recurring station ident, a repeated UI string, a chorus line — translated once, delivered everywhere it appeared, billed once.

Nothing but cue text is counted. Timestamps, cue numbers, the WEBVTT header, NOTE/STYLE/REGION blocks and the free context window are never billed.

maxSpendUsd is a real pre-flight brake. The run is priced before the first charge and aborts with an explanation if the estimate exceeds your cap. You are not charged for a run that stops there.

Documents cost differently — and the row says so

Office documents are billed by the upstream engine with a 50,000-character minimum per file, per language, whatever the real length. A two-page contract and a fifty-page contract both cost the same $2.49. Anything above 50,000 characters is charged as overage.

Every document row reports minimumApplied, the authoritative billedCharacters and the overageEvents charged, so the number on your invoice is one you can reconstruct.


Input

FieldNotes
modetext · subtitles · document
engineai (fast) · deepl (professional, paying plans)
targetLanguages110 codes. Each one is a separate translation and a separate charge
sourceLanguageauto by default
text / textstext mode
subtitleUrls / subtitleFiles.srt and .vtt, links or uploads
documentUrls / documentFiles.docx and .pptx, up to 30 MB
outputFormatsame · srt · vtt — conversion changes the decimal separator, never a digit
lineWrappreserve · single · none
maxCharsPerLinedefault 42
formalitydefault · more · less
preserveTagson by default
maxSpendUsdpre-flight cost ceiling

Example

{
"mode": "subtitles",
"engine": "ai",
"targetLanguages": ["DE", "ES", "PT-BR", "JA"],
"sourceLanguage": "EN",
"subtitleUrls": ["https://example.com/episode-04.srt"],
"lineWrap": "preserve",
"maxCharsPerLine": 42,
"maxSpendUsd": 5.00
}

Output

One row per source item per target language:

  • translatedText for text mode, or subtitleUrl / documentUrl for a downloadable file
  • subtitleText inline while the file stays under 100 KB
  • cueCount, translatedCueCount, partialCues, overlappingCues
  • timingsPreserved and tagsPreserved — the integrity result for that exact file
  • sourceCharacters, billedCharacters, billedEvents

Plus report.html in the key-value store: the run summary with the full billing breakdown, written even if the run fails.


Free plan limits

Free Apify accounts get the fast engine, one target language, 5 items and 20,000 source characters per run. The professional engine and document mode require a paying plan.


Works well with

Subtitle mode takes exactly what these actors produce:

Transcribe once, then translate the timed output into every market you sell into.


Support