Lower Third Template
Burn a name bar onto video without opening a video editor
- video
- video
- output_path
- summary
The fastest way to caption a clip
Need a "GUEST NAME - Title" bar burned into a promo clip, and the thought of opening a video editor to make it makes you tired? MKRLowerThirdTemplate is the node that does it in the graph. You give it a video, type the headline and subline, and it renders the bar onto the frames with a fade/slide animation, then encodes the result. For review cuts, promos, and internal handoffs this is genuinely faster than the NLE.
It's part of MKRShift_Nodes, the big utility pack by Cris K B. Pure Python + Pillow for drawing, ffmpeg for encoding - no models, no API.
How it works
The node decodes your input video into frames, and for each frame between start_sec and start_sec + duration_sec it draws the bar: a background strip (default near-black #121212), an accent color (default that warm #E7B13D), and the two lines of text. The animate_sec window (default 0.35s) eases the bar in at the start and out at the end, so it doesn't just blink on. Every frame outside the time window passes through untouched. Then it encodes to your chosen format with ffmpeg.
That's the whole trick - it's a template, one clean look, not a title designer. If you want an animated multi-layer title card, this isn't it. But for "put a name on this clip," it's a one-stop node.
The inputs that matter
There are a lot of inputs, but the ones a beginner actually sets:
headlineandsubline- the text. Headline is the big line, subline the small one.start_sec(default 0.5) andduration_sec(default 3.5) - when the bar appears and how long it stays.bar_color,accent_color,text_color- hex strings. These three are where you make it match your brand.font_size_headline/font_size_subline- sizes in px (defaults 44 / 28).output_format-auto(matches the source),gif,webp,mp4,mov,webm.filename_prefix,subfolder,overwrite- standard save controls. The optionalfilename_labeloverrides the filename.
The inset_x / inset_y (both default 56) control the bar's margin from the edges. If your source has no readable FPS it falls back to fallback_fps (24), which is also what you set if you want to force a rate.
Outputs and install
Outputs: video (the pack's MKR_VIDEO payload, ready to feed another MKR node), output_path (where the file landed), and a summary JSON with the settings used.
cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes
Restart, or install "MKRShift Nodes" via ComfyUI Manager. No pip requirements or models. ffmpeg is required - this node both decodes and encodes video through it.
Gotchas
Two things bite people. First, the summary JSON sits on a node that writes a file - if you queue a huge batch with overwrite off, the node will keep creating uniquely-named files, so either set overwrite or be ready to clean up. Second, font availability: the node uses Pillow's default font stack, so don't expect your custom brand typeface - you get a clean system look, and the colors do the heavy lifting. If you're rendering text that must match a specific font family, you're in the wrong tool anyway.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| video | * | — | |
| headline | STRING | Headline | — |
| subline | STRING | Subtitle line | — |
| start_sec | FLOAT | 0.500–3600 | — |
| duration_sec | FLOAT | 3.500.1–3600 | — |
| animate_sec | FLOAT | 0.350.05–5 | — |
| inset_x | INT | 560–2048 | — |
| inset_y | INT | 560–2048 | — |
| bar_color | STRING | #121212 | — |
| accent_color | STRING | #E7B13D | — |
| text_color | STRING | #FFFFFF | — |
| font_size_headline | INT | 448–256 | — |
| font_size_subline | INT | 288–256 | — |
| fallback_fps | FLOAT | 24.01–240 | — |
| output_format | COMBO | auto | 6 options: auto, gif, webp, mp4, mov, webm |
| filename_prefix | STRING | MKR_lower_third | — |
| subfolder | STRING | — | |
| overwrite | BOOLEAN | false | — |
| filename_labelopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | MKR_VIDEO | — |
| output_path | STRING | — |
| summary | STRING | — |