Skip to content
Kamply

Burned-in captions

Subtitles burned in sentence case, clear of the platform UI

Kamply burns the subtitles in last, in the body font from your brand tokens file.

The longer description

Kamply extracts and grades each cut, joins them, then burns the subtitles last with libass, in the body font from your brand tokens file and a text colour picked to stay legible over footage.

Free. Keep the files. Akash replies with times.

Finished work, built in the app.

Every piece here was built in Kamply at the size it ships. Sample brands are labelled as such.

NutriScanA plate drawn in one line. Reel · 9:16
NutriScanTuesday’s energy, as a forecast. Reel · 9:16
NutriScanYour year, counted. Year in review · 9:16 reel
NutriScanKnow what dinner costs. Product story · 9:16 reel

Sample brands from the app’s library

Darnfold, Boxkin, Woofstead and Latelift are invented brands, so every figure in their work is fictional.

sample brand
Woofstead · sample brandWhere the dog goes on fireworks night. Reel · 9:16
sample brand
Latelift · sample brandA coach note, rep by rep. Reel · 9:16
sample brand
Boxkin · sample brandA box changes hands. Reel · 9:16
sample brand
Darnfold · sample brandBack again, patched again. Reel · 9:16

Platform UI, roughly the bottom 25 to 30%

Protect the first hour

Protect the first hour

MarginV 90 / 288
Where Kamply sets the caption: about 31% up the frame, clear of the chrome.
MarginV 75 / 288
The floor. Any lower and the cue sits inside the chrome.
The cue on screen
Line three of videos/sample-30s-edl/titles.srt, the worked example that ships with the app.

The numbers come from the renderer itself, MarginV 90 on libass's 288-unit scale, which lands a caption about 31% up a 1080x1920 frame. Platform chrome moves on the platforms' own schedule, so check the current safe area before you post.

What it actually does

Kamply renders an edited video on your Mac from a cut list that names your source clips.

What it does, in detail

Kamply renders an edited video on your Mac from a cut list that names your source clips and their in and out points. The subtitle burn is stage three of four: every range is extracted with its colour grade and 30ms audio micro-fades baked in, the ranges are joined (a lossless copy when every cut is straight, one re-encode pass when a range asks for a crossfade or a slow zoom), then ffmpeg burns the captions, then the audio goes out to a -14 LUFS master. Caption style is read from brand/tokens.css rather than an editor preset, and any cue written in capitals is lowered and re-capitalised before it reaches the frame.

What this is not

The burn only runs inside a render Kamply is already cutting from an edit list.

What it leaves to you

There is no drop-a-file captioner in the app, no web version, no public API and no upload box to send a finished MP4 to.

How it runs, start to finish

Three steps, in the order the app actually does them.

  1. Cut the video first

    Subtitles are a stage of a render. Kamply works from an edit list naming your source clips and the in and out point of every cut, and the caption burn happens inside that render.

  2. Bring an SRT, or have one built

    Point the edit list at a subtitle file you already have, or ask the renderer to build one from your take transcripts. Either way the cues are offset onto the finished timeline, so timings match the cut and not the raw footage.

  3. Burn last, then master the audio

    The grade rides on each cut and the subtitles go on last, so nothing re-encodes over a caption. Where a crossfade is involved the join and the burn run in one pass with the subtitles filter last in the chain. ffmpeg burns the cues with libass, sentence-cased and brand-styled, and the audio is handed off for the -14 LUFS master.

The numbers, and where they come from

Every figure on this page comes from Kamply's build log or a named published source. Nothing is modelled.

Caption placement
MarginV 90 of 288
Case rule
Sentence case, enforced
Style source
Your brand tokens file
Auto-built cue length
Two words, or a punctuation mark
Files you keep
The SRT, in the edit folder
Closed-caption track
None
What each number means
Caption placement
libass's own scale, so a cue lands about 31% up a 1080x1920 frame, above the chrome TikTok, Reels and Shorts draw over the bottom 25 to 30%
Case rule
An all-caps cue is lowered and re-capitalised on its first letter; mixed-case text is left exactly as written, so an acronym survives
Style source
Typeface from the body font token; text colour from the ink ramp when your ink is light, white when it is dark, because the cue sits over footage; outline from the brand accent only when it contrasts the text, otherwise near-black
Auto-built cue length
The builder closes a cue at two words or at the first word ending in a full stop, comma, question mark, exclamation mark, semicolon or colon, then offsets it onto the cut timeline
Files you keep
A sentence-cased copy is written next to the edit list as a new file; the subtitle file you supplied is never overwritten
Closed-caption track
Captions are pixels in the picture. No soft CC stream is muxed into the MP4 and no WebVTT is written

Questions people actually ask

If yours is not here, ask it in the walkthrough. The form below reaches a human.

Can I upload a video and get captions back?

No. Captions come out of a render, and a render starts from an edit list you have already built, naming your clips and their in and out points. Dropping a finished MP4 on the app gets you a file path in the terminal, not captions, and there is no web version or public API that would take one.

Are the subtitles a track I can switch off?

No. They are burned into the picture, so they play everywhere and cannot be turned off. You do get the subtitle file itself, written into the edit folder as a new file, so the text is yours to reuse, but Kamply muxes no closed-caption or WebVTT stream into the video.

Can I get uppercase captions, or karaoke word highlighting?

No to both. The renderer emits one plain caption style, and a cue written in capitals is lowered and sentence-cased before it is burned. Animated caption packs, emoji auto-insert and per-word highlighting are not in the edited-video path, which does cuts, crossfades, a slow zoom, colour grade and subtitles, and stops there.

Can Kamply write the subtitle timing for me?

Yes, with one condition. It walks the cut list, takes the words that fall inside each range from that take's transcript, closes a cue every two words or at a punctuation mark, offsets every cue onto the finished timeline and writes a subtitle file. The condition is that the take's word-level transcript is already sitting in the project's transcripts folder. Whisper is the transcription engine the app uses throughout and it is what those files are cached from, but the caption builder reads them rather than running the pass for you.

Do the animated reels get subtitles the same way?

No. Most reels play muted, which is the reason Kamply's build runbook gives, so a generated reel carries its captions as on-screen typography authored from the approved voice-over script rather than a burned subtitle file. The library has a pattern where words fade and grow into place one at a time, on a curve that cannot overshoot, so the line settles instead of bouncing.

What about subtitles in another language?

A second language is written again rather than free-translated over the same cut. The caption lines are authored native-first in the target language, and any build whose brief sets a language other than English has to staff a localization writer before the gates will pass it. The app itself runs in English, German, French, Italian, Japanese and Korean.

Bring one brief to the walkthrough.

We build the first direction with your brand during the walkthrough.

Akash, who built Kamply, replies with times. The walkthrough is free: he builds your first campaign direction on your brand, and you leave with the files.