ComfyUI Node

FL Ascii

Turn any image into ASCII art, with an audio-reactive hook

By filliptm·Created 3 years ago·Updated about 19 hours ago· 628
FL Ascii
  • image
  • mask
  • IMAGE
spacing20
font_size20
charactersMachineDelusions
fontarial
sequence_togglefalse
envelope_json
blend_intensity1.00
invertfalse

FL_Ascii does exactly what the name says - samples an image at regular intervals and replaces each sample point with a character, giving you a genuine ASCII-art rendering rather than a filter that just fakes the aesthetic. It's a pure VFX node: no model, no API, just PIL doing pixel sampling and text rendering.

How it works

The node walks the image on a grid defined by spacing, and at each sample point either picks a character based on that point's brightness (the default behavior), or cycles through your character string sequentially regardless of brightness if sequence_toggle is on. Those are two genuinely different looks: brightness-mapped gives you the classic tone-graded ASCII art (dark pixels get dense characters, light pixels get sparse ones, assuming your character string is ordered that way); sequential gives you a more textured, typewriter-like pattern where the position of each character in your string matters more than the image's actual tone.

The inputs and outputs that matter

Required: image, spacing (default 20 - how far apart sample points are; larger spacing means fewer, bigger characters, so a chunkier result), font_size (default 20), characters (a STRING - this is your character palette or sequence, and the default is a mildly cheeky "MachineDelusions", the author's own studio name, which is a fine easter egg but you'll almost certainly want to replace it with something like " .:-=+*#%@" - a classic dark-to-light ASCII gradient - if you want a traditional look rather than word-shaped noise), font (arial / Barcode / Circles / Fancy / Pattern), sequence_toggle (default false, described above).

Optional: envelope_json - this is the node's audio-reactive hook, meant to take an envelope from FL_Audio_Reactive_Envelope elsewhere in this pack; blend_intensity (0–2, default 1) controls how strongly that envelope modulates the effect if you're feeding one in; invert; mask - restricts the effect to a region (its schema type is IMAGE rather than MASK, so pass a mask-shaped image here rather than a native MASK type).

Output: a single IMAGE.

How to install it

ComfyUI Manager: search ComfyUI_Fill-Nodes, install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-Nodes

then restart. No model downloads, no heavy dependencies - just PIL for font rendering.

Common issues & troubleshooting

Non-arial fonts fail to load. Barcode, Circles, Fancy, and Pattern read as custom font files bundled with the pack rather than system fonts - if your install is partial (a bad clone, an interrupted update) they can go missing. arial falls back to a font PIL can always resolve, so it's the safe choice if you're troubleshooting a font error; reinstall or git pull the pack if you specifically need one of the named fonts back.

Result reads as gibberish text instead of ASCII art. You've left the default "MachineDelusions" characters string in place - that literal string becomes your character palette. Swap it for a proper tonal gradient if you want the classic ASCII-art look.

Audio-reactive effect does nothing. envelope_json and blend_intensity only matter if you've actually wired in an envelope from FL_Audio_Reactive_Envelope (or a compatible JSON source) upstream - leave envelope_json blank and the node behaves as a plain static ASCII filter, which is the expected fallback if you don't have that pipeline built.

Category🏵️Fill Nodes/VFX

Inputs (10)

NameTypeDefaultDescription
imageIMAGE
spacingINT20
font_sizeINT20
charactersSTRINGMachineDelusions
fontCOMBOarial5 options: arial, Barcode, Circles, Fancy, Pattern
sequence_toggleBOOLEANfalse
envelope_jsonoptSTRING
blend_intensityoptFLOAT1.000–2
invertoptBOOLEANfalse
maskoptIMAGE

Outputs (1)

NameTypeDescription
IMAGEIMAGE