## Aligned Text Overlay Video
Renders a **multi-line text block** onto **every frame** of a video tensor.
Supports `%NodeTitle.param%` template tags resolved from the active ComfyUI prompt.
---
### Inputs
| Pin | Default | Description |
|---|---|---|
| `images` | — | Video tensor (B, H, W, C) — connect VAE Decode output here. |
| `text_template` | see default | Template string with optional `%NodeTitle.param%` tags. |
| `vertical` | bottom | Vertical anchor: `top` or `bottom`. |
| `horizontal` | right | Horizontal anchor: `left` or `right`. |
| `font_size` | 16 | Font size in points (10–50). |
| `text_color` | white | Text colour. |
| `bg_color` | black | Background colour (`none` = transparent). |
| `bg_opacity` | 150 | Background opacity (50–250). |
| `first_frame_only` | false | When enabled, overlay is applied only to the first frame (fast preview). |
| `external_text` | — | Optional string appended after the resolved template. Connect **SamplerSchedulerIterator** here to embed the current sampler/scheduler pair. |
### Outputs
| Pin | Type | Description |
|---|---|---|
| `images` | IMAGE | Video tensor with text block superimposed on every frame. |
### Example
Connect this node between **VAE Decode** and **VHS Video Combine**:
```
VAE Decode -> AlignedTextOverlayVideo -> VHS Video Combine
```
Default template pulls values directly from a sampler node:
```
seed: %KSampler.seed% | steps: %KSampler.steps%
cfg: %KSampler.cfg% | %KSampler.sampler_name% | %KSampler.scheduler%
```
If your workflow has two samplers, rename them in the graph (right-click -> Title)
to e.g. `Sampler_1` / `Sampler_2` and reference them explicitly:
```
steps: %Sampler_1.steps%
```
NodeTitle must match the title shown on the node in the graph.
Sampler and scheduler values are always shown as readable names — the conversion
happens automatically.
By Rogala·Created 5 months ago·Updated 4 months ago· 19