Auto Caption Burner
Burn word-by-word animated captions into any video. 5 viral presets, no watermark, transcript and word timings included.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
videoUrl,preset,language(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.04 per caption block (30s) = $40 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Caption block (30s) | Per 30 seconds of captioned video. | $0.04 |
| Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.0000125 |
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-08-08, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
videoUrl | Public direct URL to the source video (.mp4 / .mov / .webm). You host it (S3/CDN/Drive direct link) — no scraping is performed. | string |
preset | Visual style of the burned captions. | string |
language | ISO-639-1 code of the spoken language (e.g. en, es, fr). Leave 'auto' to auto-detect. | string |
allCaps | Force captions to uppercase (overrides the preset). | boolean |
fontSize | Override the preset font size. | integer |
primaryColor | Hex color of inactive words, e.g. #FFFFFF. | string |
highlightColor | Hex color of the currently-spoken word, e.g. #FFE000. | string |
position | Where captions sit on the frame. | string |
wordsPerGroup | How many words show on screen at once. | integer |
marginV | Distance from the chosen edge, at 1920px height. | integer |
crf | x264 CRF. Lower = higher quality/larger file. 18 = visually lossless, 23 = smaller. | integer |
openaiApiKey | Your OpenAI key for Whisper transcription. Kept private. Leave empty only if the actor owner has configured a shared key. | string |
transcriptionBaseUrl | OpenAI-compatible base URL for transcription. Default https://api.openai.com/v1. Use to point at a proxy. | string |
transcriptionModel | Whisper model name. Default whisper-1. | string |
What you get
A structured dataset — each result includes fields like:
okpresetwordCountdurationSecondsprocessingSecondsoutputExport 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.
Storyboard Video Generator
Turn images or a story into a Ken Burns slideshow video with pan-and-zoom motion, optional audio and 9:16, 16:9 or 1:1 output.
Story to Script Rewriter
Turn any story, article or Reddit post into a short-form video script: a strong hook, tight narration, a title and alternate hooks.
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.
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.
Where this tool sits
- Categories
- AI Video & Content Studio
Auto Caption & Subtitle Burner
Give it a public video URL and it returns the same video with animated word-by-word captions burned in, plus the matching SRT file and word-level timestamps. It is built for short-form vertical content (TikTok, Reels, Shorts) but works on anything with speech: podcasts, course lessons, ads, interviews. No login, no watermark on the output.
How it works
The actor downloads your video, pulls the audio with ffmpeg, runs it through Whisper for word-level timestamps, builds an ASS subtitle track in the preset you picked, and re-encodes the video with the captions burned in using x264. The active word is highlighted as it is spoken.
Input
| Field | Required | Notes |
|---|---|---|
videoUrl | yes | Public direct URL to the source video (.mp4 / .mov / .webm). You host it (S3, a CDN, a Drive direct link). Nothing is scraped. |
preset | no | Visual style of the captions. One of hormozi, beast, tiktok, clean, karaoke. Defaults to hormozi. |
language | no | ISO-639-1 code of the spoken language (en, es, fr, ...). Leave as auto to detect it. |
allCaps | no | Force captions to uppercase, overriding the preset. |
fontSize | no | Override the preset font size, in px at 1080 width (24-200). |
primaryColor | no | Hex color of inactive words, e.g. #FFFFFF. |
highlightColor | no | Hex color of the currently-spoken word, e.g. #FFE000. |
position | no | Where captions sit: top, center, or bottom. |
wordsPerGroup | no | How many words are on screen at once (1-8). |
crf | no | x264 quality. Lower is better and bigger. 18 is visually lossless, 23 is smaller. Defaults to 18. |
openaiApiKey | no | Your OpenAI key for Whisper. Required unless the actor owner has set a shared key. Stored as a secret. |
Every preset sets a sane font, size, outline, and highlight color. The style override fields only change the parts you specify and leave the rest of the preset alone.
Output
Each run pushes one dataset record with the source dimensions, duration, word count, and the full transcript text. The rendered files land in the run's key-value store: the captioned MP4, an SRT file, and a JSON file of per-word timestamps (word, start, end). The dataset record's output object holds the keys and public URLs for the MP4 and SRT.
Example
{
"videoUrl": "https://example.com/my-short.mp4",
"preset": "hormozi",
"language": "auto",
"allCaps": true,
"highlightColor": "#FFE000"
}
Pricing
$0.04 per 30-second caption block, which works out at $0.08 per minute of video, plus $0.0000125 each time a run starts. Flat rate — no volume tiers, no plan gates — and you are charged only for blocks actually burned in.
Blocks are counted from the finished video, rounded up, so a 45-second short is two blocks ($0.08) and a 3-minute video is six ($0.24). There is no separate render fee, no per-preset fee and no charge for the SRT or the word-timing JSON — they come with the same block charge. A run that fails before anything is rendered charges nothing but the run-start fee.
Whisper transcription runs on your own OpenAI key, billed to you by OpenAI and not marked up here.
Notes
Transcription runs on Whisper, so you need an OpenAI key in openaiApiKey unless the owner has configured a shared one. Word timing is only as good as the audio: clean speech maps cleanly, heavy background noise or music can drift the highlights. The source has to be reachable at a direct URL, since the actor downloads the file rather than scraping a page.