String
Raw string source — a keyframeable text value that flows through the graph as plain character data. Feeds Text.content_in for animated captions, MergeText for concatenation, and future AI prompt inputs.
Category: Text Menu path: Text > String
Ports
| Port | Type | Direction | Description |
|---|---|---|---|
out | string | output | The current string value at the playhead. |
Parameters
| Param | Type | Default | Description |
|---|---|---|---|
value | string | "" | The string content. Multi-line editing. Keyframeable with Hold interpolation. |
How It Works
The String node is the simplest possible value source for raw text. It outputs whatever's typed into its value param as a string-typed signal. There's no layout, no font, no glyph metrics — just the characters themselves.
Why not just type into Text directly?
The Text node's text param is keyframeable too (the same keyframed value UI is reused). So if you only have one Text node and you want to animate its content, you don't need a String node at all. Reach for String when you want:
- Multiple Text nodes sharing the same animated content — one String node drives several
content_inports. - Concatenation — feed several String nodes into
MergeTextto build composite strings. - AI prompt building — future LLM/image-gen nodes will take
prompt: stringinputs that this connects to directly. - Cleaner separation — when the animated content matters more than the typography, keeping the content as a discrete node makes the graph self-documenting.
Keyframing — Hold-interpolated
Strings can't tween between values the way numbers can — there's no intermediate state between "Hello" and "World". So string keyframes are always Hold-interpolated: the value at any playhead position is whichever keyframe is at or before that frame. Switch happens instantly at the next keyframe.
Practically: keyframe "One" at frame 0, "Two" at frame 30, and the output reads "One" for frames 0–29, then snaps to "Two" at frame 30. The interpolation dropdown is not shown for string params (only Hold is valid).
String keyframes appear in the dope sheet as standard diamonds — you can slide, scale, and delete them like any other keyframe. They do not appear in the graph editor (no curve to plot).
Usage Examples
Animated caption swap
String (keyframed: "Welcome" at 0, "Caddis" at 60, "Get Started" at 120) → Text.content_in → DrawText → Output. The caption text snaps to each new string as the playhead crosses each keyframe.
Lyric-sync typography
String (keyframe each lyric line on its onset frame) → Text.content_in. Combine with TextAnimate to fade each line in over its visible duration.
Shared content across Text nodes
One String node, two Text nodes consuming content_in — useful when you want the same text rendered in two different styles (e.g. headline + caption) and only want to maintain one source of truth.
Future: AI prompt source
A String node with the prompt text drives an ImageGen.prompt_in (when those nodes ship). Keyframe the string to animate the prompt across frames for emergent video.
Tips
- The textarea is multi-line — press Enter for newlines. Useful for paragraph copy or multi-line prompts.
- Auto-key on: editing the textarea at any frame creates a keyframe automatically. Just like numeric params.
- A String node with only a single static value behaves identically to typing into Text.text directly — there's no overhead to using one.
- To unkeyframe, click the amber diamond next to the label at the frame you want to remove. The literal
valueparam re-takes over once all keyframes are gone.
Related Nodes
- Text — Consume a String at
content_into drive typographic layout. - MergeText — Combine multiple String streams with a separator into one string.
- TextAnimate — Per-glyph reveal / scale / opacity on the laid-out text downstream of Text.