Nodes/ComfyUI ASCII Art Nodes/ASCII Typing Animation Generator
ComfyUI Node

ASCII Typing Animation Generator

Make your image type itself out, one character at a time

By LamEmil·Created about a year ago·Updated about a year ago· 1
ASCII Typing Animation Generator
  • image
  • animated_ascii_frames
char_width80
font_pathcour.ttf
font_size15
ascii_charset .'`^":;Il!i~_?[{1(|/fjxnvzXYJCLQ0Zmwqdkh*#M&8%B@$
background_color#000000
text_color#FFFFFF
invert_brightness_mappingfalse
chars_per_frame1

This node (display name "ASCII Typing Animation Generator") takes a single image and outputs a batch of frames of its ASCII art being typed out character by character, like a terminal deciding to write your face. Same conversion pipeline as the static generator in this pack, but instead of one output image you get the whole reveal.

It's a demo-grade effect, but it's a good demo-grade effect. The obvious uses are intros and title cards - a logo, a portrait, or a hero render typing itself onto the screen before your actual content starts. It's also a genuinely nice teaching node: because the animation is just progressively drawing more characters of the same ASCII map, you can see exactly how the brightness-to-character mapping works by watching it assemble.

How it works

The image is converted to a full grid of characters exactly like the static node - downscale to a char_width grid, grayscale, map brightness onto ascii_charset, render with Pillow at font_size, upscale each frame back to input resolution. The only twist is the loop: a counter tracks how many characters have been "typed," each frame draws the first N characters and nothing after, and N advances by chars_per_frame per frame.

That last bit is where beginners trip over the math. The total character count is char_width × char_height, and with a 16:9 image at the default char_width of 80, that's roughly 1,700 characters. At chars_per_frame = 1 - the default - you get about 1,700 frames. A lot of those frames are near-identical, and the node is CPU-bound (Pillow drawing text, no GPU), so a full-length run at high detail is genuinely slow.

The inputs that matter

  • chars_per_frame - typing speed, 1 to 100. Bump this up the moment your render feels glacial. Values of 5–20 usually read as smooth without wasting frames.
  • char_width - same as the static node, but here it directly multiplies frame count. Lower it (60–80) for animations.
  • text_color - the uniform color of the typed characters (default #FFFFFF). Unlike the color-sampling nodes in this pack, everything here is one color.

The rest are the pack's shared controls: font_path (defaults to cour.ttf, which isn't bundled - point it at a real monospace font), font_size, ascii_charset, background_color, and invert_brightness_mapping. The output is a single IMAGE batch named animated_ascii_frames.

Output: it's a batch, not a video

This is the crucial part. The node gives you a tensor of frames - it does not give you a .gif or .mp4. You need a downstream node to turn the batch into something playable: Video Combine (from VideoHelperSuite) for an actual video, or a Save Animated WebP / GIF node. Same rule applies to every animation node in this pack.

Install and gotchas

Install via ComfyUI Manager (search "ComfyUI ASCII Art Nodes") or:

cd ComfyUI/custom_nodes
git clone https://github.com/LamEmil/ComfyUI_ASCIIArtNode
cd ComfyUI_ASCIIArtNode
pip install -r requirements.txt

Then restart. Only dependency is Pillow - no models, no API keys.

If your output looks like a smeared bitmap, your font_path is wrong and the node silently fell back to Pillow's default font. If your animation is a thousand frames of nearly nothing, chars_per_frame is too low. And don't rename the cloned folder - the README calls it ComfyUI_ASCIINodes, the repo is actually ComfyUI_ASCIIArtNode, and renaming it is asking for trouble.

Categoryimage/animation

Inputs (9)

NameTypeDefaultDescription
imageIMAGE
char_widthINT8010–1000
font_pathSTRINGcour.ttf
font_sizeINT155–100
ascii_charsetSTRING .'`^":;Il!i~_?[{1(|/fjxnvzXYJCLQ0Zmwqdkh*#M&8%B@$
background_colorSTRING#000000
text_colorSTRING#FFFFFF
invert_brightness_mappingBOOLEANfalse
chars_per_frameINT11–100

Outputs (1)

NameTypeDescription
animated_ascii_framesIMAGE