Add Subtitle To Video
Burn Subtitles Without Leaving ComfyUI
- video
- VIDEO
Subtitles are the last manual step in most video workflows
You generate a clip, maybe dub it, and then what? If the answer is "open a video editor to slap captions on it," you've broken the automation chain. Easy-Media's Add Subtitle To Video is the node that burns text into the video itself - an output node you can drop at the end of a pipeline and call it done.
It's designed to sit after the pack's recognize side of things too: the pack can auto-generate subtitles from audio (Whisper or Qwen3-ASR), and this node takes that text - or anything you typed yourself - and makes it permanent.
How it works
Three steps under the hood, and you only care about the first:
-
Parse. The
subtitle_textbox accepts three formats, so you can paste whatever you have:- Full SRT:
1\n00:00:00,000 --> 00:00:02,000\nSubtitle text - Inline timestamps:
00:00:00,000 --> 00:00:02,000 Subtitle text - Bracket format:
[00:02.000 --> 00:04.000] Subtitle text
- Full SRT:
-
Normalize. Whatever you fed it gets rewritten into a clean SRT file. You choose where it lands with
srt_save:tempkeeps it in ComfyUI's temp folder (fine for a one-off),outputwrites it toComfyUI/output/srt/so you keep the captions as a separate file. -
Burn. The video and the subtitle track get muxed together with FFmpeg - that's the real mechanism, and it's the whole reason the pack's README starts with a loud "install FFmpeg first" warning.
The inputs that matter
subtitle_text- the actual captions, multiline. This is where the formats above go.video- the VIDEO input you want captioned.srt_save-temporoutput. The "output" option is the one you want if you're archiving the SRT alongside your renders.font_size- 16 by default, range 8–96. Note the units: this is burned at encode-time pixel size, so 16 is small on a 1080p frame. For actual viewing, most people end up around 36–48. If your captions look like ant legs, this is the first knob to turn.
The single output is a VIDEO with the text baked into the pixels. There's no way to un-burn it later - that's what the saved SRT is for.
Setup and troubleshooting
Install is the pack install: ComfyUI Manager → search ComfyUI-Easy-Media, or
cd ComfyUI/custom_nodes
git clone https://github.com/yolain/ComfyUI-Easy-Media.git
then restart ComfyUI. Before anything else, make sure FFmpeg is on your PATH - the README flags it as strongly recommended for the whole pack, and this node hard-requires it.
The usual failure modes:
- Nothing burns / the node errors - 90% of the time FFmpeg isn't found. Run
ffmpeg -versionin a terminal; if that fails, install it (on Windows, winget or a PATH setup; on Linux/macOS your package manager) and restart ComfyUI. - Captions show but at the wrong time - check the timestamp format. The parser is tolerant but it isn't a psychic:
[00:02.000 --> 00:04.000]is seconds,00:00:00,000 --> 00:00:02,000is the SRT format with comma milliseconds. Mixing them up silently shifts everything. - Font too small (or huge) - that's
font_size, and remember it's relative to the rendered frame, not your screen.
This node is unglamorous plumbing, but it's the difference between a "generated a video" workflow and a "generated a finished video" workflow. Wire it after your save node or straight after the sampler and the subtitles are part of the deliverable.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| subtitle_text | STRING | — | |
| video | VIDEO | — | |
| srt_save | COMBO | temp | Save the normalized SRT in temp or output/srt. |
| font_size | INT | 168–96 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| VIDEO | VIDEO | — |