Nodes/MKRShift_Nodes/Lower Third Template
ComfyUI Node

Lower Third Template

Burn a name bar onto video without opening a video editor

By criskb·Created 7 months ago·Updated 5 months ago· 0
Lower Third Template
  • video
  • video
  • output_path
  • summary
headlineHeadline
sublineSubtitle line
start_sec0.50
duration_sec3.50
animate_sec0.35
inset_x56
inset_y56
bar_color#121212
accent_color#E7B13D
text_color#FFFFFF
font_size_headline44
font_size_subline28
fallback_fps24.0
output_formatauto
filename_prefixMKR_lower_third
subfolder
overwritefalse
filename_label

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:

  • headline and subline - the text. Headline is the big line, subline the small one.
  • start_sec (default 0.5) and duration_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 optional filename_label overrides 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.

CategoryMKRShift Nodes/Media/Timeline

Inputs (19)

NameTypeDefaultDescription
video*
headlineSTRINGHeadline
sublineSTRINGSubtitle line
start_secFLOAT0.500–3600
duration_secFLOAT3.500.1–3600
animate_secFLOAT0.350.05–5
inset_xINT560–2048
inset_yINT560–2048
bar_colorSTRING#121212
accent_colorSTRING#E7B13D
text_colorSTRING#FFFFFF
font_size_headlineINT448–256
font_size_sublineINT288–256
fallback_fpsFLOAT24.01–240
output_formatCOMBOauto6 options: auto, gif, webp, mp4, mov, webm
filename_prefixSTRINGMKR_lower_third
subfolderSTRING
overwriteBOOLEANfalse
filename_labeloptSTRING

Outputs (3)

NameTypeDescription
videoMKR_VIDEO
output_pathSTRING
summarySTRING