Auto Caption Burner - Viral Subtitles Burned In avatar

Auto Caption Burner - Viral Subtitles Burned In

Pricing

from $38.50 / 1,000 caption block (30s)s

Go to Apify Store
Auto Caption Burner - Viral Subtitles Burned In

Auto Caption Burner - Viral Subtitles Burned In

Burn word-by-word animated captions into a video you host, in one of five styles. You get the captioned MP4, an SRT, the full transcript and every word's timing. Runs on your own OpenAI key. $40.00 per 1,000 caption blocks of 30 seconds ($0.08 per minute of video).

Pricing

from $38.50 / 1,000 caption block (30s)s

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

1

Bookmarked

3

Total users

1

Monthly active users

4 days ago

Last modified

Share

Burn word-by-word animated captions into your video: send a direct link to a video you host and get back an MP4 with the captions burned into the picture in one of five styles, plus an SRT file and every word's timing as JSON.

Transcription runs on your own OpenAI key, which you paste into the input. That matters before you start: the captions cost what is listed below, and the transcription is billed to you by OpenAI separately. Leave the key out and the run writes a free sample row instead of doing any work.

InputA direct link to a video you host, plus your OpenAI key
OutputA captioned MP4 in the key-value store, with an SRT, the word timings and one row describing them
CeilingOne video per run, up to around 13 minutes of audio, where transcription stops accepting the file
Account neededYour own OpenAI key
Price$40.00 per 1,000 caption blocks, a block being 30 seconds of video, so $0.08 a minute on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 125 blocks, roughly an hour of video

🔍 What Auto Caption Burner does

It downloads your file, pulls the audio out, gets the timing of every spoken word, then builds karaoke-style captions and re-encodes the video with them burned in. Burned in means the words are part of the picture, so they survive every upload and every repost. Nothing is watermarked.

Five presets, and they are real style differences rather than colour swaps: hormozi (white with a yellow pop on the spoken word), beast (white with green), tiktok (Bebas with red), clean (subtle) and karaoke (yellow and cyan). You can override the font size, both colours, the position, how many words sit on screen and how far from the edge they sit, all without leaving the preset.

Captions are built at your source dimensions, so a 1080x1920 vertical comes back 1080x1920. Nothing is cropped, letterboxed or reframed.

The SRT and the word-timing JSON are the part people underestimate. The JSON has every word with its start and end, for recutting later or for feeding into another tool.

📋 What data you get from each captioned video

What you getField
The captioned MP4 in the run's key-value store, and a link to itoutput.mp4Key, output.mp4Url
The subtitle file, five words to a cue, and a link to itoutput.srtKey, output.srtUrl
Every word with its start and end, as a JSON file in the same storeoutput.wordsKey
The whole spoken text as one stringtranscript
How many words were heardwordCount
The source length in seconds, which the caption blocks are counted fromdurationSeconds
The video's own width and height, which the output keepssourceDimensions
The preset used, and how long the run tookpreset, processingSeconds

▶️ How to burn captions into a video

  1. Open Auto Caption Burner and click Try for free.
  2. Paste a direct link to your video into Video URL. It has to be a file link, not a page.
  3. Paste your key into OpenAI API key (BYO). It is stored as a secret.
  4. Pick a Caption style preset, and set ALL CAPS or Words per line if you want them.
  5. Click Start, then open the Storage tab and download the captioned-*.mp4.

Start it with no key and you get the free sample row instead.

💰 How much does it cost to caption a video?

$0.04 per 30 seconds of video on the Free plan, which is $0.08 a minute, a little less on paid plans. A 45-second short is two blocks and a three-minute video is six. On the free plan, the $5 Apify gives you each month covers about 125 blocks.

The count comes from the source duration, so a video is priced by its length, not by how many words it happens to contain. The free sample row is not charged, and a run that fails before the video is finished produces no caption blocks. If the maximum cost you set on the run cannot cover the whole video, nothing is captioned and nothing is charged for it.

The transcription is billed to you by OpenAI on your own key and does not appear here.

📥 What you give it

{
"videoUrl": "https://cdn.example.com/my-short.mp4",
"openaiApiKey": "sk-...",
"preset": "hormozi",
"language": "en",
"allCaps": true,
"wordsPerGroup": 3
}
FieldDefaultWhat it is
videoUrlnoneA public direct link to your own .mp4, .mov or .webm: S3, a CDN or a direct Drive link. Nothing is scraped. The form starts with a placeholder address in it.
openaiApiKeynoneYour OpenAI key, stored as a secret. Without it the run returns a sample row and stops.
presethormozihormozi, beast, tiktok, clean or karaoke.
languageautoAn ISO-639-1 code like en, es, fr. auto lets the transcription work it out.
allCapsthe preset'strue forces uppercase, false turns it off. Every preset except clean is uppercase already.
fontSizethe preset's24 to 200 px, measured at 1080 width.
primaryColor, highlightColorthe preset'sHex, like #FFFFFF and #FFE000. The highlight is the word being spoken.
positionthe preset'stop, center or bottom.
wordsPerGroupthe preset's1 to 8 words on screen at once.
marginVthe preset'sDistance from the chosen edge in pixels, measured at 1920 height.
crf18Output quality. 18 is visually lossless and large, 23 is smaller.
transcriptionBaseUrlnoneAn OpenAI-compatible endpoint of your own, if you use one. Empty means OpenAI's own.
transcriptionModelwhisper-1The transcription model name.

