Nodes/ComfyUI-color-ascii-art-node/ASCII Art Generator V3
ComfyUI Node

ASCII Art Generator V3

Turn any image into color ASCII art that actually looks like the picture

By Shiba-2-shiba·Created 2 years ago·Updated 6 months ago· 7
ASCII Art Generator V3
  • image
  • mask
  • IMAGE
pixel_size20
downscale_modearea
aspect_ratio_correction0.75
font_name
font_size_min8
font_size_max16
char_selection_modeluminance_hue
seed0
charset_sourceFile
ascii_chars_filenameset4.txt
dynamic_chars_to_test!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
dynamic_sigma1.5
sharpen_modeNone
sharpen_amount1.0
sharpen_threshold0.00
brightness1.00
contrast1.00
mask_blend_radius5.0
mask_edge_adjustmentNone
mask_edge_factor3.0
enable_color_matchfalse
color_match_methodmkl
log_levelINFO

This is the flagship node of the comfyui-color-ascii-art-node pack, and it's exactly what the name says: feed it an image, get back an image drawn out of colored characters instead of pixels. Not a text overlay slapped on top - the picture is actually redrawn as glyphs, cell by cell, at the same resolution as your input. It's the "I can read my cat's face in punctuation marks" novelty that somehow still works as a legit stylizer for posters, thumbnails, and album art.

Honestly? This is a niche, fun-node corner of the ecosystem - there's no serious community discourse about ASCII art in ComfyUI, and that's fine. You reach for this when you want something that looks handmade and weird, and you want it in batch. V3 processes whole batches with a per-image seed, so you can pipe an entire folder of outputs through it for a consistent set of text-poster avatars.

How it works

The pipeline is three steps, and understanding them saves you a lot of knob-turning:

  1. Pixelate. The input is downscaled into a grid of pixel_size blocks. Because characters are taller than they are wide, aspect_ratio_correction (default 0.75) shrinks the effective cell height so the grid doesn't come out wrong-shaped.
  2. Pick a character per cell. Each grid cell is mapped to one glyph from a charset file based on char_selection_mode. The default luminance_hue blends brightness and hue; you can also pick pure brightness, hue, or saturation.
  3. Draw it back. Glyphs are rendered on a canvas at the input's original resolution, with the font size varied between font_size_min (8) and font_size_max (16) by luminance - that per-cell size variation is how it fakes shading. seed randomizes which charset line gets used.

The inputs that actually matter

Most of the nineteen inputs are fine at defaults. The ones you'll touch:

  • pixel_size (default 20) - the resolution of the character grid. Smaller = closer to the original image, but each glyph becomes tiny.
  • aspect_ratio_correction - bump this up if characters start visibly overlapping or the art looks stretched.
  • font_name - a dropdown of the nine fonts bundled in the pack's font/ folder (default Chewy-Regular.ttf).
  • char_selection_mode and seed - the character-mapping strategy and its randomization.
  • mask (optional) - feed a MASK in and the ASCII effect is blended into only the masked region, using mask_blend_radius, mask_edge_adjustment, and mask_edge_factor. Handy for putting ASCII text-art in one corner of an otherwise normal image.
  • enable_color_match - re-transfers the original image's colors onto the pixelated art via the color-matcher library. Pick mkl, hm, reinhard, or hm-mkl-hm; the README is explicit that idt doesn't work.

Output is a single IMAGE at the same resolution as the input - wire it straight into a Save Image node.

Installing it

From ComfyUI Manager, search "ComfyUI-color-ascii-art-node" and hit install. Or do it by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/Shiba-2-shiba/comfyui-color-ascii-art-node.git
cd comfyui-color-ascii-art-node
pip install -r requirements.txt

Restart ComfyUI after. The dependency list is tiny - Pillow, colorama, and color-matcher - and there are no model downloads and no API keys. Nothing heavy here.

Where people get burned

The README's own warning is the one that'll bite you: if the font you pick doesn't contain the characters in the charset file, the output comes out blank. The bundled charset files include set4.txt, the default, which is Japanese phrases - pair that with a Latin-only display font like Chewy-Regular.ttf and you'll stare at an empty canvas wondering what broke. Match the font to the charset: use NotoSansJP-VariableFont_wght.ttf (also bundled) for the Japanese sets, or a set like set2.txt's block/symbol characters with the decorative fonts. If you get a blank result, this is the first thing to check.

One more: this pack uses ComfyUI's newer comfy_api V3 extension entrypoint, so it needs a reasonably recent ComfyUI. If the nodes simply don't appear after install, update ComfyUI first - this is the classic "pack written against the new extension API won't load on an old core" failure from the ecosystem's dependency-hell playbook.

CategoryImage Processing/ASCII Art

Inputs (25)

NameTypeDefaultDescription
imageIMAGE
pixel_sizeINT201–200
downscale_modeCOMBOarea6 options: nearest, bilinear, bicubic, area, lanczos, contrast
aspect_ratio_correctionFLOAT0.750.1–10
font_nameCOMBO9 options: Chewy-Regular.ttf, Creepster-Regular.ttf, Customfont.ttf, KR Rachel's Chalkboard.ttf, Lobster Bisque.ttf, NotoSansJP-VariableFont_wght.ttf, +3
font_size_minINT81–100
font_size_maxINT161–200
char_selection_modeCOMBOluminance_hue4 options: brightness, hue, saturation, luminance_hue
seedINT00–18446744073709550000
charset_sourceoptCOMBOFile2 options: File, Dynamic
ascii_chars_filenameoptSTRINGset4.txt
dynamic_chars_to_testoptSTRING!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
dynamic_sigmaoptFLOAT1.50.1–10
sharpen_modeoptCOMBONone2 options: None, unsharp
sharpen_amountoptFLOAT1.00–5
sharpen_thresholdoptFLOAT0.000–1
brightnessoptFLOAT1.000–5
contrastoptFLOAT1.000–5
maskoptMASK
mask_blend_radiusoptFLOAT5.00–100
mask_edge_adjustmentoptCOMBONone3 options: None, SmallerChars, LowerDensity
mask_edge_factoroptFLOAT3.00–20
enable_color_matchoptBOOLEANfalse
color_match_methodoptCOMBOmkl5 options: mkl, hm, reinhard, idt, hm-mkl-hm
log_leveloptCOMBOINFO5 options: DEBUG, INFO, WARNING, ERROR, NONE

Outputs (1)

NameTypeDescription
IMAGEIMAGE