Skip to content

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

PortTypeDirectionDescription
outstringoutputThe current string value at the playhead.

Parameters

ParamTypeDefaultDescription
valuestring""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_in ports.
  • Concatenation — feed several String nodes into MergeText to build composite strings.
  • AI prompt building — future LLM/image-gen nodes will take prompt: string inputs 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 value param re-takes over once all keyframes are gone.
  • Text — Consume a String at content_in to 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.

Caddis — professional motion design.