Nodes/ComfyUI ASCII Art Nodes/Video to Dynamic Color ASCII Art
ComfyUI Node

Video to Dynamic Color ASCII Art

The full-motion ASCII video effect, characters and all

By LamEmil·Created about a year ago·Updated about a year ago· 1
Video to Dynamic Color ASCII Art
  • video_frames
  • dynamic_ascii_video_frames
char_width100
font_pathcour.ttf
font_size15
ascii_charset .'`^":;Il!i~_?[{1(|/fjxnvzXYJCLQ0Zmwqdkh*#M&8%B@$
background_color#000000
invert_brightness_mappingfalse

This is the other half of the pack's video pair, and it's the one that matches what you probably picture when someone says "ASCII video": every frame gets its characters and colors recomputed from that frame's own content. "Video to Dynamic Color ASCII Art" is the full-motion version - the character grid itself ripples and changes as the source moves, nothing stays locked.

The trade-off versus the static video node in the same pack is real and worth stating plainly. Dynamic is flashier and truer to the classic ASCII-video aesthetic (think the streaming Star Wars / "nerd pride" effect), but it's also busier. When the source has subtle motion, the character cells constantly swap between glyphs and the picture can look like it's swimming rather than moving. When the motion is strong - action, camera pans, dancing figures - dynamic sells it. My rule of thumb: dynamic for loud footage, the static variant for anything you want a viewer to actually read.

How it works

Per frame, the node downscales to a char_width grid, converts to grayscale, maps each cell's brightness onto ascii_charset to pick the glyph, and samples the same cell's RGB for the fill color. Then it draws the whole grid and upscales back to the input frame size. Because character selection and color sampling both run on every single frame, it's strictly more CPU work than its static sibling - Pillow drawing thousands of glyphs per frame, hundreds of frames, no GPU. Keep an eye on render time with longer clips.

Inputs and output

Identical surface to the static video node: video_frames (an IMAGE batch), plus char_width, font_path, font_size, ascii_charset, background_color, invert_brightness_mapping. No text_color, no chars_per_frame. Output is the batched IMAGE dynamic_ascii_video_frames, same dimensions as the input.

You still need a video loader upstream that produces an IMAGE batch and a Video Combine / Save Animated WebP/GIF node downstream - this node is strictly a frame-to-frame transformer.

Install and gotchas

ComfyUI Manager (search "ComfyUI ASCII Art Nodes") or manual:

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

Restart after. Only dependency is Pillow - no models, no API keys.

Same pack warnings, one of them doubled in severity: font_path defaults to cour.ttf, which isn't bundled, and since this node redraws every glyph every frame, a chunky bitmap fallback font will make the whole video ugly at high speed - set a real monospace .ttf first. Keep char_width modest (60–80) for anything longer than a few seconds, because you're paying the text-rendering cost per frame, per character. And don't rename the cloned folder despite the README's ComfyUI_ASCIINodes naming - the repo clones as ComfyUI_ASCIIArtNode. It's a hobby-grade single-commit pack with no community support, but for the full-motion ASCII effect it's the node you want.

Categoryvideo/art

Inputs (7)

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

Outputs (1)

NameTypeDescription
dynamic_ascii_video_framesIMAGE