Add Subtitles
Put a caption file onto a video — burned into the frame, or as a track the player can switch off.
What this tool does
Add Subtitles takes two files at once, your video and a caption file, and hands both to FFmpeg on the OmniKitly processing service. SRT, VTT and ASS captions are accepted, and the two routes on offer differ in a way worth understanding before you choose: burning writes the words into the pixels themselves, while attaching stores them as a separate stream alongside the picture.
Burning re-encodes. Every frame is decoded and written again as H.264 in an MP4 with AAC audio, at CRF 23 — a fixed quality level with no control over it here. Of the four style controls, two behave: placement puts the lines at the top or the bottom of the frame, and the size runs from 10 to 72, though that number is a subtitle-style value rather than a pixel height, so the same setting draws far bigger letters on a 4K frame than on a 720p one. There is no font family picker, no background box and no margin control, and none of these four appear on the other route because nothing there changes appearance.
Burned text takes a size from 10 to 72, a fill colour and a top-or-bottom position, and libass draws it with a dark outline behind each letter unless you turn that off. The outline is worth keeping on a busy picture: white text over a bright sky is hard to read without it, and the outline costs nothing. The size is a style value scaled to the frame rather than a pixel height, so the same number looks larger on a 360p clip than on a 4K one — check the result at the resolution you are shipping.
Attaching a track is the cheaper operation and the much faster one: the video and audio streams are copied across untouched, so nothing is re-encoded and no quality is lost. Three consequences follow from how that copy is written. The result is always a Matroska .mkv file, whatever container went in; the captions are rewritten as SRT text, which drops cue positioning outright and reduces an ASS file's colours and sizes to SRT font tags that many players ignore; and every other stream in the source is carried over too. That last one bites, because Matroska holds only video, audio and subtitles — a recording with the timecode track an iPhone or an action camera writes is refused on this route with a general failure message, while burning the same file works.
The limitation that matters most is the one at the very start: this does not listen to your video. There is no speech recognition in it anywhere, so the caption file has to exist already, with timings that already line up — nothing here can shift a track running half a second early. The work itself runs on the processing service because a browser has no encoder equal to it, so both files travel there over an encrypted connection, and the uploads, the finished video and the job record are deleted together when the retention window expires, six hours by default. The ceilings are 200 MB per file and ten minutes of processing, and a source longer than three hours is refused outright.
How to use it
- Add the video and the caption file together. Both belong in the same job. Whichever file is not an .srt, .vtt or .ass is treated as the video, so the order you pick them in does not matter — but a job with no caption file at all is refused by name.
- Choose how they are added. A switchable subtitle track when the viewer should be able to turn the words off, or burned into the picture when they have to be visible everywhere the file lands.
- Set the burned-in text, if that is the route you took. Size, fill colour and top-or-bottom placement all apply. Leave the dark outline on unless the picture behind your captions is plain, since it is what keeps them legible over a bright or busy frame.
- Download the result. Burning returns an MP4, attaching returns an MKV. Both are named after your video with -subtitled on the end, and the job reports the finished size.
Processing & privacy
Secure server processing. This operation requires temporary server processing.
Common use cases
Captions for a social feed
Timelines autoplay muted and discard subtitle tracks on upload, so words that are not in the picture are never read. Burning is the version that survives.
A translated track for a talk or a film
A translator hands back an SRT. Attaching it leaves the original picture bit-for-bit intact and lets the viewer switch the words off when they do not need them.
Making an existing recording accessible
A meeting or lecture transcribed elsewhere gets its captions attached without a re-encode, so the archived file loses nothing in quality on the way through.
Proofing a caption file before you publish
Burn a throwaway copy and watch it. Timing drift, overlong lines and lines that outstay the shot are obvious on screen in a way they never are in a text editor.
Questions
Does this write the subtitles for me?
Are my files uploaded?
Can I change the colour of the burned-in text?
Why did the attached-track version come back as an MKV?
The attached-track job failed on a clip straight off my phone. Why?
Which caption formats can I use?
Does burning lose quality?
My captions are out of sync — can I correct that here?
Can I add two subtitle tracks in one go?
Related tools
- Compress Video — Reduce video file size with a quality target.
- Video to GIF — Turn a short clip into an animated GIF.
- Video to MP3 — Extract the audio track from a video.
- Convert Video — Convert between MP4, WebM, MOV and MKV.
- Trim Video — Cut a clip to a start and end point.
- Merge Videos — Join several clips into one file.