📤 What you get back

One dataset row per run, and the files themselves in the run's key-value store.

No run on record has captioned a video with a customer's key, so this is the real row a run with no key wrote, which is the free sample the actor writes instead of working. On a delivered video there is no _sample, _notice or reason, the output keys are filled in, and transcript holds your own text:

{
"ok": true,
"_sample": true,
"_notice": "SAMPLE OUTPUT - provide a public \"videoUrl\" and \"openaiApiKey\" for a real captioned video.",
"reason": "missing_api_key",
"videoUrl": "https://example.com/my-short.mp4",
"preset": "hormozi",
"sourceDimensions": { "width": 1080, "height": 1920 },
"durationSeconds": 12,
"wordCount": 18,
"transcript": "This sample row shows the output shape for automated checks and preview runs.",
"output": { "mp4Key": null, "srtKey": null, "wordsKey": null, "mp4Url": null, "srtUrl": null },
"processingSeconds": 0
}
FieldHow to read it
output.mp4KeyThe captioned video's name in the store, captioned-<timestamp>.mp4.
output.srtKeyThe subtitle file, captions-<timestamp>.srt.
output.wordsKeywords-<timestamp>.json. There is no link to it on the row, so read it from the key-value store by that key.
wordCountZero words fails the run rather than handing you a silent video.
durationSecondsThe source duration, rounded. This is what the caption blocks are counted from.

🧾 Reading the output

Three kinds of row can land in your dataset.

RowHow to spot itCharged
A finished videono _sample key, and output.mp4Key filled inyes
The sample row_sample: true and a reasonno
A stop at your cost limitok: false, _diagnostic: true, errorCode: "MAX_COST_TOO_LOW"no
ValueWhat it means
reason: "missing_video_url"Sample row: no Video URL was given.
reason: "missing_api_key"Sample row: no OpenAI key was given.
errorCode: "MAX_COST_TOO_LOW"The maximum cost set on the run could not cover the whole video. blocksNeeded and blocksCovered say by how much. Raise it and run again.

The sample is written before anything is downloaded, so it does no work and costs no blocks. It also says ok: true, so filter on _sample rather than on ok.

Anything that genuinely breaks fails the run rather than handing you a half-captioned file, and no caption blocks are charged for it. The captioned video is written to the store and the row pushed before billing, so if billing ever has a problem you still keep the video.

💡 What people use it for

  • Captioning shorts and reels so they still read with the sound off, which is most of the feed.
  • Putting burned captions on ads, where an SRT sidecar file is not an option.
  • Turning podcast and interview clips into social cuts, with the word timings kept for recutting.
  • Running the same clip through two presets to see which holds attention better.
  • Getting an SRT out of a video that never had one, as a side effect of captioning it.

From a script to a captioned slideshow, in three runs:

  1. Voice your script with AI Text to Speech Voiceover and copy audioUrl from its row.
  2. Give Storyboard Video Generator your images and that link as Audio URL, and copy videoUrl from its row.
  3. Paste that videoUrl into Video URL here, and the voiceover's words come back burned in.

🚧 What it does not do

  • It does not fetch videos from social platforms. You give it a direct link to a file you host.
  • Long videos fail. Transcription sends the whole audio track in one request and stops accepting it somewhere around 13 minutes. Cut longer material into pieces first.
  • No translation. Captions come out in the language that was spoken. Translate the SRT afterwards if you need another language.
  • No speaker labels. It is one stream of words.
  • No reframing, no cropping, no resizing. The output keeps your source dimensions.
  • No editing of the transcript before burning. What the transcription heard is what gets burned in.
  • Re-encoding takes real time on a long video, because the whole file is encoded, not just the part with captions.
  • It is not an official tool of any platform or company named on this page. Dami's Studio is independent and is not affiliated with or endorsed by any of them.

🧭 Which video tool do you need?

If you wantUse
Captions burned into the pictureThis one
Just the transcript and the timings, no videoVideo & Audio Transcriber
An existing subtitle file translatedSubtitle Translator
A long video cut into short clips, captions includedAI Viral Clip Cutter
Images and a voiceover turned into a video to captionStoryboard Video Generator
A thumbnail for the finished videoAI Thumbnail Generator

❓ Questions people ask

Why do I need my own OpenAI key for captions?

Transcription is what makes word-by-word captions possible, and it runs on your key so the usage and the cost stay yours.

Are the captions burned on the video or in a separate file?

Both. Burned into the MP4, and an SRT beside it if you want to edit the wording later.

Can I change the caption font?

You can change size, colours, position, distance from the edge and words per line. The typefaces are the ones each preset ships with.

What happens with a silent video?

The transcription returns no words and the run fails rather than handing you an unchanged file. No caption blocks are charged.

Can I call it from code or connect it to an AI assistant?

Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/auto-caption-burner. Either way the run happens on your Apify account at the same price, and OpenAI bills your key as usual.

🆘 If something breaks

Open the Issues tab on the actor page. Send the run ID and the video URL if it is one you can share. The log names the step that failed: download, probe, transcribe or burn.