Professional Subtitle Translator & Video Captioner
Pricing
from $30.00 / 1,000 translated minutes
Professional Subtitle Translator & Video Captioner
Transcribe, translate, quality-check, and burn subtitles into videos. Upload video, audio, SRT, or VTT and export SRT, VTT, TXT, JSON, or ready-to-publish MP4. Supports multilingual subtitles with automatic timing and QC.
Pricing
from $30.00 / 1,000 translated minutes
Rating
0.0
(0)
Developer
François Fernandez
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Transcribe, translate, quality-check, format, and optionally burn subtitles into video.
Upload a video, audio file, SRT, or VTT. The Actor can reuse existing subtitle tracks, translate them into multiple languages, correct technical subtitle issues, and export subtitle files or final subtitled MP4 videos.
Machine translations are not human-reviewed. Linguistic review is recommended before professional publication.
Which Actor should I use?
- Media to translated subtitle files, without a rendered video: Video & Audio to Translated Subtitles
- An existing SRT or VTT file that needs checking or correction: Professional Subtitle QC
- The complete workflow, including an optional subtitled video: use this Actor.
Each Actor covers a different stage of the subtitle workflow, so you only pay for the processing you actually need.
What this Actor does
Use this Actor to:
- transcribe video or audio into timed subtitles;
- reuse an existing SRT or VTT file without retranscribing;
- extract a text subtitle track embedded in a compatible video container;
- translate subtitles into up to five target languages per run;
- apply terminology replacements for names, brands, and technical vocabulary;
- check and correct subtitle timing and formatting;
- export SRT, WebVTT, TXT, and structured JSON;
- create optional MP4 videos with subtitles permanently embedded;
- process several direct media URLs in one batch.
Supported inputs
Media
- Video: MP4, MOV, MKV, WEBM
- Audio: MP3, WAV, M4A, AAC, OGG, FLAC
- Uploaded files through the Apify Console
- Direct public HTTP or HTTPS links to media files
- Multiple direct media URLs through
mediaUrls
Existing subtitles
- Standalone SRT or WebVTT
- One video paired with an external SRT or VTT file
- A compatible text subtitle track embedded in a video container
Not supported
YouTube, TikTok, Instagram, and similar webpage URLs are not direct media files and are refused. Download the media first, then upload it or provide a direct file URL.
Bitmap subtitle tracks such as PGS or VobSub are not supported because this Actor does not include OCR.
Main workflows
1. Transcribe video or audio
Choose the transcription mode to create timed subtitles from the audio track.
The Actor can automatically detect the spoken language, preserve speaker changes when diarization is enabled, and format the result using the selected subtitle profile.
2. Reuse existing subtitles
Use an external SRT/VTT file or an embedded text subtitle track to skip transcription.
This is useful when the original timing is already correct and you only need quality control, translation, or a final subtitled video.
3. Translate subtitles
Select one or more target languages. Each successful translation is returned as separate subtitle files.
The Translate into menu provides 10 validated output languages:
- English (American) —
EN-US - Spanish —
ES - French —
FR - German —
DE - Italian —
IT - Portuguese (Brazilian) —
PT-BR - Arabic —
AR - Chinese (Simplified) —
ZH-HANS - Japanese —
JA - Korean —
KO
You can select up to five of these languages in one run.
Longer translated text may be redistributed into additional cues while remaining inside the available media timeline.
A failure in one language does not remove successful outputs from other languages.
4. Quality control
Technical QC checks:
- maximum lines per subtitle;
- maximum characters per line;
- reading speed in characters per second;
- minimum and maximum cue duration;
- overlaps and chronological order;
- minimum gaps between cues;
- empty cues and invalid timecodes;
- whitespace and line wrapping;
- media-boundary overflow.
When correction mode is enabled, the Actor can rewrap lines, normalize whitespace, repair overlaps, extend or trim durations, and conservatively merge short adjacent fragments.
QC validates technical subtitle compliance. It does not guarantee that a machine translation is semantically or culturally correct.
5. Render final subtitled MP4 videos
Enable renderSubtitles to permanently embed subtitles into the video.
You can render:
- the source language;
- translated languages;
- every available language.
Rendering uses FFmpeg and libass inside the Actor container. The original media file is never overwritten.
When subtitles are already burned into the image, an optional box or blur can hide a user-defined horizontal zone before the new subtitles are added.
Subtitle profiles
The Actor includes three formatting profiles:
| Profile | Intended use |
|---|---|
documentary | Long-form and general video |
social | Short-form and social-media video |
accessibility | More conservative, highly readable subtitles |
Advanced settings can override line length, reading speed, minimum duration, maximum duration, and related rules.
Output files
For each successful language, the Actor can generate:
.srt— SubRip subtitles;.vtt— WebVTT subtitles;.txt— plain-text transcript;.json— structured data with metadata, cue timings, and QC information;.mp4— optional H.264/AAC video with burned subtitles.
Generated files are stored in the run Key-Value Store. The Dataset contains one result row per language with direct download links.
The OUTPUT record contains the complete run summary, including successful languages, failed languages, QC details, file references, billable minutes, and safe error messages.
Example input
Translate an existing French SRT paired with a video into English, Spanish, and German:
{"mediaFile": "https://example.com/video.mp4","videoSubtitleMode": "external","videoSubtitleUrl": "https://example.com/subtitles-fr.srt","outputLanguageMode": "translations","targetLanguages": ["EN-US","ES","DE"],"outputFormats": ["srt","vtt","json"],"profile": "social","enableQc": true,"qcCorrectionMode": "check-and-correct","qcAfterTranslation": true,"renderSubtitles": false}
Example output summary
{"status": "success","sourceFilename": "video.mp4","languageCode": "fr","mediaDurationSeconds": 111.67,"billableMinutes": 2,"successfulLanguages": ["EN-US","ES","DE"],"nonCompliantLanguages": [],"failedLanguages": [],"translations": [{"languageCode": "EN-US","status": "success","technicalStatus": "compliant","linguisticStatus": "machine-translated-unreviewed"}]}
Pricing
This Actor uses pay-per-event pricing.
| Event | When it applies |
|---|---|
| Actor start | Once for a valid, non-empty run |
| Transcribed minute | Per started media minute sent for transcription |
| Subtitle QC minute | Per started subtitle minute processed with QC |
| Translated minute | Per started minute and successful target language |
| Rendered video minute | Per started minute and successful rendered language |
The Apify Console displays the maximum permitted run cost before execution. A failed translation is not charged as a successful translated-language event, and a failed render is not charged as a successful rendered-video event.
Limits
| Limit | Value |
|---|---|
| Media size | 500 MB |
| Default media duration | 60 minutes |
| Absolute media duration | 180 minutes |
| Subtitle file size | 8 MB |
| Available target languages | 10 validated languages |
| Target languages per run | 5 maximum |
| Batch inputs | 50 |
| Parallel inputs | 5 |
| Subtitle lines | 2 maximum |
| Rendered MP4 | 2 GB per output |
Inputs above the configured limits are rejected before paid provider processing whenever possible.
Privacy and external processing
Media is downloaded into temporary storage inside the run container and removed when the run ends.
When transcription is requested, audio is sent to the configured transcription provider. When translation is requested, subtitle text is sent to the configured translation provider. Video rendering runs locally inside the Actor container.
Sensitive credentials, signed URLs, and full transcripts are not intentionally written to logs.
Important translation notice
Translations are machine-generated and marked:
machine-translated-unreviewed
Technical QC verifies timing, line length, reading speed, gaps, overlaps, and export validity. It does not replace a native-language review.
Human review is particularly important for legal, medical, safety-critical, marketing, and culturally sensitive content.
Troubleshooting
| Message | What to do |
|---|---|
| Social-platform page URLs are not supported | Upload the media or provide a direct media-file URL |
| No readable subtitle cue was found | Check that the file is valid SRT or WebVTT |
| Media has no audio stream | Use an existing external or embedded subtitle source |
| No embedded text subtitle track | Select another text track or provide SRT/VTT |
| Translation failed for one language | Download the successful languages and retry only the failed target |
| Translation is technically non-compliant | Review the generated file and adjust the profile or timing limits |
| Rendering requires a video input | Pair the subtitles with a real video file |
| Mask zone exceeds the frame | Reduce the mask top percentage or height |
Recommended workflow
- Export SRT or VTT first.
- Review timing and machine translation.
- Correct terminology when needed.
- Render the final MP4 only after reviewing the subtitle files.