Skip to content
Kamply

Burned-in captions

Subtitles burned in sentence case, clear of the platform UI

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.

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 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. 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 traces to a published source or to Kamply's own measurements. Nothing is modelled.

Caption placement
MarginV 90 of 288
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
Sentence case, enforced
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
Your brand tokens file
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
Two words, or a punctuation mark
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
The SRT, in the edit folder
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
None
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. Kamply's own brand ships in English only.

Bring one brief. Watch your first campaign take shape.

We build the first direction with your brand during the walkthrough. You leave knowing exactly what Kamply would make next.

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.